
在人工智能技术飞速发展的今天,AI数字分身逐渐成为研究和应用的热点。WeClone作为一个开源项目,为用户提供了从聊天记录创造数字分身的完整解决方案,满足了个性化智能助手的需求,同时也为AI技术的探索者提供了宝贵的实践机会。

一、项目概述
WeClone是一个开源的AI数字分身一站式解决方案,致力于通过用户的聊天记录对大语言模型(LLM)进行微调,生成具有特定风格的数字分身,并能够将其绑定到微信、QQ、Telegram等聊天机器人平台,实现智能化的数字分身体验。项目涵盖了从数据导出、预处理、模型训练到部署的全链路方案,同时支持隐私信息过滤和本地化部署,确保数据安全。
二、技术原理
(一)基础模型选择
WeClone采用预训练的大语言模型(LLM)作为基础。这些模型经过大量文本数据的训练,具备强大的语言理解和生成能力,为数字分身的生成提供了坚实的基础。
(二)微调技术
WeClone使用LoRA(Low-Rank Adaptation)方法对基础模型进行微调。LoRA是一种高效的微调方法,通过在模型的关键层插入低秩矩阵来调整模型参数,能够在较少的计算资源下实现较好的微调效果。这种方法不仅节省了计算成本,还提高了模型的适应性和个性化程度。
(三)数据预处理
在数据预处理阶段,WeClone会对用户的聊天记录进行清洗和格式化。通过去除敏感信息(如手机号、身份证号、邮箱等),提取有效的对话数据,确保数据的安全性和可用性。预处理后的聊天记录将用于对模型进行微调,调整模型的参数,使其生成符合用户风格的回复。
(四)隐私保护机制
WeClone非常注重用户隐私的保护。它基于正则表达式等技术识别并去除聊天记录中的敏感信息,支持在本地环境中进行微调和部署,确保用户数据不会上传到云端,从而有效保护用户的隐私。
三、主要功能
(一)聊天记录微调
WeClone能够基于用户的聊天记录对大语言模型进行微调,生成个性化的数字分身。通过这种方式,数字分身能够继承用户的语言风格和表达习惯,从而更加真实地模拟用户的聊天方式。
(二)语音克隆
结合微信语音消息和Spark-TTS模型,WeClone实现了高质量的声音克隆功能。这一功能进一步增强了数字分身的真实感,使其不仅能够以文字形式回复消息,还能通过语音与用户进行交互。
(三)隐私保护
WeClone自动过滤敏感信息,支持本地化部署,确保用户数据的安全。用户无需担心隐私泄露问题,可以放心地使用该工具生成数字分身。
(四)多平台支持
WeClone支持绑定到微信、QQ、Telegram等多个聊天机器人平台,用户可以根据自己的需求选择合适的平台进行部署。
(五)灵活配置
WeClone提供了丰富的参数调整和自定义模型选项,用户可以根据自己的需求进行个性化配置,以满足不同的使用场景和需求。
四、应用场景
(一)个人助理定制
在用户忙碌时,数字分身可以代替用户回复消息,处理日常事务,如写邮件、回复评论等。这不仅节省了用户的时间,还提高了工作效率。
(二)内容创作
WeClone可以帮助用户快速产出特定风格的个性化文本内容,助力用户运营多个风格一致的小号,如写推文、写脚本、写解说等。这对于内容创作者来说是一个非常实用的工具。
(三)数字永生
通过WeClone,用户可以创建自己或他人的数字分身,实现数字永生,留住记忆中的TA。这一功能具有重要的情感价值,可以为用户带来独特的体验。
(四)情感陪伴
WeClone能够模拟特定人物的聊天风格,为用户提供情感支持,给予用户陪伴和安慰。这对于那些需要情感慰藉的人来说是一个很好的选择。
(五)语言学习
用户可以与数字分身进行互动,练习语言表达,学习特定风格或口吻的对话方式。这为语言学习者提供了一个有趣且有效的学习工具。
五、快速使用
(一)环境搭建
1. 安装CUDA
WeClone项目要求CUDA版本12.4及以上。
2.安装依赖
建议使用`uv`安装依赖,这是一个非常快速的Python环境管理器。安装`uv`后,可以使用以下命令创建一个新的Python环境并安装依赖项:
git clone https://github.com/xming521/WeClone.git
cd WeClone
uv venv .venv --python=3.10
source .venv/bin/activate # Windows下执行 .venv\Scripts\activate
uv pip install --group main -e .
如果需要使用最新的模型进行微调,还需要手动安装最新版LLaMA Factory:
uv pip install --upgrade git+https://github.com/hiyouga/LLaMA-Factory.git
同时,可能需要根据提示调整其他依赖版本,例如`vllm`、`pytorch`、`transforms`等。
3. 配置文件
将配置文件模板复制一份并重命名为`settings.jsonc`,后续的配置修改都在此文件中进行:
cp settings.template.jsonc settings.jsonc
4. 测试CUDA环境
使用以下命令测试CUDA环境是否正确配置并可被PyTorch识别:
python -c "import torch; print('CUDA是否可用:', torch.cuda.is_available());"
5. (可选)安装FlashAttention
为了加速训练和推理,可以安装FlashAttention:
uv pip install flash-attn --no-build-isolation
(二)模型下载
WeClone默认使用`Qwen2.5-7B-Instruct`模型。可以通过以下命令下载模型:
git lfs install
git clone https://www.modelscope.cn/Qwen/Qwen2.5-7B-Instruct.git
如果下载遇到问题,可以参考[模型的下载](https://github.com/xming521/weclone#模型下载)部分的其他下载方式。
(三)数据准备
1. 提取微信聊天记录
使用[PyWxDump](https://github.com/Alvin9999/new-pywxdump)提取微信聊天记录(不支持4.0版本微信)。可以先将手机的聊天记录迁移(备份)到电脑,以获取更多的数据。下载软件并解密数据库后,点击聊天备份,导出类型为CSV。将导出的`csv`文件夹放在`./dataset`目录下即可。
2. 数据预处理
WeClone默认会去除数据中的手机号、身份证号、邮箱、网址等敏感信息。用户还可以在`settings.jsonc`中添加禁用词词库`blocked_words`,自行添加需要过滤的词句。预处理命令如下:
weclone-cli make-dataset
用户可以根据自己的聊天风格修改`settings.jsonc`中的`make_dataset_args`参数,调整数据预处理的策略。
(四)微调模型
1. 配置参数
在`settings.jsonc`中,用户可以修改`model_name_or_path`和`template`来选择本地下载好的其他模型。还可以调整`per_device_train_batch_size`、`gradient_accumulation_steps`等参数来控制显存占用,以及根据数据集的数量和质量修改`train_sft_args`中的`num_train_epochs`、`lora_rank`、`lora_dropout`等参数。
2. 单卡训练
在多卡环境中进行单卡训练时,需要先执行以下命令:
export CUDA_VISIBLE_DEVICES=0
然后运行训练脚本:
weclone-cli train-sft
3. 多卡训练
如果需要使用多卡训练,可以取消`settings.jsonc`中`deepspeed`行代码的注释,并使用以下命令进行训练:
uv pip install deepspeed
deepspeed --num_gpus=使用显卡数量 weclone/train/train_sft.py
(五)推理与测试
1. 浏览器Demo推理
可以通过浏览器Demo进行简单推理,测试出合适的`temperature`、`top_p`值,并修改`settings.jsonc`中的`infer_args`参数,供后续推理时使用。
weclone-cli webchat-demo
2.接口推理
使用以下命令启动API服务:
weclone-cli server
然后通过API接口进行推理。
3. 测试模型效果
使用常见聊天问题测试模型效果,命令如下:
weclone-cli test-model
测试结果将保存在`test_result-my.txt`文件中。
(六)部署到聊天机器人
WeClone支持将微调后的模型部署到多种聊天机器人平台,如AstrBot和LangBot。以下是部署到AstrBot的步骤:
1. 部署AstrBot
部署AstrBot并配置消息平台。
2. 启动API服务
执行以下命令启动WeClone的API服务:
weclone-cli server
3. 配置AstrBot
在AstrBot中新增服务提供商,类型选择OpenAI,API Base URL根据AstrBot的部署方式填写(例如docker部署可能为`http://172.17.0.1:8005/v1`),模型填写`gpt-3.5-turbo`,API Key随意填写一个。
4. 关闭默认工具调用
微调后的模型不支持工具调用,需要关闭默认的工具。消息平台发送指令:
/tool off all
5. 设置系统提示词
根据微调时使用的`default_system`,在AstrBot中设置系统提示词。
6. 调整采样参数
调整采样参数,例如`temperature`、`top_p`、`top_k`等,以优化模型的输出效果。
六、结语
WeClone作为一个开源的AI数字分身一站式解决方案,为用户提供了从数据准备到模型部署的完整流程,具有强大的功能和灵活的配置选项。它不仅能够满足个人用户的需求,还为AI技术的研究者和开发者提供了宝贵的实践平台。通过WeClone,用户可以轻松创建个性化的数字分身,实现智能化的聊天体验。
GitHub仓库:https://github.com/xming521/weclone
(文:小兵的AI视界)