
微信聊天记录微调 ChatGLM 打造数字克隆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让微信里的 AI 助手真正像真人一样接话核心思路就是拿自己的聊天记录去微调一个大模型。WeClone 做的是这件事用 ChatGLM 3-6B 做底座LoRA 方式做 SFT把你的说话风格灌进模型里再挂到微信机器人上。效果上限基本由聊天数据的数量和质量决定这一点在动手前要先有预期。环境准备不装好就跑不起来软件层面README 给出了最低与推荐版本实际使用建议按推荐档配置依赖最低推荐Python3.83.10torch1.13.12.2.1transformers4.37.24.38.1可选加速项CUDA 11.6、deepspeed、bitsandbytes、flash-attn。硬件上LoRA 微调 6B 模型约需 16GB 显存如果只有 10GB 左右QLoRA 可以压到 6~10GB但要改模板配置先按默认方案走。conda create -n weclone python3.10 conda activate weclone pip install -r requirements.txt聊天记录用 PyWxDump 导出为 CSV按每个联系人一个文件夹的结构放进 data/ 下。注意 make_dataset/csv_to_json.py 读的是固定路径./data/csv目录不对脚本会直接空转。模型首选 Hugging Face 上的 ChatGLM 3-6B国内网络不稳可以走 ModelScope但后续所有训练推理命令前都要带上export USE_MODELSCOPE_HUB1漏了会报找不到模型。最小可运行闭环从克隆仓库到弹出第一句回复整条最短路径只有四步每步一条核心命令。第一步克隆仓库git clone https://gitcode.com/GitHub_Trending/we/WeClone第二步配置并转换数据。把 settings.json 里的model_name_or_path指向模型目录然后运行数据预处理python make_dataset/csv_to_json.py脚本会自动过滤手机号、身份证、邮箱等敏感内容再按一问一答配对生成 data/res_csv/sft/sft-my.json。同一人连发多条消息时make_dataset/ 下有三个脚本对应三种处理方式逗号拼接、只取最长回答、或放进多轮 history默认用csv_to_json.py即可。第三步SFT 微调python src/train_sft.py作者训练后的 loss 停在 3.5 左右继续往下降往往就开始过拟合曲线掉得太猛可以提前停。第四步浏览器验证python src/web_demo.py页面打开后输入哈喽模型能接上话、自称名字、接住你是 95 年的这种语境就说明整条链路通了。功能与能力展示日常对话拟人化。训练后的模型会保持角色一致性对话不跳戏能记住前文上下文回复长度和语气贴近真人聊天习惯而不是作为 AI 助手那种腔调。口语风格还原。网络流行语和表情记号都能接住比如我瘦成狗了配[doge]这种场景模型会顺着梗往下聊微信原生接入。先用python src/api_service.py起一个本地 API 服务默认 8000 端口再跑 src/wechat_bot/main.py 扫码登录就能私聊或在群里 机器人。机器人侧保留最近 15 轮上下文回复会按逗号拆成多条消息、间隔 2.2 秒发出模拟真人打字节奏避免一眼看穿是机器。进阶定制数据、参数与模板按需展开以下三项都不影响最小闭环用到哪个再改哪个。数据清洗。预处理脚本默认剔除隐私字段还提供了一个禁用词词库 make_dataset/blocked_words.json命中禁用词的整句会被丢弃。聊天记录里不想让模型学的内容加进去就行。训练与推理调参。都在 settings.json显存吃紧就调小per_device_train_batch_size或减小lora_rank默认 4数据量不大时num_train_epochs别拉太高。推理侧的temperature、top_p、repetition_penalty控制回复的随机程度重复啰嗦就调高 repetition_penalty回复太木就适当调高 temperature。对话模板。风格人设在 src/template.py 的default_prompt里默认是请你扮演一名人类不要说自己是人工智能。想让它自称某个名字、带点方言口癖直接改这句话重新训练生效。常见坑与自查模型路径配错了会怎样训练或 demo 启动阶段就报找不到 checkpoint。核对 settings.json 中model_name_or_path指向的目录是否真的存在模型权重文件。显存不够 OOM 怎么办优先调小per_device_train_batch_size其次降低lora_rank仍不够再考虑 QLoRA 量化方案。loss 降得特别快、回复开始复读大概率过拟合提前停训并适当降低num_train_epochs。数据太少回复风格不明显正常现象最终效果强依赖数据量优先补同一联系人、跨度更长的聊天记录再重训。微信号相关。微信机器人有封号风险作者建议用小号且账号需绑定银行卡别拿主号试。跑通之后建议先用 10 条左右的聊天记录试跑一轮微调观察回复风格是否接近预期再决定要不要扩大数据集和加大训练轮数。【免费下载链接】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),仅供参考