Skip to content

feiok/wxChatBot

 
 

Repository files navigation

wxChatBot


⭐️ 如果这个项目对你有帮助,欢迎点个Star支持一下! ⭐️


Version Python License Dify WeChat GPT-SoVITS

wxChatBot 是一个基于Dify和Gewechat开发的智能聊天机器人项目。它通过集成 Dify AI 平台,提供高效、智能的消息处理和自动回复服务。支持ChatFlow自定义编排AI任务,原生支持永久记忆功能,支持GPT-SoVITS自定义音色,能够发送原生微信语音气泡

微信聊天演示 功能展示 语音设置界面

微信聊天演示 | ChatFlow功能配置界面 | 语音设置界面

🎉 最新发布

教程链接:

视频教程-BiliBili

📦 V1.0.0整合包

提取码:1145

👋 前言

哈喽! 这个项目最初是受到 dify-on-wechat 的启发

在部署过程中,我发现了几个需要改进的地方:

  • ChatFlow 功能支持有限
  • 本地部署时微信回调地址连接不稳定(尤其是没有公网IP的情况)
  • 语音模型只能调用一些大厂预制API,定制音色麻烦

于是我集成了 GPT-SoVITS,实现了自定义语音音色的功能。这样用户可以根据自己的需求定制专属音色

其次是为什么选择Gewechat? 当然是稳定且功能强大了!相较于itchat和wxauto,Gewechat实现微信个人号通道,使用ipad协议登录,相比itchat协议更稳定。 wxauto不支持发送语音气泡,虽然稳定性强,但是很多可个性化的地方支持的不够完善。

未来计划添加更多功能:

  • 📄 文档上传与智能问答
  • 🎬 视频图片识别处理
  • 🎨 多媒体内容生成

理论上,Dify支持的功能都可以整合进来。这个项目可以变成:

  • 📚 专属知识库助手
  • 📝 个人生活管理工具
  • 📊 股票分析(仅作参考)

这主要归功于Dify,它负责复杂的AI处理,而本项目专注于接收和发送结果

我希望这个项目对新手也比较友好,但目前确实需要一定的技术基础。如果你成功部署了,希望你能从中学到有用的知识

废话不多说,玩的开心~

✨ 功能特性

🤖 Dify集成

  • 支持Dify的ChatFlow功能,提供Agent构建、AI工作流编排、RAG检索、模型管理等能力
  • 简化生成式AI应用的构建和运营,大部分Dify功能都可集成
  • 内置永久记忆和本地知识库检索功能
  • 支持插件和自定义函数扩展
Dify主页

Dify主页面

Dify模型配置页

模型配置界面

Dify的Chatflow工作页

ChatFlow工作流配置

📱 微信集成

  • 无缝对接个人微信,轻松接入微信生态
  • 支持文本和语音回复(原生语音泡,非文件形式)
  • 通过简单指令(如#设置)获取管理界面
  • 支持管理chatflow(新增)
  • 支持管理chat记录(新增)
chatflow管理页(新建) chatflow管理页(删除) chat管理页(新建) chat管理页(删除)

chatflow管理页(新建) | chatflow管理页(删除) | chat管理页(新建) | chat管理页(删除)

🔊 语音功能

  • 基于GPT-SoVITS技术,支持自定义语音模型
  • 少量语音样本即可高度还原声音特征
  • 支持语音与文本互转功能
  • 可配置多种语音参数,实现个性化语音体验

⚙️ 系统功能

  • 基于Gradio开发的Web管理界面,配置简单直观
  • 支持Gradio的share=True模式,无需公网IP即可远程访问
  • 项目结构清晰,便于自定义和二次开发
  • 完整的日志记录与监控系统

📁 项目结构

wxChatBot/
├── Core/                  # 核心功能模块
│   ├── bridge/            # 通信桥接层
│   ├── commands/          # 命令系统
│   ├── difyAI/            # Dify AI集成
│   ├── factory/           # 服务工厂
│   ├── voice/             # 语音处理模块
│   └── web/               # Web管理界面
├── gewechat/              # 微信API集成
│   ├── api/               # API接口封装
│   ├── util/              # 工具接口层
│   └── data/              # 数据存储
├── voice_model/           # 语音模型文件
├── logs/                  # 日志文件
├── tmp/                   # 临时文件目录
├── config.py              # 配置管理
├── main.py                # 主程序入口
├── config.example.json    # 配置文件示例
└── requirements.txt       # 项目依赖

🚀 快速开始

环境要求

  • Python 3.11+
  • 一个实名认证的微信账号(建议开通钱包功能并充值少量金额,使用独立设备运行更稳定)
  • Dify的Docker环境
  • Gewechat的Docker环境

视频教程

安装步骤

1. 克隆仓库

git clone https://github.com/yourusername/wxChatBot.git
cd wxChatBot

2. 安装依赖

pip install -r requirements.txt

3. 通过Docker构建Dify (可参考: Dify)

git clone https://github.com/langgenius/dify.git
cd dify
cd docker
cp .env.example .env
docker compose up -d

4. 通过Docker构建GeweChat (可参考: Gewechat)

4.1 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/gewe/gewe:latest
docker tag registry.cn-hangzhou.aliyuncs.com/gewe/gewe gewe
4.2 运行镜像容器
mkdir -p /root/temp
docker update --restart=always gewe
docker run -itd -v /root/temp:/root/temp -p 2531:2531 -p 2532:2532 --privileged=true --name=gewe gewe /usr/sbin/init
4.3 将容器设置成开机运行
docker update --restart=always gewe

5. 修改配置文件(见下方配置说明)

# 编辑config.json填入必要信息
config.json

6. 启动项目主程序

python main.py

启动成功后控制台输出如下:

配置界面

系统启动界面

⚙️ 配置说明

初次运行,需要修改config.json文件,主要配置项包括:

{
    "master_name": "", # 你的微信账号名称(注意是账号名称不是备注,建议使用不易重名的名称)
    "dify_api_base": "http://localhost/v1", # dify的地址,一般不用修改
    "gewechat_base_url": "http://your_local_ip:2531/v2/api", # 将your_local_ip替换为你的电脑IP地址
    "gewechat_token": "", # 初次创建应用,留空,这里自动填写
    "gewechat_app_id": "", # 初次创建应用,留空,这里自动填写
    "gewechat_callback_url": "http://your_local_ip:1145/v2/api/callback/collect", # 一般不需要改
    "server_host": "localhost", # 应该也不需要修改
    "settings_url": "", # 自动生成
    "GPT-SoVITS_url": "http://127.0.0.1:9880", # GPT-SoVITS的url,一般默认即可
    "text_language": "ja", # 模型发送的语音语言(如果为中文之外的语言,需要在Dify端修改提示词)常用的:中文(zh),英文(en),日文(ja)
    "call_back_success_falg": false, # 推荐设置为false,这样会少很多莫名其妙的bug
    "is_remote_server": false, # 是否为远程服务器,本地部署的就填false
    "debug_mode": true, # 可以不改
    "log_level": "DEBUG", # 可以不该
    "start_time": 1742287344.8490422 # 自动生成
}

💡 提示:参考项目中的config.example.json获取完整配置示例

❗注意事项

💡 微信回调配置

  • 首次运行时,系统会自动配置Gewechat的回调地址
  • 新设备在次日凌晨可能会自动掉线(微信安全机制)
  • 有时候隔了一天也有可能发消息后没反应
  • 解决方案:
    1. config.json中的call_back_success_falg设为false
    2. 重新扫码登录
    3. 登录成功后将自动call_back_success_falg改回true
  • 新版本增加了回调设置的自动判断,省去了这一步
  • 为减少回调设置误判的可能性,请在小号扫码登录后,在小号上点击进入与大号的聊天界面以触发状态同步消息
  • 一般来说,在扫码登录过后,回调设置都会成功

📦 FFmpeg安装指南

根据您的操作系统选择合适的安装方式(鼠标单击环境打开折叠):

Windows 系统
# 方式1:使用Anaconda
conda install -c conda-forge ffmpeg

# 方式2:手动安装,前往https://github.com/BtbN/FFmpeg-Builds/releases
# 然后下载ffmpeg-master-latest-win64-gpl.zip
# 解压到某个文件夹内(我这里解压到了本项目的voice_model文件夹中,然后重命名其为ffmpeg)
# 然后需要添加环境变量,将ffmpeg中的名为bin的文件夹添加到系统环境变量中即可
# 验证方法:
ffmpeg -version

# 方式3:使用Chocolatey
choco install ffmpeg
.venv 虚拟环境/pip安装
# 1. 打开cmd, 进入项目文件夹
# 2. 激活虚拟环境 
.venv\Scripts\activate
# 3. 使用pip安装ffmpeg
pip install ffmpeg-python
# 4. 同上方Windows安装一样,需要设置环境变量
set PATH=你的ffmpeg安装的绝对路径\bin;%PATH%
Linux 系统
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg

# CentOS/RHEL
sudo yum install ffmpeg
macOS 系统
# 使用Homebrew
brew install ffmpeg

⚠️ 重要提示

  • 推荐使用Anaconda环境,实测这样安装更加简单
  • 安装完成后请确保FFmpeg已添加到系统环境变量
  • 如遇到"路径不存在"错误,请检查环境变量配置
  • Windows用户可在系统变量Path中添加FFmpeg所在目录

⭐️ 发送#设置后显示为:None

  • 原因:Gradio缺少依赖项,一般这个都会有问题,初次启动程序的时候控制台有如下类似内容:
Could not create share link. Missing file: xxx/Lib/site-packages/gradio/frpc_windows_amd64_v0.3
Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps:
1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_windows_amd64.exe
2. Rename the downloaded file to: frpc_windows_amd64_v0.3
3. Move the file to this location: xxx/Lib/site-packages/gradio
  • 解决方案:
    1. 下载frpc_windows_amd64
    2. 重命名该文件为:frpc_windows_amd64_v0.3(注意是完全改成这个名字,没有后缀.exe)
    3. 移动该文件到: xxx/Lib/site-packages/gradio, 其中xxx可以在控制台看到,就是你的python环境的位置

❗Gewechat创建失败(作者在这里踩了许多坑了)

如果遇到gewechat创建设备失败,unexpected EOF错误,请排查网络是否是以下情况:

1️. 代理:请关闭代理后尝试;

2️. 国外服务器;

3️. 回调地址为外网;

4️. 异地服务器

🛠️ 环境依赖

  • Dify环境:必须确保Dify正确部署,这是使用大模型能力的基础
  • GPT-SoVITS:如需语音功能,请先完成部署
  • 本地模型:支持使用LM Studio或Ollama部署本地模型
    • 在Dify模型配置界面中选择对应选项
    • 可根据需求进行深度定制

📊 主要依赖

依赖包 版本 用途
gradio 5.21.0 Web界面框架,用于构建设置页面
web.py 0.62 Web服务框架,处理回调和API请求
requests 2.32.3 HTTP请求库,用于与各服务通信
ffmpeg-python 0.2.0 音频格式转换,处理语音消息
pilk 0.2.4 微信语音编码处理
pysilk 0.0.1 SILK格式音频处理
qrcode 7.4.2 二维码生成,用于微信登录

💡 安装提示

  • 建议使用Anaconda环境安装依赖:
    conda create -n wxchatbot python=3.11
    conda activate wxchatbot
    # 确保当前在项目路径下
    pip install -r requirements.txt
  • 某些依赖(如 gradio)会自动安装其他必要的包
  • 确保系统已安装 FFmpeg(参考上方安装指南)

🚀 开发计划

近期计划

  • 完善ChatFlow相关功能
  • 优化Web设置界面
  • 微信发送语音开关
  • 正式发布V1.0.0版本
  • 一键部署的整合包(自带环境)
  • 视频/教程

后期计划

  • 可设置的主动发送消息功能
  • 用户可设置(自定义)在一定时间段内多次发送消息,Dify那边能够一次性处理
  • 批处理操作(针对需要多次执行的指令)
  • 增加web端的功能(支持新建对话、删除对话、修改提示词等等)
  • 表情包发送
  • 支持群聊
  • 支持文档上传及处理
  • 支持视频、图片识别等
  • 用户可以发送语音
  • QQ移植
  • 长文本网页markdown渲染

❤️ 赞助支持

💝 支持我

你的支持是持续改进这个项目的动力!感谢!!

🎯 你的支持将用于:
🎓 制作开源教程和文档 · 💡 开发更多实用功能 · 🌍 建设开源社区 · 🔥 探索AI应用新可能
微信支付 支付宝

微信 | 支付宝

🔒 赞助计划

🎯 基础服务 🌟 进阶服务 💎 专属服务
📱 私有化部署方案
🔧 远程指导安装与配置
💻 问题解决与故障排查
🤖 AI模型私有化部署与调优
🎨 定制对话流程与场景
📊 专属知识库构建
📘 源码深度解析
🛠️ 项目二次开发技术咨询
💡 方案应用定制

💼 商务合作/赞助咨询:微信 Norcoo (备注:wxChatBot)

💬 核心交流群

群类型 群号 状态
✨ 交流群 953715009 ✅ 已开放
🎁 赞助群 1040728529 ✅ 已开放

🤝 贡献指南

感谢你对项目的关注!欢迎各种形式的贡献

🌟 贡献方式

  1. 🐛 问题反馈

    • 详细描述遇到的问题
    • 提供复现步骤和相关日志
    • 说明运行环境和相关配置
  2. 💡 功能建议

    • 描述新功能的用途和应用场景
    • 提供设计思路或参考实现
    • 分享使用过程中的想法
  3. 📝 文档改进

    • 修正文档中的错误
    • 补充安装和配置说明
    • 添加使用示例和最佳实践
    • 翻译文档到其他语言
  4. 💻 代码贡献

    • 修复已知bug
    • 开发新功能
    • 优化性能
    • 重构代码结构

🎯 开发指南

  • 项目代码完善后将提供详细的开发指南(施工中~)

🔄 更新日志

2025-03-25

  • 完善网页部分的更新处理机制,实现热更改配置,自动刷新
  • 新增:可通过网页配置chatflow以及chat记录的增加和删除

2025-03-19

  • 完善README文档内容和排版

2025-03-17

  • 优化图片排版,添加英文文档支持
  • 增加配置文件示例
  • 添加项目介绍和示例图片
  • GPT-SoVITS连接成功,实现自定义语音生成
  • 实现微信语音消息发送功能

2025-03-12

  • 初始项目框架搭建
  • 基础功能测试

📄 许可证

本项目使用 MIT 许可证。详情请参阅 LICENSE 文件

🌟 致谢

感谢以下开源项目的支持:

📜 项目声明

  • 本项目仅供技术研究与学习交流
  • 禁止用于任何违法或不道德的场景
  • 生成内容不代表开发者立场和观点
  • 使用者需对自身行为负责
  • 开发者不对因使用本项目产生的问题承担责任

如果这个项目对你有帮助,欢迎Star支持!⭐️

About

支持接入Dify的微信聊天机器人,支持Workflow,可自定义编排AI作业任务,原生支持永久记忆功能,支持GPT-SoVITS自定义音色,能够发送原生微信语音气泡

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 99.5%
  • Other 0.5%