# 搭建基于Github开源项目ChatGPT的微信聊天机器人教程
# 项目介绍
ChatGPT近期以强大的对话和信息整合能力风靡全网,可以写代码、改论文、讲故事,几乎无所不能,这让人不禁有个大胆的想法,能否用他的对话模型把我们的微信打造成一个智能机器人,可以在与好友对话中给出意想不到的回应,而且再也不用担心女朋友影响我们 打游戏 工作了。
Github地址:https://github.com/zhayujie/chatgpt-on-wechat (opens new window)
# 项目功能
- 多端部署: 有多种部署方式可选择且功能完备,目前已支持个人微信,微信公众号和企业微信应用等部署方式
- 基础对话: 私聊及群聊的消息智能回复,支持多轮会话上下文记忆,支持 GPT-3,GPT-3.5,GPT-4模型
- 语音识别: 可识别语音消息,通过文字或语音回复,支持 azure, baidu, google, openai等多种语音模型
- 图片生成: 支持图片生成 和 图生图(如照片修复),可选择 Dell-E, stable diffusion, replicate模型
- 丰富插件: 支持个性化插件扩展,已实现多角色切换、文字冒险、敏感词过滤、聊天记录总结等插件
- Tool工具: 与操作系统和互联网交互,支持最新信息搜索、数学计算、天气和资讯查询、网页总结,基于 chatgpt-tool-hub (opens new window) 实现
# 准备工作
- 科学上网的环境
- chatgpt账号,并且获取到 openAI API key API管理界面 (opens new window)
- 本次测试使用的是微软云-美国节点,系统:ubuntu 22.04
# 安装环境
# python环境
本机的版本是3.10.6,如果没有请安装,还需要pip3
# python3 --version
Python 3.10.6
# apt install python3-pip
# pip3 --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
2
3
4
5
# 克隆项目代码
# git clone https://github.com/zhayujie/chatgpt-on-wechat
# cd chatgpt-on-wechat/
2
# 安装核心依赖
能够使用itchat创建机器人,并具有文字交流功能所需的最小依赖集合
# pip3 install -r requirements.txt
执行该命令后会自动安装所需的各种依赖,静待安装完成即可。
# 修改配置文件
配置文件的模板在根目录的config-template.json中,需复制该模板创建最终生效的 config.json 文件:
# cp config-template.json config.json
# vi config.json
2
然后修改config.json文件,按需求更改配置:
# config.json文件内容示例
{
"open_ai_api_key": "YOUR API KEY", # 填入上面创建的 OpenAI API KEY
"model": "gpt-3.5-turbo", # 模型名称。当use_azure_chatgpt为true时,其名称为Azure上model deployment名称
"proxy": "127.0.0.1:7890", # 代理客户端的ip和端口
"single_chat_prefix": ["bot", "@bot"], # 私聊时文本需要包含该前缀才能触发机器人回复
"single_chat_reply_prefix": "[bot] ", # 私聊时自动回复的前缀,用于区分真人
"group_chat_prefix": ["@bot"], # 群聊时包含该前缀则会触发机器人回复
"group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"], # 开启自动回复的群名称列表
"group_chat_in_one_session": ["ChatGPT测试群"], # 支持会话上下文共享的群名称
"image_create_prefix": ["画", "看", "找"], # 开启图片回复的前缀
"conversation_max_tokens": 1000, # 支持上下文记忆的最多字符数
"speech_recognition": false, # 是否开启语音识别
"group_speech_recognition": false, # 是否开启群组语音识别
"use_azure_chatgpt": false, # 是否使用Azure ChatGPT service代替openai ChatGPT service. 当设置为true时需要设置 open_ai_api_base,如 https://xxx.openai.azure.com/
"azure_deployment_id": "", # 采用Azure ChatGPT时,模型部署名称
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。", # 人格描述
# 订阅消息,公众号和企业微信channel中请填写,当被订阅时会自动回复,可使用特殊占位符。目前支持的占位符有{trigger_prefix},在程序中它会自动替换成bot的触发词。
"subscribe_msg": "感谢您的关注!\n这里是ChatGPT,可以自由对话。\n支持语音对话。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持角色扮演和文字冒险等丰富插件。\n输入{trigger_prefix}#help 查看详细指令。"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
以下内容必须修改:
· open_ai_api_key:替换为你的key,注意用双引号包裹。
· proxy:修改为"x.x.x.x:7890",这是之前启动的代理客户端监听的ip和端口。因为我是在服务器是可以直接连接chatgpt的,所有不用配置
另外,group_name_white_list字段用于设置启用聊天机器人的群里,只有把群聊名称写到这个数组里才支持在这个群聊中与机器人对话。
2
3
4
5
详细的配置说明参见项目自述文件: https://github.com/zhayujie/chatgpt-on-wechat#%E9%85%8D%E7%BD%AE
# 运行程序
配置完成后,使用nohup命令在后台运行程序:
# touch nohup.out 首次运行需要新建日志文件
# nohup python3 app.py & tail -f nohup.out 在后台运行程序并通过日志输出二维码
2
用微信小号(即充当机器人的微信号) 扫码登录后程序即可运行于服务器后台,此时可通过 ctrl+c 关闭日志,不会影响后台程序的运行。使用
ps -ef | grep app.py | grep -v grep
命令可查看运行于后台的进程。
如果想要重新启动程序可以先 kill 掉对应的进程。日志关闭后如果想要再次打开只需输入 tail -f nohup.out。此外,scripts 目录下有一键运行、关闭程序的脚本供使用。
多账号支持: 将项目复制多份,分别启动程序,用不同账号扫码登录即可实现同时运行。 特殊指令: 用户向机器人发送 #reset 即可清空该用户的上下文记忆。
登录后,手机登录微信小号,可以看到显示电脑已登录。
# 实际效果
# 解决微信登录报错
Please press confirm on your phone.
[ERROR][2023-07-13 06:26:36][app.py:52] - App startup failed!
[ERROR][2023-07-13 06:26:36][app.py:53] - 'wxsid'
Traceback (most recent call last):
File "app.py", line 50, in run
channel.startup()
File "/chatgpt-on-wechat/channel/wechat/wechat_channel.py", line 115, in startup
itchat.auto_login(
File "/chatgpt-on-wechat/lib/itchat/components/register.py", line 38, in auto_login
self.login(enableCmdQR=enableCmdQR, picDir=picDir, qrCallback=qrCallback,
File "/chatgpt-on-wechat/lib/itchat/components/login.py", line 61, in login
status = self.check_login()
File "/chatgpt-on-wechat/lib/itchat/components/login.py", line 154, in check_login
if process_login_info(self, r.text):
File "/chatgpt-on-wechat/lib/itchat/components/login.py", line 206, in process_login_info
core.loginInfo['wxsid'] = core.loginInfo['BaseRequest']['Sid'] = cookies["wxsid"]
KeyError: 'wxsid'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
微信没有实名认证的,实名认证即可。
# railway部署(简单,收费故放弃)
# 点击一键部署
# deploy now
# 授权
# 填写配置
# 需要收费,放弃。
作者的新项目:https://github.com/zhayujie/bot-on-anything
将 ChatGPT、必应、文心一言、谷歌Bard 等对话模型连接各类应用,如微信、公众号、QQ、Telegram、Gmail、Slack、Web、企业微信、飞书、钉钉等。