ChatGLM3-6B 的调用参数说明,chat 与stream_chat 接口函数的参数说明

2023-12-20

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,返回用于下一步生成的过去的键值对。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChatGLM3-6B 的调用参数说明,chat 与stream_chat 接口函数的参数说明 的相关文章

  • Django:导入错误:无法导入名称接收者

    非常基本的 django 应用程序 当我尝试执行任何操作 runserver syncdb 时 它会为我提供以下内容 想法 如果我的其中一个文件有问题 您能帮我指导一下问题可能是什么吗 File Library Python 2 7 sit
  • 使用 pip 或 conda 来管理包? [复制]

    这个问题在这里已经有答案了 我已经使用 matlab 进行机器学习很长一段时间了 最 近切换到 python 并使用其包管理器 pip 安装某些包并成功安装了许多包 几天前 我开始使用 conda 我以前安装的所有软件包都被覆盖 我真的很想
  • 用户警告:MovieWriter ffmpeg 不可用

    尝试在 google colab 上制作动画 收到此警告 用户警告 MovieWriter ffmpeg 不可用 warnings warn MovieWriter s 不可用 writer did pip 安装 ffmpeg 标准化但没有
  • 如何在 Python 中使这个随机文本生成器更加高效?

    我正在研究一个随机文本生成器 不使用马尔可夫链 目前它的工作没有太多问题 首先 这是我的代码流程 输入一个句子作为输入 这称为触发字符串 被分配给一个变量 获取触发字符串中最长的单词 在所有古腾堡计划数据库中搜索包含该单词的句子 无论大写还
  • 使用 pycharm 进行交互式 shell 调试

    我是 PyCharm 新手 我已经使用 IDLE 很长时间了 在IDLE中执行脚本后使用Python对象非常方便 有没有办法在使用 PyCharm 与交互式 python shell 执行后使用脚本对象 例如 我们有一个 测试 项目 其中包
  • 有没有纯Python的表类?

    我正在构建一个需要分析表格数据的应用程序 我想执行一些列操作 例如重命名列 删除列以及根据现有列的值计算新列的能力 我的第一选择是 Pandas 之类的东西 但是一个限制是这个项目必须是跨平台的并且非常容易在 virtualenv 中部署
  • 表单输入框不显示

    我正在尝试使用 Django 显示一个简单的表单输入文本框 我正在亚马逊 AWS 上部署 该网站在不同的服务器 pythonanywhere 上运行良好 但在 AWS 上存在主要问题 具体来说 输入框没有被显示 我使用的模板如下 首页 ht
  • LSTM - 一段时间后预测相同的常数值

    我有一个变量 我想预测未来 30 年的情况 不幸的是我没有很多样品 df pd DataFrame FISCAL YEAR 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 199
  • 调整pandas read_sql_query NULL值处理?

    当我做 from sqlalchemy import create engine import pandas as pd engine create engine sqlite conn engine connect conn execut
  • 解码来自 S60 设备的 WBXML SyncML 消息

    我正在尝试解码来自诺基亚 N95 的 WBXML 编码的 SyncML 消息 我的第一次尝试是使用 python pywbxml 模块 它包装了对 libwbxml 的调用 用此方法解码消息会得到许多 标签以及 标签内的一大块二进制文件 我
  • 使用Python处理Sqlite数据库中的换行符“\n”?

    我有一个名为 test db 的 Sqlite 数据库 其中包含两个表 其结构如下 表 1 ID 整数主键自动增量 名称 varchar 500 颜色 varchar 500 表2 ID INTEGER PRIMARY KEY AUTOIN
  • if(interactive()) 是否相当于 Python 中的“if __name__ == ”__main__“: main()”?

    我希望 R 脚本有一个 main 函数 可以在交互模式下执行 但在获取文件时不应执行 main 函数 已经有一个关于这个的问题了 https stackoverflow com questions 2968220 is there an r
  • 如何在pandas中分组后从每组中选择前n行? [复制]

    这个问题在这里已经有答案了 我有一个具有以下形状的 pandas 数据框 open year open month type col1 col2 我想找到每个 年 月 中的顶级类型 所以我首先找到每个 年 月 中每种类型的计数 freq d
  • 将 tf.contrib.layers.xavier_initializer() 更改为 2.0.0

    我该如何改变 tf contrib layers xavier initializer tf 版本 gt 2 0 0 所有代码 W1 tf get variable W1 shape self input size h size initi
  • 使用 matplotlib 在 python3 中对多个形状进行动画处理

    尝试在 python3 中使用 matplotlib 动画函数同时对多个对象进行动画处理 下面写的代码是我到目前为止的位置 我能够创建多个对象并将它们显示在图中 我通过使用包含矩形补丁函数的 for 循环来完成此操作 从这里开始 我希望通过
  • 适用于 Python 的 GitLab CI 共享 Windows 运行器

    我在 GitLab 中有一个 python 项目仓库 我看到 GitLab 共享了可用的测试版 Windows 运行程序 请参阅this https about gitlab com blog 2020 01 21 windows shar
  • Python UPnP/IGD 客户端实现?

    我正在寻找一个开源实现UPnP http elinux org UPnPPython 中的客户端 更具体地说是它的互联网网关设备 http en wikipedia org wiki Internet Gateway Device Prot
  • python webdriver_manager chrome 自定义配置文件

    如何使 webdriver manager chrome 使用自定义 chrome 用户配置文件 我知道对于 selenium webdriver 我可以这样指定 options Options options add argument f
  • 加入语音频道(discord.py)

    当我尝试让我的机器人加入我的语音频道时 出现以下错误 await client join voice channel voice channel 产生错误的行 Traceback most recent call last File usr
  • pandas - 组合行的字符串

    我有一个像这样的数据框 id text 1 DM HTN Enlarged prostate 2 hypertensive and on regular treatment 2 LBP 3 DM HTN Enlarged prostate

随机推荐