从零到能聊:用你的微信聊天记录训练一个数字分身
【免费下载链接】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 替自己回微信?WeClone 做的事情很直接:把你的微信聊天记录当作训练数据,微调一个大模型,得到一个说话习惯和你很像的数字分身。它面向两类人——想搭微信聊天机器人的开发者,以及只是想看看"AI 版自己"长什么样的普通用户。
先想清楚你要解决什么问题
几百条未读消息、翻来覆去回答同样的问题,这些场景靠手动回复只会越来越累。WeClone 的思路是用 LLaMA-Factory 微调框架(项目内置依赖llmtuner==0.5.3)加载你的聊天记录,微调后绑定到微信机器人上。跑通后,你的账号在私聊和群聊 @ 时都能自动回复,风格来自你本人的历史消息。
效果要提前说清楚:它很大程度取决于聊天数据的数量和质量。作者自述用了约 2 万条清洗后的数据,风格"差强人意但偶尔很搞笑"——所以先拿小号试水,心理预期放平。
环境准备与依赖安装:一条命令链走完
硬件方面,项目默认基于 ChatGLM3-6B + LoRA 微调,7B 规模大约需要 16GB 显存;显存不够可以改 QLoRA 或换更小的模型(README 里有完整显存估算表)。软件方面 Python 3.8 起步,推荐 3.10。
git clone https://link.gitcode.com/i/1158243436285850380287904d578408 cd WeClone pip install -r requirements.txt跑完之后你会看到llmtuner、itchat-uos、pandas、chromadb、langchain等依赖装好。还差一件事:把 ChatGLM3-6B 模型放到仓库根目录的chatglm3-6b路径下(settings.json 里model_name_or_path指向这里),模型文件较大,下载需要点耐心。
实操演示:先看效果,再上线机器人
命令行对话:1 分钟验证模型能不能聊
python src/cli_demo.py启动后终端出现User:提示符,直接输入问题。模型会流式输出Assistant:的回答,一轮轮累积上下文。两个内置命令值得记住:输入clear清掉对话历史并释放显存,输入exit退出。
微信机器人上线:先起 API 服务,再扫登录码
微信机器人不是单跑一个脚本就完事,分两步。先起 API 推理服务,默认监听 8000 端口,浏览器访问http://localhost:8000/docs能看到接口文档:
python src/api_service.py # 另开一个终端 python src/wechat_bot/main.py第二个终端启动后,会直接在终端打印登录二维码,手机扫码即可上线。私聊消息会自动回复,群聊里 @ 机器人也会触发。回复逻辑在 src/wechat_bot/handler/text.py,上下文默认保留 15 轮,机器人还会按标点把长回答拆成多条消息发送,模拟真人打字节奏。
进阶指引:数据、训练与参数
- 聊天记录转训练数据:用 PyWxDump 把聊天记录导出成 CSV,放进
data/csv目录,然后运行 make_dataset/csv_to_json.py。脚本会默认过滤手机号、身份证、邮箱和网址,make_dataset/blocked_words.json里可以追加你想屏蔽的词(命中即整句丢弃)。同一人连发多条时有三种处理策略:csv_to_json.py用逗号合并、csv_to_json-单句回答.py(已废弃)只留最长一句、csv_to_json-单句多轮.py把多句放进多轮 history。 - 训练:src/train_pt.py 做预训练(PT)阶段,src/train_sft.py 做监督微调(SFT),训练参数集中在 settings.json。作者实测 SFT 的 loss 降到 3.5 左右即可,压得太低容易过拟合。多卡训练用 ds_config.json 配合 deepspeed 启动。
常见问题:老用户想提醒你的三件事
微信账号有封号风险吗?有。项目 README 明确建议用小号,且该账号必须绑定银行卡才能用 itchat 登录。主号别碰。
显存不够 / 训练爆显存怎么办?在settings.json里调小per_device_train_batch_size、调大gradient_accumulation_steps,或者把模型换成 7B 以下、改用 QLoRA 量化方案,显存能省一大截。
回复很慢、越聊越占内存?cli_demo里定期敲clear清历史;推理端settings.json里infer_args的max_length默认只给 50,本身就是为了控制长度。聊天记录是隐私,导出和存放路径注意权限,blocked_words.json该加的词加够。
环境已经就位的话,现在就可以git clone下来,先跑一遍cli_demo看看效果,再决定要不要认真喂数据训练一个属于你自己的数字分身。
【免费下载链接】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),仅供参考