nonebot-plugin-chatglm6b

NoneBot2 plugin for ChatGLM-6B-API


License
GPL-3.0
Install
pip install nonebot-plugin-chatglm6b==0.1.5

Documentation

NoneBotPluginLogo

NoneBotPluginText

nonebot-plugin-ChatGLM6B

ChatGPT 连不上?不如看看本地部署的 GLM 吧

license pypi python

如果你本地部署了 ChatGLM-6B,那么你可以使用一些大佬用 FastAPI 实现的 ChatGLM 加上我这个烂怂插件来将它接入你的 Bot,享受本地生成的速度。

📖 介绍

首先本人技术很有限,插件都是照着别人的格式拼凑的,能用就行

感谢 跨平台异步 Python 机器人框架 Nonebot

感谢 THUDM 开源的 Chat GLM-6B

感谢 imClumsyPand 使用 FastAPI 实现的 ChatGLM-6B-API

感谢 A-kirami 制作的 Nonebot 插件 README 模板

注意事项

本插件需要你有部署好的 ChatGLM-6B 并且成功运行 ChatGLM-6B-API 关于本地部署的细节请点击上方相关链接自行查询(或者我可以考虑 B 站出个教程 如果给我点 star 的话

最新消息

v0.1.4 --> v0.1.5

感谢 KirbyScarlet 的初次贡献 添加队列防止堵塞

  • 优化了 保存的历史记录文件的格式,加入换行使其更易读也更容易编辑;

v0.1.3 --> v0.1.4

官方仓库 API 更新,本插件同步更新:

  • 新增了 对官方新版 API 的适配,现在使用官方 API 也可以传入模型参数了;

💿 安装

使用 nb-cli 安装(推荐) 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-chatglm6b
使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot-plugin-chatglm6b
pdm
pdm add nonebot-plugin-chatglm6b
poetry
poetry add nonebot-plugin-chatglm6b
conda
conda install nonebot-plugin-chatglm6b
然后,不要忘了下一步是…… 打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入
plugins = ["nonebot_plugin_chatglm6b"]
手动安装 下载最新版本Release或main分支源码,将插件文件夹存放至Bot根目录的`./src/plugins/`目录中 (如果需要使用转图片功能则**必须**安装 *nonebot_plugin_hemlrender*) (记得检查Bot根目录的`pyproject.toml`中`[tool.nonebot]` 部分有`plugin_dirs = ["src/plugins"]`

⚙️ 配置

不要忘记在 nonebot2 项目的.env文件中添加下表中的必填配置

配置项 必填 类型 默认值 说明
CHATGLM_ADDR str 你的 ChatGLM API 的接口地址,例如http://127.0.0.1:11451
CHATGLM_API str 你使用的 API 是谁提供的,详情看表格下方的注释
CHATGLM_POKE bool True 收到请求后是否戳一戳发送者
CHATGLM_2PIC bool False 是否将收到的回答以图片形式发送
CHATGLM_WIDE int 400 转图片时的图片宽度 (单位:像素)
CHATGLM_MMRY int 10 对话时机器人所能记住的最大对话轮数,设为0则每次都为新对话
CHATGLM_PBLC bool False 在群聊中是否启用公共对话,即群员共用对话历史
CHATGLM_RPLY bool False 机器人返回内容时是否回复对应消息

ℹ️关于 CHATGLM_API(大小写敏感)

如果你使用的是 ChatGLM-6B 官方仓库里的 API.py,请在配置项填入 official

如果你使用的是 本项目致谢的 ChatGLM-6B-API,请在配置项填入 6b-api

🔧 模型微调相关配置

配置项 必填 类型 默认值 说明
CHATGLM_MODEL_LENG int 2048 模型的max_length参数,决定了模型接受输入的 token 上限
CHATGLM_MODEL_TEMP float 0.95 模型的temperature参数,决定了模型输出对话的随机程度
CHATGLM_MODEL_TOPP float 0.7 模型的top_P参数,决定了模型输出与输入内容的相关性

注意:所有配置项均还未设置取值范围检查,错误的设置可能带来严重的后果

🎉 使用

使用 @Bot + [Bot命令前缀(如果有)] + GLM|# + [想问的内容]来与 Bot 对话

指令表

指令 权限 需要@ 范围 说明
GLM | # 所有人 私聊/群聊 对话起始
clrlog | 清除上下文 所有人 私聊/群聊 清除对话记录

🖼️ 效果图

插件效果图

效果图懒得改了,这是以前的,意思就是有记忆了

代办

  • 加入记忆保存上下文
  • 区分每个用户的对话历史,并加入可选参数选择群聊对话为私有或公开
  • 加入对更多 API 的支持——官方 API:做好了
  • 加入对更多 API 的支持 webui:不太好弄
  • 为配置项加入取值范围检查避免错误
  • 将模型微调参数改为随时可调 (通过命令或消息后附带参数)
  • 加入预设机器人人格
  • 加入更多管理员指令

🌸 致谢