科学工具
科学工具让世界更美好
让世界更美好

WeClone 基于微信数据的LLM微调聊天机器人WeClone 基于微信数据的LLM微调聊天机器人

通过微信聊天数据对大语言模型进行微调,让模型学习特定对话风格,默认采用ChatGLM3-6B模型,结合LoRA方法进行SFT阶段训练,显存占用约16GB,可以切换至LLaMA Factory支持的其他模型,显存需求更低但需自行调整系统提示词等配置。

集成语音克隆模块,支持基于微信语音消息和0.5B大模型生成高保真语音,实现数字分身的声音复刻。

支持将微调后的模型绑定至微信、QQ、Telegram、企微、飞书等平台,打造个性化的AI对话机器人。

显存占用参考表

方法 精度 7B 14B 30B 70B xB
Full(bf16/fp16) 32 120GB 240GB 600GB 1200GB 18x GB
Full(pure_bf16) 16 60GB 120GB 300GB 600GB 8x GB
Freeze/LoRA等 16 16GB 32GB 64GB 160GB 2x GB
QLoRA 8 10GB 20GB 40GB 80GB x GB
QLoRA 4 6GB 12GB 24GB 48GB x/2 GB
QLoRA 2 4GB 8GB 16GB 24GB x/4 GB

• 微调效果高度依赖聊天数据质量,建议优先准备量大、格式规整的对话样本。

• 语音克隆模块需额外安装xcodec依赖,基础环境搭建可通过uv管理器完成。

操作指南

环境搭建(以Python 3.9为例)
git clone https://github.com/xming521/WeClone.git
cd WeClone
uv venv .venv --python=3.9  # 创建虚拟环境
source .venv/bin/activate    # 激活环境(Windows使用.venv\Scripts\activate)
uv pip install --group main -e 、 # 安装基础依赖(不含语音功能)
数据准备与处理

数据提取

使用PyWxDump工具解密微信数据库,导出CSV格式聊天记录(支持多联系人/群聊),将导出的csv文件夹存放至./data目录,示例数据可参考data/example_chat.csv

预处理配置

• 系统默认过滤手机号、身份证号等敏感信息,可通过blocked_words词库自定义过滤内容。

• 多句处理策略:

脚本文件 处理逻辑
csv_to_json.py 用逗号连接连续回答
csv_to_json-单句多轮.py 将多句放入提示词的'history'字段

执行./make_dataset/csv_to_json.py完成数据格式转换。

模型下载与微调

模型获取

• Hugging Face渠道:直接下载ChatGLM3系列模型(需耐心等待大文件下载)。

• 魔搭社区替代方案:

export USE_MODELSCOPE_HUB=1  # Windows使用set命令
git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

注意:需将魔搭社区的modeling_chatglm.py替换为Hugging Face版本。

微调参数配置

修改settings.json文件:

• 选择本地模型路径

• 调整per_device_train_batch_size(单卡训练批次)和gradient_accumulation_steps(梯度累积步数)控制显存占用

• 根据数据量修改num_train_epochs(训练轮次)、lora_rank(LoRA秩)等超参数

训练执行

• 单卡训练:python src/train_sft.py(建议2万条左右数据,loss降至3.5左右停止以避免过拟合)

• 多卡训练(需安装deepspeed):

uv pip install deepspeed
deepspeed --num_gpus=2 src/train_sft.py  # 示例:使用2块GPU
推理与测试

• 浏览器Demo:python ./src/web_demo.py(启动本地可视化界面)

• API服务:python ./src/api_service.py(提供接口调用能力)

• 功能测试:python ./src/test_model.py(验证常见问题回答)

多平台机器人部署方案

AstrBot集成(推荐方案)

步骤说明

1、部署AstrBot框架(支持Docker等方式)

2、在AstrBot中配置消息平台(如微信、Telegram)

3、启动项目API服务:python ./src/api_service.py

4、添加服务提供商:选择OpenAI类型,API Base URL填写AstrBot可访问的地址(如容器内地址http://172.17.0.1:8005/v1),模型名称填gpt-3.5-turbo

5、关闭默认工具调用:在消息平台发送指令/tool off reminder

6、根据微调时的default_system字段,在AstrBot中设置系统提示词

itchat方案(风险提示:微信小号专用)
python ./src/api_service.py  # 先启动API服务
python ./src/wechat_bot/main.py  # 终端显示二维码,扫码登录

注意:需使用绑定银行卡的微信小号,存在封号风险,仅建议测试使用。

文件结构

目录/文件 功能描述
WeClone-audio 语音克隆模块
data 存放聊天记录CSV文件
img 文档配图与截图
make_dataset 数据预处理脚本
src 核心代码(训练、推理、机器人接口)
.gitignore 版本控制忽略规则
pyproject.toml/requirements.txt 依赖管理文件
settings.json 训练推理配置中心