基于ChatGLM-6B的NoneBot2插件
Project description
介绍
使用ChatGLM-6B为后端,NoneBot2为平台的极其简单的本地中文(汉语) AI chat 插件。
环境要求
量化等级 | 最低显存 |
---|---|
FP16 | 13GB |
INT8 | 10GB |
INT4 | 6GB |
使用 INT4 量化后的模型。需要 4.2 GB 左右的存储空间(模型),NVIDIA 显卡(使用 CUDA)、6G 及以上的显存。现在默认使用 CPU 推理,方便开箱即用,但速度较慢。
实际可以低于 Python 3.9(但 none-adapter-onebot 要求 Python 3.8+)。
安装与更新
软件环境
CUDA
- Windows:见CUDA 官方文档|英文
- Linux:见CUDA 官方文档|英文
PyTorch
插件
(一)使用 nb-cli 安装与更新
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-chatglm --upgrade
(二)使用包管理器安装与更新
1、在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令:pip
pip install nonebot-plugin-chatglm
pdm
pdm add nonebot-plugin-chatglm
poetry
poetry add nonebot-plugin-chatglm
conda
conda install nonebot-plugin-chatglm
2、打开 nonebot2 项目根目录下的 pyproject.toml
文件, 在 [tool.nonebot]
部分追加写入
plugins = ["nonebot_plugin_chatglm"]
配置
ChatGLM 模型
模型简介:ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。
默认使用HuggingFace Hub
加载,即如果没有设置路径,则会自动下载到用户目录下的.cache/huggingface/modules/transformers_modules/THUDM/chatglm-6b-int4
。
- 如果是较小显存(< 10 G)且只用聊天对话模型(ChatGLM-6B-INT4)[^1]则没用必要修改。
- 如果使用 6B 完整模型,则可以自行设置路径。
模型的具体使用,还请关注原仓库说明提交检测 →
[^1]: 在其他位置配置量化后的 INT4 模型,发生一些编译错误,暂时懒得没有能力解决。
手动下载:
→清华云盘(仅模型文件,是 6B 完整模型,显存较小需要量化使用,暂未设置,需要自行在chat.py
文件中修改)
→🤗 Hugging Face(完整文件),约 4.2 GB。
ChatRWKV 模型
模型简介:ChatRWKV is like ChatGPT but powered by my RWKV (100% RNN) language model, which is the only RNN (as of now) that can match transformers in quality and scaling, while being faster and saves VRAM.
ChatRWKV 是一个由@PENG Bo的RWKV (100% RNN)语言模型驱动的类 ChatGPT, RNN 和 Transformer 的所有优点:高性能,快速运行,快速训练,节省显存。
模型的具体使用,还请关注原仓库说明提交检测 →
手动下载:
→🤗 Hugging Face,请根据自己的配置和需要,选择模型下载使用。
个人建议,目前仅中文小说文本生成模型比较好用,8G 显存,推荐 3B 模型。
安装运行所需依赖
如果使用 pip 安装,实际已经自动安装了以下依赖,在此说明是为了方便检查
1、模型所需的依赖
ChatGLM,默认
pip install protobuf==3.20.0 transformers==4.26.1 icetk cpm_kernels
ChatRWKV,附加
pip install rwkv prompt_toolkit
2、NoneBot
运行所需依赖
安装这个插件,那必然是已经有了NoneBot
项目,或者移步去NoneBot2查看。由于还不会根据项目自动切换适配器,因此需要安装nonebot-adapter-onebot
,以便调用Onebotv11
进行通信。
配置
在 nonebot2 项目的.env
文件中添加下表中的必填配置
配置项 | 必填 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
chat_mode | 否 | str | cpu | 运行模式,cuda 或 cpu |
chatglm_model | 否 | str | "$User$/.cache/huggingface/modules/transformers_modules/THUDM/chatglm-6b-int4/" | chatglm 模型及其配置文档路径 |
chatglm_his | 否 | str | "./data/history/" | 历史记录保存路径 |
chatglm_cmd | 否 | str/list[str] | "hi" | 对话命令 |
chat_cd | 否 | int | 30 | 冷却时间,避免高频调用 |
使用
指令表
指令 | 权限 | 需要@ | 范围 | 说明 |
---|---|---|---|---|
hi | 所有人 | 否 | 私聊/群聊 | 与 chatglm 对话 |
清空记录 | 所有人 | 否 | 私聊/群聊 | 清空自己的对话历史记录 |
导出记录 | 所有人 | 否 | 群聊 | 导出记录文件到群中 |
ToDo
- 保存对话记录以实现多轮对话
- 冷却时间
- 限制记忆轮数(
在抄了,在抄了)
- 配置角色功能,基本实现,正在物色适合适合 ChatGLM 的角色配置
- 图片输出功能(
在抄了,在抄了) - 其他中文文本生成模型
- 尝试使用
ChatRWKV
- 尝试使用
- 管理员在线配置
- @[Bot] 机器人 使用功能(调试阶段,我个人不太需要,不过后续加上吧)
如有其他功能需求,欢迎提 issues,当然如果您实现了某些功能或修复了问题,也非常欢迎您提 PR。
更新说明
- 2023-03-22,更新说明文件,更新插件到 0.1.4,加入
ChatRWKV
生成中文小说文本,在配置使用chatglm_mode="rwkv"
,并需修改模型路径(默认使用 cuda fp16 策略,如需修改,请自行更改minirwkv.py
文件) - 2023-03-21,更新说明文件,更新插件到 0.1.3,默认使用
ChatGLM-6B-INT4
模型、CPU 推理,便于开箱即用;修复忘记设置包名导致的无法使用问题。
致谢
- @A-kirami,项目使用了 README模板,有修改
- ChatGLM-6B,模型和使用方法来源,一切的核心
- nonebot2,一切的基础
- ChatRWKV,目前提供的中文小说续写功能来源于此
- nonebot-plugin-novelai,学习的对象,cd 使用来自于此
- nonebot-plugin-ChatGLM6B,与本项目相似,但本项目从中学习转图片、对话记忆。
Project details
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-chatglm-0.1.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c091aa09b7ecd1b5cdd77f53ad6dbb10fd62198592a23699b4eaa08b2f8a1bb2 |
|
MD5 | f19e734c68e61f6ec87574fe35c15a38 |
|
BLAKE2b-256 | 6ceb435fd5da023bea0447dd13991387665b3523e67ef9d1a725691428fa0a34 |
Hashes for nonebot_plugin_chatglm-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b15f70c912dbd945377bc592b7d8918feb6e9959f16cbefbcc36fde0eec96c7 |
|
MD5 | 26acb1ac84b86075893f5219c1d62bb4 |
|
BLAKE2b-256 | b36b3bd203bfa0c195c4f144839d57cd7c919fe349f803ad3e90bd3a0d52bc7b |