[!IMPORTANT]
本项目依赖的 itchat 与 gewechat 项目均无法使用,已无法接入微信个人号
支持基本的 Dify Workflow API。
开发本项目的初衷是为了补充上游 ChatGPT on WeChat 项目未提供的、接入 Dify 这类免费开源 LLMOps 平台的功能。在维护过程中,我也学到了很多有用的技术。
请大家在使用本项目时务必遵守相关法律法规。希望此项目能为大家增添生活趣味与便利、提升工作效率,或创造更多价值。
例如,有朋友使用本项目开发了 小x宝——一个癌症相关的公益项目,帮助患者和家属 7x24 小时获取医疗信息,同时降低了人工运营社群的成本。很高兴本项目能为此做出一些贡献。
目前 Dify 已测试过的通道如下:
欢迎加入 🤖 大模型/知识库/bot 交流群,不仅能及时获取本项目版本更新公告,还可以一起交流 AI 相关知识!
另外,群里近期在组织每周 AI 技术分享,欢迎大家进群观看,也欢迎大家报名分享。主讲嘉宾可获得一个月 ChatGPT Plus 或 Cursor 会员福利,欢迎填写问卷报名。
往期分享回放
|
|
| :------------------------------------------------------: | :------------------------------------------------------: |
|
|
|
| 添加我的微信拉你进交流群 | 开源不易,感谢打赏 🎉 |
基于 Gewechat 项目实现的微信个人号通道,使用 iPad 协议登录,相比 itchat 协议更稳定。
- gewechat 要求必须将服务部署到同省服务器或本地电脑方可正常使用。
- 此项目仅用于个人娱乐场景,请勿用于任何商业场景。
⚠️ 注意:目前
channel_type: "wx"对应的 itchat 无法使用,请更换为gewechat。
dify-on-wechat、dify、gewechat 服务的调用关系:
# 从阿里云镜像仓库拉取(国内)
docker pull registry.cn-chengdu.aliyuncs.com/tu1h/wechotd:alpine
docker tag registry.cn-chengdu.aliyuncs.com/tu1h/wechotd:alpine gewe
# 创建数据目录并启动服务
mkdir -p gewechat/data
docker run -itd -v ./gewechat/data:/root/temp -p 2531:2531 -p 2532:2532 --restart=always --name=gewe gewe
gewechat 相关配置如下,注意 channel_type 设置为 gewechat。
{
"channel_type": "gewechat", // 通道类型设置为 gewechat
"gewechat_token": "", // 首次登录可留空,自动获取
"gewechat_app_id": "", // 首次登录可留空,自动获取
"gewechat_base_url": "http://本机ip:2531/v2/api", // gewechat 服务 API 地址
"gewechat_callback_url": "http://本机ip:9919/v2/api/callback/collect", // 回调地址
"gewechat_download_url": "http://本机ip:2532/download" // 文件下载地址
}
本机 ip 是指局域网 ip 或公网 ip,可通过
ipconfig或ifconfig命令查看。对于
gewechat_callback_url,ip 不能填127.0.0.1或localhost,否则会报错。
9919端口是 dify-on-wechat 服务监听的端口,如果使用 docker 启动 dify-on-wechat 服务,请将9919端口映射到宿主机。
请务必查看详细配置:gewechat 接入文档
python app.py
启动成功后,可以看到如下日志信息。注意 token 和 appid 会自动保存到 config.json,无需手动保存。
⚠️ 如果遇到 gewechat 创建设备失败,出现 unexpected EOF 错误,请排查网络是否为以下情况:
1️⃣ 代理:请关闭代理后尝试;
2️⃣ 国外服务器;
3️⃣ 回调地址为外网;
4️⃣ 异地服务器。
新增用户信息对接 Dify 的能力,会将用户 ID、用户名称、群聊 ID、群聊名称信息传递给 Dify。搭配 gewechat_channel 提供的 wxid 与 chatroomid,可以在 Dify 中识别每个用户,实现个性化服务。详细教程请查看:用户信息对接 Dify
- 存在封号风险,请使用企业微信小号测试。
- 登录旧版本企业微信时可能出现版本过低无法登录的情况,参考 issue1525,请尝试更换其他企业微信号重试。
参考 手摸手教你把 Dify 接入微信生态,下载本项目并安装 Python 依赖。
由于 ntwork 的安装源不稳定,可以下载对应的 whl 文件进行离线安装。
首先查看你的 Python 版本,在命令行中输入 python 查看版本信息。然后在 ntwork-whl 目录下找到对应的 whl 文件,运行 pip install xx.whl 安装 ntwork 依赖,注意将 "xx.whl" 替换为 whl 文件的实际路径。
例如,我的 Python 版本信息为:
"Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]"
可以看到 Python 版本是 3.8.5,并且是 AMD64,所以对应的 whl 文件为 ntwork-0.1.3-cp38-cp38-win_amd64.whl,需要执行如下命令安装:
pip install your-path/ntwork-0.1.3-cp38-cp38-win_amd64.whl
在项目根目录创建名为 config.json 的文件,内容如下。请根据教程 手摸手教你把 Dify 接入微信生态 获取 dify_api_base、dify_api_key、dify_app_type 信息。注意 channel_type 填写为 wework。
{
"dify_api_base": "https://api.dify.ai/v1",
"dify_api_key": "app-xxx",
"dify_app_type": "chatbot",
"channel_type": "wework",
"model": "dify",
"single_chat_prefix": [""],
"single_chat_reply_prefix": "",
"group_chat_prefix": ["@bot"],
"group_name_white_list": ["ALL_GROUP"]
}
务必提前在电脑上扫码登录企业微信。
运行如下命令启动机器人:
python app.py
我们可以看到终端输出如下信息,等待 wework 程序初始化完成,最后启动成功~
[INFO][2024-04-30 21:16:04][wework_channel.py:185] - 等待登录······
[INFO][2024-04-30 21:16:05][wework_channel.py:190] - 登录信息:>>>user_id:xxx>>>>>>>>name:
[INFO][2024-04-30 21:16:05][wework_channel.py:191] - 静默延迟60s,等待客户端刷新数据,请勿进行任何操作······
[INFO][2024-04-30 21:17:05][wework_channel.py:224] - wework程序初始化完成········
使用 Jina Reader 和 ChatGPT 支持总结公众号、小红书、知乎等分享卡片链接。配置详情请查看 JinaSum。
支持根据群聊名称关键词自动切换不同的 Dify 应用,也支持为单聊配置专门的 Dify 应用。
例如,在与 AI 助手私聊时,自动调用企业内部员工助手 Dify 应用;在“xx平台技术支持”群中 @AI 助手时,则自动切换至该平台的技术支持 Dify 应用。
配置详情请查看 CustomDifyApp。
Dify 官网已正式上线工作流模式,可以导入本项目下的 dsl 文件 快速创建工作流进行测试。工作流输入变量名称十分灵活,对于工作流类型的应用,本项目约定工作流的输入变量命名为 query,输出变量命名为 text。
(ps:感觉工作流类型应用不太适合作为聊天机器人,目前它还没有会话的概念,需要自己管理上下文。但它可以调用各种工具,通过 HTTP 请求与外界交互,适合执行业务逻辑复杂的任务;可以导入导出工作流 dsl 文件,方便分享移植。也许未来 dsl 文件 + 配置文件可以作为本项目的一个插件。)
请参照 快速开始 步骤克隆源码并安装依赖。
按照下方 Coze API config.json 示例文件进行配置。
以下是对默认配置的说明,可根据需要进行自定义修改(如果复制下方的示例内容,请去掉注释):
{
"coze_api_base": "https://api.coze.cn", // coze base url
"coze_api_key": "xxx", // coze api key
"coze_bot_id": "xxx", // 根据 url 获取 coze_bot_id https://www.coze.cn/space/{space_id}/bot/{bot_id}
"channel_type": "gewechat", // 通道类型,当前为个人微信
"model": "coze", // 模型名称,当前对应 coze 平台
"single_chat_prefix": [""], // 私聊时文本需要包含该前缀才能触发机器人回复
"single_chat_reply_prefix": "", // 私聊时自动回复的前缀,用于区分真人
"group_chat_prefix": ["@bot"], // 群聊时包含该前缀则会触发机器人回复
"group_name_white_list": ["ALL_GROUP"] // 机器人回复的群名称列表
}
上述示例文件是个人微信对接 Coze 的极简配置。详细配置说明请查看 config.py。注意不要修改 config.py 中的值,config.py 仅用于校验 key 是否有效,最终生效的配置请在 config.json 中修改。
python3 app.py # windows 环境下该命令通常为 python app.py
特别感谢 @绛烨 提供内测 Coze API key。
Dify 语音相关配置如下。另外需要在 Dify 应用中开启语音转文字以及文字转语音功能。注意语音功能需要安装 ffmpeg 依赖。
{
"dify_api_base": "https://api.dify.ai/v1",
"dify_api_key": "app-xxx",
"dify_app_type": "chatbot",
"speech_recognition": true, // 是否开启语音识别
"voice_reply_voice": true, // 是否使用语音回复语音
"always_reply_voice": false, // 是否一直使用语音回复
"voice_to_text": "dify", // 语音识别引擎
"text_to_voice": "dify" // 语音合成引擎
}
⚠️ 注意:在 Dify 应用中开启