3.31更新: 现以提供onebot服务, 您可以使用当前方式来运行,感谢@MoeSnowyFox的贡献!
沐雪,一只会主动找你聊天的AI女孩子,其对话模型基于ChatGLM2-6B与Qwen微调而成,训练集长度1.8K+ *,具有二次元女孩子的说话风格,比较傲娇,但乐于和你分享生活的琐碎,每天会给你不一样的问候。
*:(训练集长度较低,但我们仍在收集对话数据)
✔ 提供本人由1.5k+对话数据微调的ChatGLM2-6B P-Tuning V2模型与Qwen-7B Qlora微调模型(回答原创率:98%+)
✔ 主动发起聊天
✔ 提供5条可用的命令
建议环境:
- Python 3.10
- 一张拥有8GB+ 显存的显卡(int4量化最低要求: 4G ; CPU推理内存要求:16G+)
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 | 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地址)
现以提供onebot服务支持, 无需担心gocq的风控(喜)
本项目使用onebotV11协议, 若您希望于QQ使用, 推荐参考LLOneBot使用onebot服务
注:请在安装好LLOneBot后, 于设置中开启反向WebSocket服务, 填写ws://127.0.0.1:21050/ws/api
, 以正常运行
您也可以使用Lagrange.Core以及OpenShamrock来链接QQ, 或其他适配器链接其他软件,详见onebotV11适配器
在完成这些操作后,你应该得到类似如下所示的文件结构:
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
└─...
本项目使用configs.json
作为配置文件,目前支持配置的项如下:
{
"Trust_QQ_list": [],
"AutoCreateTopic": false,
"read_memory_from_file": true,
"known_topic_probability": "0.003",
"time_topic_probability": "0.75",
"port":21050,
"bot_qq_id":123456789
}
Trust_QQ_list
: 信任QQ号列表,只有在列表的QQ号,沐雪才会回复
AutoCreateTopic
: 是否自动发起新对话,默认以Trust_QQ_list的第0项作为发起新对话对象
read_memory_from_file
: 从文件中读取记忆,用于项目重启后加载原来的记忆
known_topic_probability
: 概率:随机发起一个已知的话题
time_topic_probability
: 概率:早、中、傍、晚触发日常问候
post
: 反向WebSocket服务端口
bot_qq_id
: 机器人QQ号
在本项目根目录下运行 main.py
conda activate Muice
python main.py
命令 | 释义 |
---|---|
/clean | 清空本轮对话历史 |
/refresh | 刷新本次对话 |
/help | 显示所有可用的命令列表 |
/reset | 重置所有对话数据(将存档对话数据) |
/undo | 撤销上一次对话 |
参见公开的训练集Moemu/Muice-Dataset
与其他聊天机器人项目不同,本项目提供由本人通过自家对话数据集微调后的模型,在Release中提供下载,关于微调后的模型人设,目前公开的信息如下:
训练集开源地址: Moemu/Muice-Dataset
原始模型:THUDM/ChatGLM2-6B & QwenLM/Qwen)
本项目源码使用MIT license,对于微调后的模型文件,不建议作为商业用途
代码编写:Moemu
训练集编写:Moemu
OneBot服务支持: MoeSnowyFox
代码贡献:
Star History: