NoneBot2 plugin for ChatGLM-6B-API
Project description
如果你本地部署了 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.1 --> v0.1.2 一次普通更新,主要内容有:
-
新增了 对官方 API 的支持,现在需要在配置项添加‘CHATGLM_API’来选择你使用的 API;
-
优化了 保存历史对话时生成的文件可阅读了;
-
修复了 配置项 CHATGLM_POKE 失效的问题;
v0.1.0 --> v0.1.1 一次小的更新,主要内容有:
-
修复了 清除对话记录无反应的问题;
-
修复了 配置项 CHATGLM_WIDE 失效的问题;
-
修复了 部分配置项未配置时默认值出错的问题;
-
新增了 对服务器返回消息但内容为空的异常处理;
可能是由于输入内容长度(含历史记录)超出模型设置
-
针对上一条情况新增了配置项以微调模型参数;
需要同步更新 ChatGLM-6B-API 以支持模型微调
(上述更新还包含增加显存释放以及修复模型重复载入的 bug,强烈建议更新)
💿 安装
使用 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/`目录中 (记得检查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:不太好弄
- 为配置项加入取值范围检查避免错误
- 将模型微调参数改为随时可调*(通过命令或消息后附带参数)*
- 加入预设机器人人格
- 加入更多管理员指令
🌸 致谢
- @A-kirami,本项目使用了 README模板,有修改
- nonebot2,一切的基础
- ChatGLM-6B,可以跑在消费级显卡上的大语言模型
- ChatGLM-6B-API,本项目的灵感来源,提供了与 GLM6B 交流的 API
- nonebot-plugin-novelai,学习的对象,配置项导入的部分来源于此
- nonebot-plugin-ChatGLM,与本项目相似,但是本地部署的版本,从中学习优化代码结构(或新功能?)
开抄!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for nonebot-plugin-chatglm6b-0.1.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26bc81d5a679036d18c8f0fe2f31fe65f0f3bc43ade991b58f3a97ea528c7b5a |
|
MD5 | 40637d23039e84d5b12f4c5a8aa0bd4a |
|
BLAKE2b-256 | 38d826c839ae7535e5c56208c9ca15c083f8bbc34220d6d8db05fe69548831fb |
Hashes for nonebot_plugin_chatglm6b-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb0239dcf3c38e26685c8f8f2db6cf9d62506c257db9784e2230cb66ecba5bde |
|
MD5 | be77b8927c72899cc70f2ece7303c61e |
|
BLAKE2b-256 | 3511b4a95dcc0077da8a9fb8685b7ce6cc44ae36ca9390ec7f9ee86408671ff6 |