ChatGLM3-6B 是一个语言大模型,最近在评估这个模型,但发现它的文档有限,只能从demo代码中猜测调用的参数的含义,准确度是有限的;于是,通过查看源代码来研究,目前整理笔记如下:
ChatGLM3-6B 的调用接口有两个,一个是chat接口,一个是stream_chat接口
接口函数的实现位于代码 chatglm3-6b/blob/main/modeling_chatglm.py
中
一、chat接口
chat接口的原型如下:
def chat(self, tokenizer, query: str, history: List[Dict] = None, role: str = "user",
max_length: int = 8192, num_beams=1, do_sample=True, top_p=0.8, temperature=0.8, logits_processor=None,
**kwargs):
参数说明如下:
参数名
|
参数含义
|
默认值
|
tokenizer
|
用于处理输入和输出文本的tokenizer对象。由前面的 AutoTokenizer.from_pretrained 调用返回的对象
|
|
query
|
str 类型,用户输入的任何文本
|
|
history
|
List[Dict],可选参数;对话历史,每一项都是一个字典,包含角色('role')和内容('content')。
|
None
|
role
|
str, 可选参数;输入文本的角色,可以是'user'或者'assistant'。
|
user
|
max_length
|
int, 可选;生成文本的最大长度。
|
8192
|
num_beams
|
int, 可选;Beam搜索的宽度,如果值大于1,则使用Beam搜索
|
1
|
do_sample
|
bool, 可选;是否从预测分布中进行采样,如果为True,则使用采样策略生成回复。
|
True
|
top_p
|
float, 可选;用于控制生成回复的多样性
|
0.8
|
temperature
|
float, 可选;控制生成文本的随机性的参数
|
0.8
|
logits_processor
|
LogitsProcessorList, 可选;用于处理和修改生成步骤中的logits的对象
|
None
|
**kwargs
|
其他传递给模型生成函数的参数
|
|
返回值:
response (str)
: 模型的响应文本。
history (List[Dict])
: 更新后的对话历史。
二、stream_chat 接口
流式聊天函数,接受一段文本查询,返回模型的响应。这个函数返回的是一个生成器,可以在流式处理中使用。
该接口函数的原型定义如下:
def stream_chat(self, tokenizer, query: str, history: List[Dict] = None, role: str = "user",
past_key_values=None,max_length: int = 8192, do_sample=True, top_p=0.8, temperature=0.8,
logits_processor=None, return_past_key_values=False, **kwargs):
参数说明如下:
参数名
|
参数含义
|
默认值
|
tokenizer
|
用于处理输入和输出文本的tokenizer对象。由前面的 AutoTokenizer.from_pretrained 调用返回的对象
|
|
query
|
str,必须参数;用户输入的任何聊天文本。
|
|
history
|
List[Dict], 可选;对话历史,每一项都是一个字典,包含角色('role')和内容('content')。
|
None
|
role
|
str, 可选: 输入文本的角色,可以是'user'或者'assistant'。
|
user
|
past_key_values
|
List[Tensor], 可选;用于transformer模型的过去的键值对
|
None
|
max_length
|
int, 可选: 生成文本的最大长度.
|
8192
|
do_sample
|
bool, 可选;是否从预测分布中进行采样
|
True
|
top_p
|
float, 可选: 用于控制生成回复的多样性。
|
0.8
|
temperature
|
float, 可选;控制生成文本的随机性的参数
|
0.8
|
logits_processor
|
LogitsProcessorList, 可选;用于处理和修改生成步骤中的logits的对象。
|
None
|
return_past_key_values
|
bool, 可选): 是否返回过去的键值对,用于下一步的生成。
|
False
|
**kwargs
|
其他传递给模型生成函数的参数。
|
|
返回值:
response (str)
: 模型的响应文本。
history (List[Dict]):
更新后的对话历史。
past_key_values (List[Tensor], 可选):
如果return_past_key_values为True,返回用于下一步生成的过去的键值对。