5步把微信记录变成数字分身对话API:WeClone极简微调的本地部署路径
【免费下载链接】WeClone🚀 One-stop solution for creating your AI twin from chat history 💡 Fine-tune LLMs with your chat logs to capture your unique style, then bind to a chatbot to bring your digital self to life.项目地址: https://gitcode.com/GitHub_Trending/we/WeClone
WeClone是一个数字分身对话API构建工具:用你的微信聊天记录微调大模型,再把结果绑到对话接口上,让AI用你的语气说话。
🔎 一:它能做什么,不能做什么
这个项目把你的微信聊天记录转成训练数据,再用LoRA(只训练少量参数的轻量微调方式,省显存)微调默认的ChatGLM3-6B模型。你得到的是一个"说话像你"的模型,风格上限由数据决定。
- 能:微信记录转训练数据,再做LoRA微调和对话API部署
- 能:命令行、浏览器、微信机器人三种渠道接入同一个微调模型
- 不能:不增加任何通识知识,模型学的是你的说话习惯,回答质量受限于数据数量与质量,别拿它做开放域问答
图:WeClone数字分身的实际对话效果,回复带着明显的个人语气
⚡ 二:从零到可运行的最短路径
默认路线(LoRA 16位精度、7B模型)单卡需要约16GB显存。
- 克隆代码并进入项目目录,建议先用conda建独立环境(Python 3.10,最低3.8),再装依赖。
git clone https://gitcode.com/GitHub_Trending/we/WeClone && cd WeClone pip install -r requirements.txt- 下载ChatGLM3-6B基础模型(README说明了Hugging Face或ModelScope两种方法)放到项目根目录的
chatglm3-6b目录;同时用PyWxDump(微信聊天记录导出工具)把聊天导出CSV放进data/csv目录,跑转换脚本生成训练数据。
python make_dataset/csv_to_json.py- 启动LoRA微调,所有训练参数集中在 settings.json。
python src/train_sft.py- 启动对话API服务,数字分身对话API本地部署完成,访问
localhost:8000/docs查看接口文档。
python src/api_service.py主要依赖:
| 依赖名 | 作用(白话) | 版本约束 |
|---|---|---|
| llmtuner | 大模型微调框架(LLaMA-Factory) | ==0.5.3 |
| itchat-uos | 微信机器人接口库 | ==1.5.0.dev0 |
| pandas | 读取处理CSV聊天记录 | 无 |
| openai | API客户端 | ==0.28 |
| chromadb | 向量数据库工具 | 无 |
🖥️ 三:核心交互方式(按渠道)
三种渠道都对接同一个微调模型,微信机器人走的是数字分身API接口,即src/api_service.py,需先启动API服务。
命令行CLI
启动python src/cli_demo.py,输入"你叫什么名字啊",回复"我叫小张,你呢?";clear可清空历史,exit退出。CLI对话机器人本地部署最直接,训练完一分钟就能验证风格,适合开发者验收微调效果。
浏览器Web页面
启动python src/web_demo.py,页面自动打开,输入"哈喽",回复"你好。"。适合向同事或家人快速演示数字分身效果。
微信机器人
启动python src/wechat_bot/main.py,终端显示二维码,扫码后私聊或群聊@机器人都能回复:发"早上好",回"你去吃早饭了嘛。"适合用小账号长期在线挂着。
📦 四:数据流与关键配置
数据链路三个环节:微信记录导出CSV → csv_to_json.py 过滤敏感信息(手机号、身份证号、邮箱、网址)并组装问答对 →data/res_csv/sft目录下的训练数据供train_sft.py使用。
关键配置集中在 settings.json:
| 参数 | 建议值 | 一句话说明 |
|---|---|---|
| per_device_train_batch_size | 4 | 每卡批大小,显存不够先降到1 |
| gradient_accumulation_steps | 8 | 梯度累积步数,降批大小后调大它保持等效样本量 |
| lora_rank | 4 | LoRA秩,风格没学到位可酌情调大 |
| num_train_epochs | 3 | 训练轮数,loss降得太低要停手,小心过拟合 |
低配显卡(不足16GB显存)可改用QLoRA(量化低秩微调),README给出的估算表中7B模型4bit量化仅需约6GB显存。
🧨 五:避坑清单
下面5种情况最容易踩。
- 回复风格不像自己→ 聊天数据量与质量不足 → 多聚合几个联系人的记录重跑数据脚本
- loss持续下降且回复开始复读→ 过拟合记住了数据 → 减少训练轮数,loss约3.5即可停
- 微信机器人被封号→ 主账号风险高 → 换小账号并先绑定银行卡
- 担心敏感信息进数据集→ 原始记录含个人隐私 → 默认已过滤手机号与身份证,可再往禁用词表里加
- 训练显存爆掉(OOM)→ 显存低于16GB → 调小批大小或改QLoRA 4bit
下一步试试运行python src/test_model.py,用一组常见聊天问题给微调后的模型做个体检。
【免费下载链接】WeClone🚀 One-stop solution for creating your AI twin from chat history 💡 Fine-tune LLMs with your chat logs to capture your unique style, then bind to a chatbot to bring your digital self to life.项目地址: https://gitcode.com/GitHub_Trending/we/WeClone
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考