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 把真实微信聊天记录变成微调数据集,训练出一个懂你口吻的大语言模型数字分身,再接进微信自动回话。全文分五个阶段:环境准备 → 数据加工 → SFT 微调 → 微信上线 → 调优避坑,按顺序执行即可从零跑通。
🛠️ 阶段一|环境准备:确认显存门槛,搭好训练环境
先回答显存问题:16GB 显存做 6B 大模型微调,够。默认基座是 chatglm3-6b,SFT 阶段走 LoRA 路线——LoRA 是一种只训练模型一小部分参数、其余权重全部冻结的微调方法,所以显存开销被压到了 16GB 上下,普通消费级显卡就能覆盖。
显存紧张时的调参方向,两个旋钮都写在 settings.json 里:
- 优先调小
per_device_train_batch_size和gradient_accumulation_steps,直接降低单次前向的显存占用; - 还放不下就改走 QLoRA:把权重量化到 8bit 或 4bit 再训练,6B 模型的需求能压到 10GB 以下。
下面这组命令克隆仓库并搭建 conda 环境,复制即可执行:
git clone https://gitcode.com/GitHub_Trending/we/WeClone conda create -n weclone python=3.10 conda activate weclone cd WeClone pip install -r requirements.txt📥 阶段二|数据加工:把微信聊天记录变成微调数据集
数据是效果的地基,这一步做的就是聊天记录微调的数据准备。先用 PyWxDump 工具解密微信本地数据库,选择"聊天备份"并以 CSV 格式导出。每个联系人或群聊对应一个 csv 文件夹,把它们统一放进仓库的./data/csv目录下,例如:
./data/csv/某好友/xxx.csv ./data/csv/某群聊/xxx.csv数据集预处理脚本一条命令跑完,内置了脱敏逻辑:
python make_dataset/csv_to_json.py脚本会自动剔除手机号、身份证号、邮箱、网址等敏感信息。想额外过滤某些话题,往 make_dataset/blocked_words.json 里加词就行,包含禁用词的整句会被直接丢弃。
同一个人连续回复多句时有两种处理方式,看你的需求二选一:
- 默认脚本
csv_to_json.py:把连续多句用逗号合并成一条回答,适合大多数场景; - make_dataset/csv_to_json-单句多轮.py:保留成多轮历史对话,写入提示词的 history 字段,适合想让模型学习上下文衔接能力的场景。
🧠 阶段三|SFT 微调:训练模型并本地验证效果
训练前先备好基座权重:从 Hugging Face 下载 chatglm3-6b,解压放到仓库根目录的./chatglm3-6b文件夹。网络不稳可改从魔搭社区拉取,并在训练、推理前执行export USE_MODELSCOPE_HUB=1(Windows 用set)。
批次大小、学习率、LoRA 秩(lora_rank)、训练轮数(num_train_epochs)这些超参数全部集中在 settings.json 里,克隆到本地后只改这一个 JSON,代码零改动。
单卡启动 SFT 微调:
python src/train_sft.py训练过程中 loss 降到 3.5 左右是常见水平,压得过低反而可能是过拟合,别盲目追求低 loss。
多卡不是必须,单卡就能完成;有两块以上显卡再考虑可选方案:装好 deepspeed 后执行deepspeed --num_gpus=2 src/train_sft.py(数字换成你的显卡数量),用多卡分摊训练压力。
训练完先别急着上线,起一个本地页面自测效果:
python src/web_demo.py浏览器打开后随便聊几句,看回复的语气、口头禅是不是你的风格。下图是微调后的微信数字分身机器人实际对话效果:
🚀 阶段四|上线部署:让数字分身接入微信机器人
上线需要两个进程,顺序不能反:先起 API 服务,再启动机器人,分别开两个终端执行:
python src/api_service.py # 终端 1:先启动 API 服务 python src/wechat_bot/main.py # 终端 2:再启动微信机器人机器人进程启动后,终端会打印登录二维码,用要绑定的微信号扫一下即完成登录。之后私聊它,或在群里 @ 它,它就会用你的口吻回复。多轮对话的上下文由 src/wechat_bot/main.py 负责维护,聊天过程中它能记住近期上下文,不会一句话就"失忆"。
🔧 阶段五|调优与避坑:把分身调得更像你
数据质量决定效果上限。这是项目方反复强调的一句话:最终效果很大程度取决于聊天数据的数量和质量。数据少、话题单一,分身只能说差强人意;数据丰富、风格鲜明,效果才会接近本人。想提升效果,最直接的往往不是调参,而是把数据喂得更全。
封号风险,统一在这里说清楚。在微信上跑机器人存在封号风险,建议专门准备一个小号来跑,并且账号必须绑定银行卡,否则无法使用。主力号不要碰。
想换人设,改系统提示词。默认的系统提示词在 src/template.py 里,想让分身以更正式、更冷淡或其他角色说话,直接修改这个文件即可。
三步行动清单:
- 先拿一两位密友的聊天记录把全流程跑通:环境 → 数据集 → SFT → 本地自测,这一轮不求量、求快;
- 验证效果:在 web_demo 和微信私聊里各测十几轮,语气像就继续,不像就回头检查数据构成和
settings.json里的训练参数; - 逐步补充更多联系人的聊天记录并重新训练,用增量数据把分身的表达习惯喂得更全,效果会明显上一个台阶。
【免费下载链接】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),仅供参考