快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]

时间:2023-01-12 07:58:56

一、cqhttp

1. 下载cqhttp

首先安装 cqhttp 框架,我们从 release 界面下载最新版本的 go-cqhttp,需要根据不同的系统选择不同的文件
我目前是mac系统,暂时仅举例macOs
Intel 版 Macos: go-cqhttp_darwin_amd64.tar.gz

2. 启动

解压下载的压缩包
将文件放入你项目的文件夹里
进入你的项目文件夹
以vscode中进行项目运行与管理举例
快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
command + j 打开终端(反正只要在这个文件夹中打开终端就行)
运行命令 ./go-cqhttp
首次启动时,cqhttp会读取当前目录下是否有config.yml文件如果没有则会生成一个配置文件。
随后根据提示选择编号3(因为nonebot暂时只有反向socket),重新启动后如果成功会显示如下信息:
快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
在这个文件夹中,多了一个config.yml的配置文件。
修改两个地方:

  1. QQ账号(在配置文件第4-5行)第一个是qq号,第二是密码,不填可以用扫二维码登录
account: # 账号相关
  uin: 1233456 # QQ账号
  password: '' # 密码为空时使用扫码登录
  1. 反向 websocket 服务器地址(第99行)修改为如下所示
- ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal: ws://127.0.0.1:8080/onebot/v11/ws

配置好后记得保存,再次运行命令 ./go-cqhttp
在vscode的终端控制台会有log信息,并弹出二维码,用刚刚配置文件中的qq账号扫码登录,即可看到下面的信息。并且会在文件夹里生成 session.token 的文件,即是你登录状态的token,下次运行时不再需要登录。

快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
至此 cqhttp 部分结束。

二、NoneBot

1. 安装

确保python版本在3.8以上,我这里用的是目前最新的python3.11。

在当前项目根目录下,使用venv创建一个虚拟环境,并使用souce加载环境

# 查看版本
python3 --version 
python3 -m venv venv
source venv/bin/activate

会看到命令行前面有个venv标识,即成功
快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
随后使用pip3安装nonebot脚手架,并通过nb命令创建bot代码,通过nb run运行bot
pip安装速度慢,记得换国内源

pip3 install nb-cli
pip3 install nonebot-adapter-onebot # 安装适配器
nb # 创建项目与bot文件

快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]

快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
第3项和第4项的选择,可以看到前面是空心的,记得按空格选中某一项再按回车
现在的目录结构如下
快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
bot为刚刚nb命令创建的项目
至此Bot已经基本配置成功,并且安装了一个最简单的内置echo插件(可选的),随后运行命令cd bot进入刚刚创建的bot文件夹。

2. 启动

使用nb run启动bot或者使用python3 bot来启动

2.1 可能会遇到的问题

在这时,可能会遇到报错
fastapi.exceptions.FastAPIError: Invalid args for response field! Hint: check that <class 'starlette.responses.Response'> is a valid pydantic field type
经过询问NoneBot的频道,问到是fastapi的版本问题。
使用命令pip3 list 可以看到 fastapi 的版本是0.89.0
使用 pip3 install fastapi==0.88.0 对该依赖进行降级。
重新运行 nb run 命令即可看到运行成功了
快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
这时候可以正常测试机器人的功能了。

不要关闭这个终端,打开一个新的终端,保证其运行目录为项目根目录而不是其中的文件夹 bot
运行 ./go-cqhttp
可以看到提示已连接到反向WebSocket Universal服务器快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]
回到刚刚的终端亦可看到nonebot也提示[INFO] logging | connection open
快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]

三、chatGPT插件

1. 安装

安装之前先关闭上一步启动的机器人
在bot文件夹中执行命令,安装chatGPT插件

nb plugin install nonebot-plugin-chatgpt

由于我们使用的是DEV环境,在bot文件夹下文件.env.dev中添加三项插件配置

CHATGPT_SESSION_TOKEN="XXX"     		# token信息
CHATGPT_COMMAND="你好AI聊天机器人"       	# 触发聊天的命令
CHATGPT_TO_ME="False"           		# 是否需要@机器人

由于onebot默认是使用 / 开头作为命令的,如果你不想添加这一个难看的斜杆,可以继续在配置文件中添加如下配置

command_start=[""]

记得保存

2. 启动

使用命令 nb run 启动机器人
并保证第一部分的go-http是开启状态

在qq中通过好友发送消息,即可获得回答。
快速搭建ChatGPT的AI聊天QQ机器人[含问题解决办法]

2.1 可能会遇到的问题

启动时并不会报错,但在发送消息后等待机器人响应时可能会有如下错误。
提示报错最后带有这样的信息 AttributeError: 'NoneType' object has no attribute 'new_page'

这个问题可以在错误信息中找到答案,有一个叫 playwright 的框架提示你是否只是下载了但没有安装。这是chatGPT加了防止机器人限制之后的一种解决方法,是通过 playwright 浏览器测试框架,打开一个浏览器窗口(实际在后台打开没有实际窗口),模拟通过浏览器页面来达到调用API的效果。大佬们真的都很牛。

这里我们只需要执行安装即可
运行命令 playwright install 等待即可。安装好后,再次运行命令 nb run 即可享受chatGPT的AI对话啦。

参考文章

本文参考自大佬文章:5分钟在QQ群搭建ChatGPT机器人!
但按照上述文章进行安装时遇到了几个问题,通过自己努力解决后分享出来,如果能帮到遇到同样问题的朋友就很高兴了