大家好!今天来介绍一下如何在微信公众号中接入自己的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, 转载请注明原文链接,谢谢。
额 这样能绕过墙? 微信怎么对接openai
这个需要自己部署在服务器上的,服务器放在墙外就可以了~
大佬能接自己的API中转么
我在宝塔面板里面部署的容器,访问http://域名+端口/wx是正常显示的,问下这种情况该如何设置反代去掉端口?小白一个
额,我还真没用过宝塔… 我搜了下,宝塔里面好像可以直接设置反代?那按照我给的那个Nginx的配置文件填进去应该就可以了