
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/WeCloneWeClone 用你真实的微信聊天记录微调一个大语言模型再把它接进微信机器人生成一个会用你口吻回话的数字分身私聊、群聊都自动应答。全流程拆成三幕第一幕讲清原理与硬件第二幕把聊天记录变成数据第三幕训练与上线。显存门槛 16GB核心命令都在文内。 第一幕数字分身原理——16GB 显存微调 6B 模型16GB 显存足够完成 6B 模型的 SFT 微调这是整个项目唯一的硬性门槛。原因在于微调方式。7B 模型全参数微调16 位精度要大约 160GB 显存消费级显卡无解WeClone 走 LoRA 路线——冻结基座模型权重只训练注入注意力层的一小组低秩矩阵本项目把目标锁定在 query_key_value 上默认秩为 4。同样 16 位精度下LoRA 微调 7B 模型约 16GBQLoRA 8 位约 10GB4 位约 6GB。显卡低于 16GB直接切 QLoRA。模型又是怎么学会你的说话方式的答案在训练样本的构造里每一条样本都是别人问 → 你原话回的配对模型反复见过你的措辞、标点习惯和回复长度语气就是这么被带出来的。硬件过关环境跟上。克隆仓库后建独立 conda 环境装依赖git clone https://gitcode.com/GitHub_Trending/we/WeClone conda create -n weclone python3.10 conda activate weclone cd WeClone pip install -r requirements.txtPython 3.10 是推荐版本deepspeed、bitsandbytes、flash-attn 都是可选项只在多卡或量化时用才装。 第二幕微信记录导出与敏感信息过滤——把聊天记录变成微调数据集用 PyWxDump 导出微信聊天数据库把所有联系人和群聊的 csv 文件夹统一放进 ./data/csv 目录一个聊天对象一个文件夹。PyWxDump 的流程安装工具、解密数据库然后选聊天备份导出类型选 CSV支持一次导出多个联系人或群聊。随后跑预处理脚本python make_dataset/csv_to_json.py脚本干三件事。第一只保留你自己发出的消息微调目标是模仿你的回复你发的is_sender1作为答案对方的消息作为问题。第二剔除含手机号、身份证号、邮箱、http 链接的消息——模型不该记住你的隐私。第三禁用词过滤往 make_dataset/blocked_words.json 里加词含禁用词的整句直接丢掉。合并策略也值得看一眼。默认脚本把同一人连发的多句用逗号接成一句话间隔超过 1 小时就切分图片、链接类消息充当分隔点。想保留多轮上下文而不是合并换用 make_dataset/csv_to_json-单句多轮.py连续的回答会放进提示词的 history 字段参与训练。最终产物是 data/res_csv/sft/ 下 instruction/output 格式的问题-回答对 json有效配对越多语气越稳。 第三幕训练、验证、上线——6B 模型微调教程到微信机器人落地一条训练命令、一个本地页面、两条终端命令第三幕照顺序执行即可。一条命令完成微信记录 LoRA 微调训练前把 chatglm3-6b 权重放进 ./chatglm3-6b 目录准备工作就全完成了。首选从 Hugging Face 下载 ChatGLM3-6B 权重网络不稳就用魔搭社区训练与推理前设置环境变量 USE_MODELSCOPE_HUB1再用 git lfs 拉取 ZhipuAI/chatglm3-6b 权重。全部超参数集中在 settings.json克隆到本地后只改这一个文件代码不动用途键默认值显存占用per_device_train_batch_size、gradient_accumulation_steps4 / 8训练轮数num_train_epochs3适配强度lora_rank、lora_dropout4 / 0.5学习率learning_rate1e-4显存紧张就调小前两个键数据量大就适当加轮数。python src/train_sft.py多卡训练先装 deepspeed再用deepspeed --num_gpus2 src/train_sft.py启动按实际卡数填多卡分摊负载。训练好坏有参考数字loss 降到 3.5 上下属正常降得明显更低反而是过拟合信号。本地页面验证口吻运行python src/web_demo.py起本地页面先和模型聊几轮再决定要不要上线。看措辞、标点习惯、回复长短是否和你平时聊天一致。口吻不对先回头调轮数和 lora_rank别急着接微信。两条命令上线微信数字分身API 服务在前、机器人在后两个终端顺序不能反python src/api_service.py python src/wechat_bot/main.py第二个终端打印登录二维码微信扫码即登录。私聊它自动回复群聊里 它也生效。对话历史由 src/wechat_bot/main.py 维护保留 15 轮长回复会拆成短句、每条间隔约 2 秒发出模拟打字节奏。下图是训好的数字分身的对话实录⚠️ 避坑与调优清单上线前把这份清单过一遍每条都能省一次返工。微信机器人有封号风险。用小号跑账号需绑定银行卡别用日常重度聊天的主号。想让机器人换角色说话。修改 src/template.py 里的 default_prompt 系统提示词默认是扮演人类、不要承认自己是人工智能。数据扩充是提升效果最直接的路。先用一两个密友的数据跑通全流程验证口吻再逐步加人、重新训练。显存不够时。调小 per_device_train_batch_size 和 gradient_accumulation_steps仍不够就切 QLoRA8 位约 10GB4 位约 6GB。训练质量参考线。loss 3.5 上下是健康区间网页验证口吻不对先调轮数与 lora_rank再考虑动数据。现在就动手把一个密友的聊天记录导出成 CSV 放进 data/csv按预处理、训练、本地页面验证的顺序跑完一整圈——像不像你一晚上就有答案。【免费下载链接】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),仅供参考