沐雪,一只会主动找你聊天的 AI 女孩子,其对话模型基于 ChatGLM2-6B 与 Qwen 微调而成,训练集体量 3k+ ,具有二次元女孩子的说话风格,比较傲娇,但乐于和你分享生活的琐碎,每天会给你不一样的问候。
✅ 支持近乎全自动安装环境
✅ 提供本人由 3k+ 对话数据微调的 ChatGLM2-6B P-Tuning V2 模型与 Qwen Qlora 微调模型
✅ 主动发起聊天(随机和每天早中晚固定时间)
✅ 提供 5 条命令以便在聊天中进行刷新回复等操作
✅ OFA 图像识别:识别表情包、理解表情包、发送表情包
✅ 支持通过 fishaudio/fish-speech 进行语言合成(沐雪 TTS 模型尚未发布)
✅ 在群聊中聊天(支持被 @ 回复或不被 @ 随机回复)
✅ 在控制台中实时对话(暂不支持打 QQ 语音)
⬜ 对记忆模块进行优化,实现长期记忆与短期记忆
⬜ 完善日志记录机制,实现自动生成 bug 报告
⬜ 建立常见 Q&A 指南
建议环境:
- Python 3.10+
- 一张拥有 6GB 及以上显存的显卡(int4 量化最低要求为 4G 显存,CPU 推理需要 16G 及以上内存)
目前已做到自动安装所有软件、依赖,通过 Code -> Download ZIP
下载解压最新源码。
双击 install_env.bat
安装(不能启用旧版控制台),或在命令行中运行以下命令:
.\install_env.bat
自动安装可能需要较长时间,请耐心等待,安装完成后,你仍需手动下载模型。
自动安装脚本使用的是 Python 虚拟环境,不需要 Conda,请留意安装脚本的提示。
git clone https://github.com/Moemu/Muice-Chatbot
cd Muice-Chatbot
conda create --name Muice python=3.10.10
conda activate Muice
pip install -r requirements.txt
目前支持的基底模型如下表:
基底模型 | 对应微调模型版本号 | 额外依赖库 |
---|---|---|
ChatGLM2-6B-Int4 | 2.2-2.4 | cpm_kernels |
ChatGLM2-6B | 2.0-2.3 | |
Qwen-7B-Chat-Int4 | 2.3、2.6.2 | llmtuner |
Qwen2-1.5B-Instruct-GPTQ-Int4 | 2.5.3 | llmtuner |
RWKV(Seikaijyu微调) | 参见 HF | (需要下载配置 RWKV-Runner) |
微调模型下载:Releases
请将基底模型与微调模型放入 model
文件夹中(确保微调模型目录下存在 .model
文件而不是文件夹,部分微调模型由于疏忽还套了一层 checkpoint
文件夹)
本仓库目前支持如下模型加载方式:
- 通过 API 加载
- 通过
transformers
的AutoTokenizer
,AutoModel
函数加载 - 通过
llmtuner.chat
(LLaMA-Factory
)的ChatModel
类加载 - 通过
RWKV-Runner
提供的 API 服务加载
在已测试的模型中,我们建议以下模型通过对应的方式加载,其他模型亦可以通过类似的方式加载:
基底模型 | 微调方式 | 加载方法 |
---|---|---|
ChatGLM | P-tuning V2 | transformers |
Qwen | sft | llmtuner |
RWKV(Seikaijyu 微调) | pissa | rwkv-api |
在配置文件中可调整模型的加载方式:
"model_loader": "api/transformers/llmtuner/rwkv-api",
"model_name_or_path": "<基底模型位置>",
"adapter_name_or_path": "<沐雪微调模型位置>"
(若是 API / rwkv-api 加载,model_name_or_path
填写对应的 API 地址)
如果你没有合适的显卡,需要通过 CPU 加载模型,请安装并配置 GCC
环境,然后勾选 openmp
.
现以提供 OneBot 服务支持, 无需担心 gocq 的风控(喜)
本项目使用 OneBot V11 协议, 若您希望于 QQ 使用, 推荐参考 LLOneBot 使用 OneBot 服务
注:请在安装好 LLOneBot 后, 于设置中开启反向 WebSocket 服务, 填写 ws://127.0.0.1:21050/ws/api
, 以正常运行
您也可以使用 Lagrange.Core 以及 OpenShamrock 等来链接QQ, 或其他适配器链接其他软件,详见 OneBot V11 适配器
能使用请勿随意更新 QQNT, 若无法使用请尝试降级 QQNT
在完成这些操作后,你应该得到类似如下所示的文件结构:
Muice-Chatbot <- 主路径
├─llm
├─model
│ ├─ chatglm2-6b <- 原始模型 (三者三选一)
│ ├─ chatglm2-6b-int4 <- int4原始模型
│ ├─ Qwen-7B-Chat-Int4 <- Qwen-7B-int4原始模型
│ └─ Muice
├─configs.json <- 配置文件
├─ws.py <- ws服务
├─main.py <- 主函数
├─requirements.txt
└─...
配置文件位于 config.json
,请根据你的需求进行修改(具体参考配置说明)。
你也可以使用configuration_gui.py
图形化界面配置文件。
python configuration_gui.py
在本项目根目录下运行 main.py
conda activate Muice
python main.py
或是运行自动安装脚本生成的启动脚本start.bat
命令 | 释义 |
---|---|
/clean | 清空本轮对话历史 |
/refresh | 刷新本次对话 |
/help | 显示所有可用的命令列表 |
/reset | 重置所有对话数据(将存档对话数据) |
/undo | 撤销上一次对话 |
参见公开的训练集 Moemu/Muice-Dataset
与其他聊天机器人项目不同,本项目提供由本人通过自家对话数据集微调后的模型,在 Release 中提供下载,关于微调后的模型人设,目前公开的信息如下:
训练集开源地址: Moemu/Muice-Dataset
原始模型:THUDM/ChatGLM2-6B & QwenLM/Qwen)
本项目源码使用 MIT License,对于微调后的模型文件,不建议将其作为商业用途
代码实现:Moemu、MoeSnowyFox、NaivG
训练集编写与模型微调:Moemu (RWKV 微调:Seikaijyu)
友情连接:Coral 框架
总代码贡献:
Star History: