WeClone 项目,打造你的数字分身
项目介绍:一个开源项目,旨在通过微信聊天记录和语音消息微调大语言模型,实现个性化数字分身,包括文本风格和声音的克隆。
支持将微调后的模型绑定到微信、QQ、企业微信、飞书和 Telegram 等平台的机器人,实现跨平台的数字分身,项目持续更新迭代中。
WeClone 是一个开源项目,旨在通过微信聊天记录微调大型语言模型(LLM),实现个性化的数字分身,并可部署为微信、QQ、Telegram 等平台的聊天机器人。
项目概述
WeClone 提供了一套完整的流程,包括:
- 数据导出:使用 PyWxDump 工具提取微信聊天记录。
- 数据预处理:清洗数据,去除敏感信息,并格式化为模型可用的 JSON 格式。
- 模型训练:基于 ChatGLM3-6B 模型,采用 LoRA 方法进行微调。
- 部署与推理:通过浏览器 Demo 或 API 服务进行模型推理,并可部署为聊天机器人。
此外,项目还支持语音克隆功能(WeClone-audio 模块),可将微信语音消息与 0.5B 大模型结合,实现高质量的声音克隆。
硬件与软件要求
硬件要求:
- 默认使用 ChatGLM3-6B 模型,LoRA 方法微调阶段需约 16GB 显存。
- 支持使用 LLaMA Factory 支持的其他模型和方法,显存占用更少。
软件要求:
- Python 3.8 及以上版本。
- 必需库:Torch、Transformers、Datasets、Accelerate、PEFT、TRL 等。
- 可选库:CUDA、Deepspeed、Bitsandbytes、Flash-attn 等。
环境搭建
建议使用 uv 工具进行环境管理:
git clone https://github.com/xming521/WeClone.git
cd WeClone
uv venv .venv --python=3.9
source .venv/bin/activate
uv pip install --group main -e .
数据准备与预处理
- 使用 PyWxDump 工具提取微信聊天记录,导出为 CSV 格式。
- 将导出的 CSV 文件放置于
./data/csv
目录下。 - 运行
./make_dataset/csv_to_json.py
脚本,对数据进行清洗和格式化。
项目默认会去除数据中的手机号、身份证号、邮箱、网址等敏感信息,并提供了一个禁用词词库 blocked_words
,可自行添加需要过滤的词句。
模型下载与微调
首选在 Hugging Face 下载 ChatGLM3 模型,或使用魔搭社区提供的模型。
微调配置统一在 settings.json
文件中,可根据需要修改模型路径、训练参数等。
单卡训练:
python src/train_sft.py
多卡训练:
pip install deepspeed
deepspeed --num_gpus=使用显卡数量 src/train_sft.py
推理与部署
浏览器 Demo:
python ./src/web_demo.py
API 服务:
python ./src/api_service.py
部署为聊天机器人:
⚠️ 注意:使用微信机器人存在封号风险,建议使用小号,并绑定银行卡。
python ./src/api_service.py # 启动 API 服务
python ./src/wechat_bot/main.py # 启动微信机器人
扫码登录后,可在私聊或群聊中 @ 机器人进行互动。
项目状态与注意事项
- WeClone 仍在快速迭代中,当前效果不代表最终效果。
- 微调效果很大程度取决于聊天数据的数量和质量。
- Windows 环境未进行测试,建议使用 WSL 或 Linux 环境。
WeClone 项目为用户提供了一个从数据准备到模型部署的完整解决方案,使得打造个性化的数字分身成为可能。
项目地址:点击打开 (https://github.com/xming521/WeClone)