在微信公众号中加入ChatGPT聊天的方法
#公众号 #聊天
1 介绍
开源项目 "chatgpt-on-wechat" 支持通过微信公众号进行调用,这意味着用户可以在与公众号的交互中体验 ChatGPT。由于服务是部署在远端服务器上的,因此用户只需拥有一部手机,就可以在任何环境下与 ChatGPT 进行交流。例如:
为了实现这一功能,至少需要以下资源:
- 拥有 OPENAI 账号,并能通过 token 来调用聊天工具。
- 注册并管理一个微信公众号。
- 拥有一个配备域名的服务器,或者可以使用托管服务器。
实现这项功能的工作流程可以分为两个主要步骤:
- 在服务器上部署并配置 chatgpt-on-wechat 服务。
- 在微信公众号后台设置并链接服务器。
虽然 chatgpt-on-wechat 的开源项目中已经提供了详细的使用指南,但在实际部署过程中,我还是遇到了一些小问题。以下记录了我操作的大致步骤,及注意事项。
chatgpt-on-wechat 帮助文档:https://github.com/zhayujie/chatgpt-on-wechat/blob/master/channel/wechatmp/README.md
2 方法
2.1 服务器端配置
下载配置文件:
1 | wget https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml |
修改 yml 文件,我在其中加入了目录映射,以方便后续调试;另外,千万注意映射端口。由于该项目默认以普通聊天模型启动,因此并未对外映射端口。然而,微信公众号的服务模型需要通过 Web 方式提供服务,这就需要端口进行外部映射。
1 | volumes: |
启动镜像
1 | su # 切换 root 用户 |
用 docker images 可以看到 zhayujie/chatgpt-on-wechat 大小为 1.48GB,也不算太大。
进入 docker:
1 | docker exec -it chatgpt-on-wechat bash |
如果帐号主体为个人,则无法开通微信认证。个人用户在 config.py 中需设置 channel_type 为 wechatmp。
修改 config.json,至少设置以下内容:
1 | "channel_type": "wechatmp", # 如果通过了微信认证,将"wechatmp"替换为"wechatmp_service",可极大的优化使用体验 |
设置好之后启动 app.py
1 | $ python app.py |
2.2 设置公众号
2.2.1 设置方法
- 使用浏览器登录微信公众号界面。
- 在公众号界面,选择左侧的 " 设置与开发 " -> " 基本配置 "。
- 进行服务器配置的修改。
- 特别需要注意的是,服务器地址必须加上 /wx,例如:http://xxx.com/wx。
- 点击“启用”按钮。如果操作反应较慢,没有立即生效,可以稍等一会再刷新。
2.2.2 注意事项
- 如果希望提供其他公众号调试功能,可以通过以下路径进行开发调试:公众号界面 -> 开发者工具 -> 在线接口调试工具。
- 服务只允许设置 http 端口 80 和 https 端口 443,而一般情况下我们网站的 Web 端口都会被占用,如果遇到这种情况,建立使用 nginx 反向代理 对请求分流。Web服务_Nginx
由于我的微信公众号是个人号,因此并未开启客服接口,这意味着公众号无法主动发送消息,只能被动回复。微信官方对被动回复设有 5 秒的时间限制,并且最多只能重试 2 次,这就意味着只有最多 15 秒的自动回复时间窗口。也就是说,如果在 15 秒内 ChatGPT 还没有返回结果,那么就无法对用户回复。
另外,由于对话功能需要使用 token,会产生一定的费用。因此,在我的公众号中,我会在稍微限制一下这项功能后才会开启它。