用微信聊天记录微调大语言模型: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 做的事情是把你的聊天记录转成训练集,微调大语言模型得到一个能复现你说话风格的回复模型,再把它接到可用的聊天入口上。只要有一张 16GB 显存的 NVIDIA 显卡,就能跟着把整条链路走通。
从聊天记录到风格模型:WeClone 大模型微调能做什么
WeClone 是一条"导出微信记录 → 清洗成训练数据 → LoRA 微调 → 接入聊天机器人"的完整流水线。
- 把导出的 CSV 聊天记录转成标准训练集,自动过滤手机号、邮箱等敏感信息
- 基于 LLaMA-Factory 对 ChatGLM3-6B 做 LoRA 微调开箱即用,7B 模型约需 16GB 显存
- 提供命令行、Web 页面、微信机器人三种使用入口,也支持 OpenAI 风格 API 对接
从克隆到首次微调的最短路径 🛠️
一条命令链装好环境
git clone https://gitcode.com/GitHub_Trending/we/WeClone cd WeClone pip install -r requirements.txt建议 Python 3.10 起步,requirements.txt 里已包含 llmtuner(LLaMA-Factory 0.5.3)、itchat 等全部依赖。
原始聊天怎么变成训练集
先用 PyWxDump 解密微信数据库,把每位联系人的聊天导出为 CSV,统一放进data/csv目录(仓库自带的data/test_data.json可以先拿来做小规模试跑)。然后执行python make_dataset/csv_to_json.py:脚本会去掉手机号、身份证号、邮箱、网址,并整句剔除命中禁用词的内容,词表在 make_dataset/blocked_words.json。同一人连续回多句时有三种策略可选,看make_dataset/目录下的三个脚本:用逗号连接(csv_to_json.py)、只留最长一句、或放进多轮 history(csv_to_json-单句多轮.py)。成品落在data/res_csv/,样例清单见data/res_csv/sft/dataset_info.json。
PT 与 SFT 怎么选不踩坑
聊天回复场景直接从 SFT 开始,PT 只在你想让模型更深地记住你的用词习惯时再补一轮,作者实测 PT 的额外提升有限。
| PT | SFT | |
|---|---|---|
| 入口 | src/train_pt.py | src/train_sft.py |
| 数据 | data/res_csv/pt纯文本风格数据 | data/res_csv/sft问答对 |
| 默认轮数 | 30 | 3 |
| 建议 | 可选,锦上添花 | 首选必做 |
python src/train_sft.py所有参数集中在settings.json,多卡场景用ds_config.json配 DeepSpeed。最影响效果的三个参数:num_train_epochs(数据少时 3 轮足够)、lora_rank(默认 4,贴合度不够时上调)、per_device_train_batch_size与gradient_accumulation_steps(显存不够就调小)。作者自己的 SFT loss 降到 3.5 左右,再低就要警惕过拟合。
命令行、Web、微信:三种部署方式 🚀
命令行:执行python src/cli_demo.py,在终端直接对话,输入clear清历史,exit退出。
Web 界面:
python src/web_demo.py自动打开浏览器,页面里即可实时对话,适合展示和长对话测试。
微信机器人:先起 API 服务,再跑机器人,终端会显示二维码,扫码登录后私聊或群里 @ 它即可。注意有封号风险,建议用小号。
python src/api_service.py python src/wechat_bot/main.py效果怎么判断、不达标查哪里
先跑python src/evaluate.py拿整体评分,再起src/api_service.py配合python src/test_model.py,用data/test_data.json里的常见提问批量对话,逐条看回复是否像你。效果不理想时按顺序排查:
- 查数据量与质量——有效样本太少或混入大量群聊噪音,回复必然飘,这是第一变量
- 查训练曲线——loss 停在高位说明欠拟合,加
num_train_epochs;降得过低则是过拟合,降轮数或减小lora_rank - 查采样参数——
settings.json中infer_args的temperature(默认 0.5)和repetition_penalty(默认 1.2),温度过高会跑题
先导出一份自己的聊天 CSV,跑通一轮 SFT,效果不满意再回到第 3 节查数据。
【免费下载链接】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),仅供参考