搭建基于Github开源项目ChatGPT的微信聊天机器人教程

# 搭建基于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) 实现

# 准备工作

  1. 科学上网的环境
  2. chatgpt账号,并且获取到 openAI API key API管理界面 (opens new window)
  3. 本次测试使用的是微软云-美国节点,系统: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)
1
2
3
4
5

# 克隆项目代码

# git clone https://github.com/zhayujie/chatgpt-on-wechat
# cd chatgpt-on-wechat/
1
2

# 安装核心依赖

能够使用itchat创建机器人,并具有文字交流功能所需的最小依赖集合

# pip3 install -r requirements.txt
1

执行该命令后会自动安装所需的各种依赖,静待安装完成即可。

image-20230713140733856

# 修改配置文件

配置文件的模板在根目录的config-template.json中,需复制该模板创建最终生效的 config.json 文件:

# cp config-template.json config.json
# vi config.json
1
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 查看详细指令。"
} 
1
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字段用于设置启用聊天机器人的群里,只有把群聊名称写到这个数组里才支持在这个群聊中与机器人对话。
1
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  在后台运行程序并通过日志输出二维码
1
2

image-20230713153204494

微信小号(即充当机器人的微信号) 扫码登录后程序即可运行于服务器后台,此时可通过 ctrl+c 关闭日志,不会影响后台程序的运行。使用

ps -ef | grep app.py | grep -v grep 命令可查看运行于后台的进程。

如果想要重新启动程序可以先 kill 掉对应的进程。日志关闭后如果想要再次打开只需输入 tail -f nohup.out。此外,scripts 目录下有一键运行、关闭程序的脚本供使用。

多账号支持: 将项目复制多份,分别启动程序,用不同账号扫码登录即可实现同时运行。 特殊指令: 用户向机器人发送 #reset 即可清空该用户的上下文记忆。

登录后,手机登录微信小号,可以看到显示电脑已登录。

# 实际效果

image-20230713155830837

# 解决微信登录报错

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'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

微信没有实名认证的,实名认证即可。

# railway部署(简单,收费故放弃)

# 点击一键部署

image-20230713113534603

# deploy now

image-20230713113214751

# 授权

image-20230713113237716

# 填写配置

image-20230713114544444

# 需要收费,放弃。

image-20230713131738975

作者的新项目:https://github.com/zhayujie/bot-on-anything

将 ChatGPT、必应、文心一言、谷歌Bard 等对话模型连接各类应用,如微信、公众号、QQ、Telegram、Gmail、Slack、Web、企业微信、飞书、钉钉等。