WeClone上手指南:把微信聊天记录调教成会说话的AI数字分身
【免费下载链接】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 是一个把微信聊天记录变成微调大模型的一站式项目:模型学会你的语气之后,就是你的 AI 数字分身。本文带你走通完整链路——装依赖、生成训练集、用约 16GB 显存微调 7B 模型、在浏览器里和分身对话,最后还可以接上微信。
下载项目并安装全部依赖
先确认硬件:项目默认用 ChatGLM3-6B 作底模,SFT(监督式微调,即用"问题-回答"成对数据教模型)阶段采用 LoRA(低秩适配,只训练一小块附加参数、原权重不动),大约需要 16GB 显存。显存不够时,可换 QLoRA(对参数做量化压缩以省显存的 LoRA 变体)或换更小的模型。Python 最低 3.8,推荐 3.10。
git clone https://gitcode.com/GitHub_Trending/we/WeClone cd WeClone进入目录后能看到 README.md、settings.json 等文件即成功。接着装依赖:
pip install -r requirements.txt装完应无任何报错,且pip show llmtuner能显示版本——llmtuner(LLaMA-Factory)是本项目微调的核心依赖。
把微信聊天记录变成训练集
模型不能直接读聊天记录,需要先用开源工具 PyWxDump 把微信记录解密并导出为 CSV(逗号分隔的纯文本表格),再把导出的 csv 文件夹放进项目./data目录,每个联系人一个文件夹。
然后运行 make_dataset/csv_to_json.py(聊天记录转训练集的脚本):
python make_dataset/csv_to_json.py脚本会顺手删掉手机号、身份证号、邮箱、网址等敏感字段;你还能往 make_dataset/blocked_words.json(自定义屏蔽词表)里加词,凡含这些词的句子会被整句丢弃。
对方连续回多句时选哪个脚本
默认脚本会把连续多句拼成一条长回答;若希望每句各算一轮对话,改用 make_dataset/csv_to_json-单句多轮.py(额外对话存入 history 字段,产出 data/sft/dataset_info-with-his.json)。跑完后 data/res_csv、data/sft 目录下出现 dataset_info.json,训练集就备好了。
下载底模并启动SFT微调
两个模型下载渠道
ChatGLM3-6B 可去 Hugging Face 模型社区直接下载,网络不畅则改用魔搭社区,并在之后所有训练、推理前设置环境变量:
export USE_MODELSCOPE_HUB=1Windows 上写set USE_MODELSCOPE_HUB=1。设置后用echo $USE_MODELSCOPE_HUB看到 1 即生效。
训练与推理参数集中在 settings.json(训练推理统一配置文件):显存吃紧就调小 per_device_train_batch_size 和 gradient_accumulation_steps;按数据量调整 num_train_epochs(训练轮数)和 lora_rank(附加参数量)。作者的经验值:SFT loss 降到 3.5 左右即可,再低容易过拟合。
python src/train_sft.pysrc/train_sft.py 是 SFT 微调入口,终端会逐 step 打印 loss,checkpoint 会保存到输出目录。多卡训练需先pip install deepspeed,再以deepspeed --num_gpus=卡数 src/train_sft.py启动。
在浏览器里和模型对话
python src/web_demo.pysrc/web_demo.py 是网页对话入口。终端打印出服务地址后,在浏览器打开该地址发一条消息,微调后的分身会用你的语气作答;首轮略慢属正常,是模型在加载。
把微调好的模型接上微信机器人
微信回复需要两步:先启动 src/api_service.py(给外部程序提供模型推理的接口服务),再启动 src/wechat_bot/main.py(微信机器人入口):
python src/api_service.py python src/wechat_bot/main.py第二条命令会在终端打印二维码,扫码登录后即可私聊或在群里 @ 它获取回复。注意微信有封号风险,建议用小号。只想批量验证效果而不接微信的话,运行 src/test_model.py(用常见聊天问题做批量测试)。
下一步建议
- 分身"不像你"时先回查数据:核对 data/sft/dataset_info.json 里的条数与噪声,往 blocked_words.json 补词后重跑转换与微调。
- 试试 SFT 前先做 PT(预训练阶段,只喂文本让模型通读)打底,入口 src/train_pt.py(PT 预训练入口,对应数据在 data/res_csv/pt)。
【免费下载链接】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),仅供参考