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.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:不太好弄
- 为配置项加入取值范围检查避免错误
- 将模型微调参数改为随时可调 (通过命令或消息后附带参数)
- 加入预设机器人人格
- 加入更多管理员指令
🌸 致谢
- @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
File details
Details for the file nonebot-plugin-chatglm6b-0.1.5.tar.gz
.
File metadata
- Download URL: nonebot-plugin-chatglm6b-0.1.5.tar.gz
- Upload date:
- Size: 24.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38ce1e38c38348fd0c805b2e26feebd90ecfe53aa2dec5874a479f7c094d1dec |
|
MD5 | d9662b504904628d139c67662016c1ad |
|
BLAKE2b-256 | a022939116ab0cae3b61b7723f38d8d80eb52d2783577f5a40d8cf532331edb3 |
File details
Details for the file nonebot_plugin_chatglm6b-0.1.5-py3-none-any.whl
.
File metadata
- Download URL: nonebot_plugin_chatglm6b-0.1.5-py3-none-any.whl
- Upload date:
- Size: 23.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f57195da03f892af5cd065dfa398f9f480814075b60f6d75176d852e73c95158 |
|
MD5 | 83f587d4e738370ad1bf791263826a5c |
|
BLAKE2b-256 | 595a1b9ebe97df3a7859a73bd32490bafea0e5b32ae0f9cda28407830cfcb705 |