在微信公众号中接入AI聊天机器人

大家好!今天来介绍一下如何在微信公众号中接入自己的AI聊天机器人。微信公众号一般分为两种,订阅号和服务号。个人订阅号可以自由申请,无需企业资质审核,因此每个人都可以用这种方式在微信中接入自己的ChatGPT AI聊天机器人,可以分享给家人和朋友们使用。文末有演示效果。

下面我们就开始一步步具体介绍。本文作者为香菇肥牛,原文链接为https://qing.su/article/ai-chatbot-wechat.html, 转载请注明原文链接,谢谢。

前排声明:本文仅作为技术教程,请自行参考微信相关的规定;如果因为部署聊天机器人导致封号等额外后果,与本人无关哈。

 

1. 申请并设置微信个人订阅号

申请个人订阅号很简单,只需要去https://mp.weixin.qq.com按照指引申请就可以了。

申请完毕后,点击管理页面左侧的“设置与开发” – ”开发接口管理“,启用开发者模式,找到自己的开发者ID,生成一个开发者密码,并且启用“服务器配置”。

 

2. 申请API接口

这里,我们以GPT/OpenAI为例,简单介绍一下API申请。您也可以接入其他的API, 比如Anthropic Claude, 以及其他的国产大模型等等。

首先在官网上注册一个账号。这里不推荐用第三方API转发平台,原因是微信个人号有15秒的回复限制,超过之后用户需要再额外输入一次才会得到回复;第三方API转发平台的延迟通常会比较严重,有时会产生超时,导致用户体验较差。官方API一般就没有这种问题。

访问https://platform.openai.com注册一个账号,然后生成API。

保存好生成的API, 后面需要用到。

 

3. 在服务器中搭建聊天机器人服务

我们使用chatgpt-on-wechat程序实现能够接入微信的聊天机器人。这套程序可以用Python自行在服务器上部署,也可以使用Docker.  这里我们使用Docker简单地部署。

首先,新建一个docker-compose.yml文件,内容如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
version: '2.0'
services:
  chatgpt-on-wechat:
    image: zhayujie/chatgpt-on-wechat
    container_name: chatgpt-on-wechat
    security_opt:
      - seccomp:unconfined
    ports:
      - "8020:8020"
    environment:
      OPEN_AI_API_KEY: 'sk-proj-xxxxxxxxxx'
      MODEL: 'gpt-4o-mini'
      PROXY: ''
      SINGLE_CHAT_PREFIX: '["bot"]'
      SINGLE_CHAT_REPLY_PREFIX: '"[机器人] "'
      GROUP_CHAT_PREFIX: '["@bot"]'
      GROUP_NAME_WHITE_LIST: '["ALL_GROUP"]'
      IMAGE_CREATE_PREFIX: '["画"]'
      CONVERSATION_MAX_TOKENS: 1000
      SPEECH_RECOGNITION: 'False'
      CHARACTER_DESC: '你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
      EXPIRES_IN_SECONDS: 3600
      USE_GLOBAL_PLUGIN_CONFIG: 'True'
      USE_LINKAI: 'False'
      LINKAI_API_KEY: ''
      LINKAI_APP_CODE: ''
      RATE_LIMIT_CHATGPT: 5
      RATE_LIMIT_DALLE: 2
      SUBSCRIBE_MSG: '感谢您的关注!这里是qing.su,你可以和我聊天,所有聊天内容用bot开头。'
      CHANNEL_TYPE: 'wechatmp'
      WECHATMP_APP_ID: 'wxxxxxxxxx'
      WECHATMP_APP_SECRET: 'xxxxxxxxxxxxxxxxxxxxx'
      WECHATMP_AES_KEY: ''
      WECHATMP_TOKEN: 'xxxxxxxxtoken'
      WECHATMP_PORT: 8020

在OPEN_AI_API_KEY中,填写你自己的OpenAI API密钥。Model中填写你想使用的模型,比如我这里用的是gpt-4o-mini.  SINGLE_CHAT_PREFIX填写聊天前缀,只有用这个词开头才会触发AI自动回复。

后面的WECHATMP_APP_ID, WECHATMP_APP_SECRET需要填写刚才在微信公众号后台上面的开发者ID和开发者密码。WECHATMP_TOKEN中随便写一些英文字符,后面需要用到。

保存退出后,我们运行这个docker.

1
docker-compose up -d

运行之后,我们访问http://your_ip_address:8020/wx, 应该可以看到一片白屏,上面有一行’signature’, 说明运行成功了。

4. 配置Nginx反代

搭建好的服务运行在服务器8020端口中。微信公众号仅仅支持80和443端口的调用。如果您的服务器只运行这一个服务,那么可以直接把docker运行在80端口。如果您像我一样,服务器上有很多其他的程序,就需要把这个服务反代到80端口。这里我们使用最简单的Nginx来反代。

1
apt-get install nginx -y

然后新建一个配置文件 /etc/nginx/conf.d/wechat-chatbot.conf, 内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
        listen 80;
        listen [::]:80;
        server_name qing.su;

        access_log  /var/log/nginx/wechat_access.log;
        error_log  /var/log/nginx/wechat_error.log;

        location /wx {
                    proxy_pass http://127.0.0.1:8020/wx;
                    proxy_buffering off;
                    proxy_http_version 1.1;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection $http_connection;
        }
        location / {
                    proxy_pass http://127.0.0.1:8020/;
                    proxy_buffering off;
                    proxy_http_version 1.1;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection $http_connection;
        }
}

请将qing.su替换为您自己的域名。保存退出后,执行

1
2
nginx -t
service nginx reload

这样,访问http://your.domain.name/wx应该就能打开和刚才一样的界面了。

 

5. 配置微信公众号

搭建好了服务之后,我们再回到公众号后台。

首先,在开发接口管理中点击服务器配置,来到如下的界面。

[URL]中填写我们刚刚搭好的服务器的地址,以/wx结尾。比如,我这里填写http://qing.su/wx

[Token]中填写刚刚在docker-compose.yml中的那串Token字符。

[消息加解密方式]选择明文模式即可。

然后,点击提交,成功保存之后,我们就完成了全部的搭建过程。

 

这样,我们就搭建好了能够接入微信公众号的聊天机器人程序,并接入了个人订阅号,可以分享给家人朋友们使用了。

如果您有任何疑问,欢迎在这里留言讨论。本文作者为香菇肥牛,原文链接为https://qing.su/article/ai-chatbot-wechat.html, 转载请注明原文链接,谢谢。

7 thoughts on “在微信公众号中接入AI聊天机器人”

  1. 我在宝塔面板里面部署的容器,访问http://域名+端口/wx是正常显示的,问下这种情况该如何设置反代去掉端口?小白一个

    Reply
    • 额,我还真没用过宝塔… 我搜了下,宝塔里面好像可以直接设置反代?那按照我给的那个Nginx的配置文件填进去应该就可以了

      Reply

Leave a Comment