将ChatGPT接入QQ机器人
原文链接: https://jijunhao.github.io/2023/03/13/article20230313/#alipay
参考文献
QQ机器人——接入ChatGPT
ChatGPT简介
ChatGPT
是一种基于人工智能的对话机器人,使用了深度学习技术和自然语言处理技术进行训练和优化。ChatGPT
能够通过和用户的对话来回答各种各样的问题、解决问题和提供建议,支持多种语言和主题,可以用于各种不同的应用领域,如教育、客户服务、娱乐、医疗保健等。由于它可以从数百万条对话中学习并自我改进,因此越来越受欢迎。
- 对话:ChatGPT能够进行普通的聊天对话,并且可以回答一些简单的问题,例如天气、时间等。
- 知识问答:ChatGPT拥有广泛的知识库,可以回答各种问题,例如历史事件、科学知识、地理信息等。
- 文本生成:ChatGPT可以生成各种形式的文本,例如诗歌、小说、新闻报道、文书、代码等。
- 语言翻译:ChatGPT可以进行语言翻译,支持多种语言之间的互译。
- 文本分类:ChatGPT可以将文本进行分类,例如将新闻分类为体育、政治、娱乐等。
- 信息检索:ChatGPT可以根据关键词和上下文进行信息检索,返回相关的结果。
- ……
ChatGPT
能够回答各种类型的问题,例如代码生成、Excel 的操作命令、生活小常识、论文写作和翻译等。但对于普通用户来说使用 ChatGPT
的门槛很高,首先得想办法连接外网,其次还得注册官方的账号,最好还得有基础和条件的搭建一个 QQ 机器人。日常生活中想要更加方便的使用 ChatGPT
,随时随地的沟通和解决问题,当然是将其设置成微信聊天机器人、QQ 聊天机器人、钉钉机器人、Telegram 机器人等。但一般不建议使用微信机器人,微信与个人信息绑定极为紧密,一个手机号一个身份证只能注册一个微信,并且还有微信钱包等功能,若涉及一些危险言论导致封号,那将是无法挽回的损失。下面给出一个比较优秀的 QQ机器人部署方案。
注:针对不同人群,每个人都应该有属于自己的使用方案。
- 没有 ChatGPT 账号的且不具备软硬件条件的人,仅需要加入已经搭建好的 QQ 机器人群就能使用,但需谨防上当受骗
- 拥有 ChatGPT 账号的,请安装 ChatGPT桌面版,该方案能够便利的在桌面启动和刷新 ChatGPT,并且拥有聊天记录保存和切换AI等多项功能
- 有一定代码基础和硬件条件的,熟悉docker、python等常用开发工具的人,可以选择自己搭建一个 QQ 机器人,便利自己且供身边的人使用
!!无论是哪种方式,使用
ChatGPT
时都要遵守法律法规和相关规定,不得进行危害社会稳定、违反公序良俗的言论和行为。
1. 前提准备
- 需要一个官网注册的,能够正常访问网页的
OpenAI账号
- 需要一个能够正常交流的
QQ号
,建议用小号。(每个手机号可以注册多个QQ) - 需要一台
Linux服务器
或者一台Windows服务器
- 如果处于国内,需要一个翻墙工具(例如
Clash
、V2ray
等)或者部署在境外的服务器
2. 软件包下载
chatgpt-mirai-qq-bot
在 github
上已经进行开源,支持在 Liunx
和 window
上部署。
请进入项目的Releases下载最新版的windows-quickstart安装包或者使用最新版的linux一键部署。
注:GitHub Release 是一个功能,用于发布和分发软件或项目的版本和发布包,一般来说只需要下载最新版的即可。
3. Windows下快速部署
作为一个 AI 模型,ChatGPT 并不会直接连接到 QQ 平台发消息。相反,需要借助一些中间软件来实现与 QQ 的通信,如 Mirai 或 Onebot。
以下是一般情况下连接 ChatGPT 和 QQ 的基本流程:
- 初始化:首先需要准备好两个环境,即 Mirai 或 Onebot 的环境和 ChatGPT 的环境。在 Mirai 或 Onebot 环境中,需要安装好对应的插件(例如 Mirai-HTTP 和 Mirai-WebSocket)以及配置文件等。在这个项目中,只需要点击
初始化.cmd
即可- 配置登录信息:需要编辑配置文件
chatgpt/config.cfg
,设置 QQ 号码、密码等登录信息和OpenAI等信息。- 启动
Mirai
或Onebot
:通过命令行启动 Mirai 或 Onebot,使其运行在后台。这样 ChatGPT 就能够通过 API 访问 Mirai 或 Onebot 提供的 QQ 服务了。- 启动
ChatGPT
:在 ChatGPT 的环境中,需要编写代码来实现与 Mirai 或 Onebot 的通信。可以使用相应的 SDK 或 API,如 QQbot-sdk 或者 cqhttp-sdk。Mirai 和 chatgpt-mirai-qq-bot 之间则使用 Websocket 进行通信,将两者连接起来。在这个项目里这些都是设定好的。- 连接 QQ 发消息:使用 ChatGPT 的 API,调用 Mirai 或 Onebot 的接口来连接到 QQ 并发送消息。
需要注意的是,这只是一个基本流程,实际应用中可能还需要进行更多的设置和配置。此外,还需要保证 Mirai 或 Onebot 的稳定性和安全性,防止出现一些不必要的问题。
本地解压下载好的安装包后,会有chagpt
、files
、mirai
和初始化.cmd
。双击其中的 初始化.cmd
进行环境初始化,一路回车,期间会跳出来一个conifg.cfg
文件,可以直接修改也可以后期修改(在chatgpt/config.cfg
里面)
3.1 配置文件完整介绍
配置文件主要包含 onebot连接信息
、mirai连接信息
和 OpenAI登录信息
三大部分。
**注:**onebot 和 mirai 只要填写一个机器人就行,另一个用#全部注释
onebot连接信息
(使用的是go-cqhttp
的扫码登录方式,但 QQ 发送图片会出现bug)
1 |
|
mirai连接信息
1 |
|
OpenAI登录信息
1 |
|
3.1.1 OpenAI 多账号支持
可以登录多个不同的 OpenAI 账号,当机器人开始产生新对话时,会从你登录的账号中选择一个来使用 ChatGPT 和用户聊天。
(这可以降低聊天频率限制出现的概率)
1 |
|
3.1.2 OpenAI的设置(主要是无浏览器模式的接入点设置,不建议使用Web)
2023年3月封禁了大量账户,建议不要用WEB,尽量都使用自己的API。
1 |
|
3.1.3 账号登录模式选择
1 |
|
支持的模式有:
- browser - 浏览器登录。该模式会在你的电脑上启动一个 Chrome 浏览器来登录并验证 OpenAI,该模式成功率较低。
- browserless - 无浏览器模式。该模式将你的聊天请求发送到第三方服务器进行认证,从而不需要浏览器,该模式成功率较高。(推荐)
3.1.4 邮箱密码登录
1 |
|
3.1.5 session_token 登录
对于通过 Google 登录或者微软登录的同学,可以使用 session_token 方式进行登录。使用这种方式登录时不需要填写密码。
需要注意的是,session_token 过期比较频繁,过期后需要重新设置。
session_token 的获取方式可参考:请问怎么获取 session_token
1 |
|
3.1.6 access_token 登录
配合 mode="browserless"
使用,这种方式登录时不需要填写邮箱和密码、session_token。
这种方法比较适合登录时出现 Unknown error,或者回答问题时出现有关 Access Token报错的情况。
你需要自己登录 OpenAI 网站,然后访问 https://chat.openai.com/api/auth/session ,你可以看到一段类似下面的代码:
1 |
|
获取以上 JSON 中accessToken
后面的值即可,有效期在 30 天左右。过期后需要重新设置。
1 |
|
3.1.7 使用正向代理(国内搭建的记得开代理)
如果你的网络访问 OpenAI 出现一直弹浏览器的问题,或者你的 IP 被封锁了,可以通过配置代理的方式来连接到 OpenAI。
支持使用正向代理方式访问 OpenAI,你需要一个 HTTP/HTTPS 代理服务器:
1 |
|
3.1.8 对话标题自动重命名
如果你的账号产生了太多的对话,看着不舒服,可以开启配置文件中的标题自动重命名和。
1 |
|
当你按照这个格式进行设置之后,新创建的对话将会以 qq-friend-好友QQ
或 qq-group-群号
进行命名。
这里的 {session_id}
是一个变量,它在程序启动之后会根据聊天信息的发送者动态变化。
- 如果是一个好友给机器人发送消息,则
{session_id}
会变成qq-friend-好友QQ
- 如果是一个群聊给机器人发送消息,则
{session_id}
会变成qq-group-群号
3.1.9 其他功能自行探索
- 管理员命令
- 预设加载
- 接入new bing
- ……
3.2 启动Mirai
简介:Mirai
是一个基于Java开发的聊天机器人框架,最初是为QQ平台开发的,但现在也支持其他平台(如微信和Telegram)。Mirai提供了许多插件,如定时发送消息、自动回复、群管理等等,使得开发者可以轻松地定制自己的聊天机器人。
使用步骤:
- 点击
Mirai.cmd
,第一次启动会下载很多环境,无需理会。这个脚本主要用来登录QQ
机器人账号的 - 登录机器人命令:
login <机器人QQ账号> <机器人QQ密码> <登录协议>
**注:**目前的登录协议有ANDROID_PHONE、ANDROID_PAD、ANDROID_WATCH、IPAD、MACOS
最新版的Mirai官方建议使用MACOS登录协议,以防止账号无法登录的情况,如45、237、238等
- 第一次启动后,可以在
mirai/config/Console/AutoLogin.yml
里面设置自动登录(设置好后,下次启动Mirai.cmd
就不用输入机器人登录命令了)
参考如下设置:
1 |
|
注意:采用mirai反向代理得配置文件在mirai/config/net.mamoe.mirai-api-http/setting.yml
验证key和反向代理要与配置文件config/config.cfg中一样才能进行通信
3.3 启动go-cqhttp,这个可以扫码登录QQ(当使用Onebot机器人的时候)
简介:Onebot
是一个基于CQHTTP协议开发的聊天机器人框架,它支持多个平台(如QQ、微信、Telegram等),同时也提供了许多插件和工具,方便开发者创建自己的聊天机器人。Onebot提供了标准化的消息格式和事件处理机制,使得不同平台之间的开发变得更加简单和方便。
简介:go-cqhttp
是一个使用Go语言编写的开源跨平台的机器人的HTTP插件,它通过HTTP协议将机器人接入到第三方平台,例如QQ群、Telegram和Discord等。它支持多个账号、多个协议、多个插件,可以满足各种不同场景下的需求。go-cqhttp提供了方便易用的API,可以帮助开发者快速构建自己的机器人应用。同时,它也支持插件机制,开发者可以通过插件来扩展其功能。由于其开源、跨平台、易用的特点,go-cqhttp已经成为了国内外开发者构建机器人应用的主要工具之一。
使用步骤:
- 进入Releases下载 go-cqhttp
注意:下载正确对应的版本
darwin是macos的
amd是X86架构的CPU,32位版;arm是ARM架构的CPU,32位版
amd64是X86架构的CPU,64位版;arm64是ARM架构的CPU,64位版
- 下载安装包到本地,解压后,运行其中的
go-cqhttp.bat
- 输入
3
,会生成配置文件:config.yaml
- 打开配置文件
config.yaml
,只需要配置两个地方:account和servers
1 |
|
- 再次运行
go-cqhttp.bat
,生成虚拟文件,这一次不用扫码,只是为了生成虚拟设备文件,然后关闭即可 - 打开生成的虚拟文件:
device.json
,将其中的protocol
参数改成2 - 再重新启动 go-cqhttp,这时候可以扫码登录 QQ 了(注意 go-cqhttp 的启动网络要与扫码网络保持一致)
3.3 启动ChatGPT
- 设置好
chatgpt/config.cfg
点击启动ChatGPT.cmd
,自动会登录openai
一个简单的基于mirai启动的配置文件实例:
1 |
|
- 登录成功后,说明
QQ
机器人已经连接上了ChatGPT
,此时即可跟机器人聊天了
4. Linux下一键快速部署
在linux服务器上输入最新版的命令即可,命令基于docker容器技术,会自动安装docker并拉取最新版的镜像。
配置文件路径和功能与Windows几乎一致,请参考前文的配置信息。
1 |
|
config.cgf
是配置 openai 和 QQ 的文件(修改文件后重新运行即可docker-compose up -d
)docker-compose.yml
指定了需要启动的容器、服务、映像等信息AutoLogin.yml
是 mirai 的自动登录配置setting.yml
是包含 mirai 的 api 接口信息
一键安装命令本质是执行一个shell脚本,用于自动部署chatgpt-mirai-qq-bot程序。下面是脚本的功能:
- 自动检测curl,docker和docker-compose是否已安装,如果未安装,则提示安装并安装;
- 下载docker-compose.yaml和config.cfg文件;
- 对config.cfg文件进行相应修改;
- 创建setting.yml文件;
需要用户输入的信息有:
- OpenAI的API Key;
- OpenAI的邮箱地址和密码;
- QQ机器人账号和密码;
- ……
如果程序已经安装,则提示无法重复安装,并提供升级和重装的命令。
如果用户选择升级,则进行 docker-compose pull
和 docker-compose up -d
操作。
docker-compose up -d
后台启动所有容器(在 docker-compose.yaml 里面都写好)docker-compose logs chatgpt -f
来查看chatgpt的实时日志
5. 其他
5.1 常用命令
5.1.1 切换AI xxx
切换至另一个 AI 引擎。
目前支持的有:
- chatgpt-web - OpenAI ChatGPT 网页版
- chatgpt-api - OpenAI ChatGPT API 版
- bing-c - New Bing (新必应对话风格-创造力)
- bing-p - New Bing (新必应对话风格-精确)
- bing-b - New Bing (新必应对话风格-平衡)
5.1.2 文本模式
开启后,接下来的消息都用文字的方式回复。
5.1.3 图片模式
开启后,接下来的消息都用图片的方式回复。
5.1.4 重置会话
清空机器人的记忆,重新开始聊天。
5.1.5 回滚会话
相当于撤回消息,让机器人忘记你最后一次发的内容。
5.1.6 加载预设 xxx
让机器人加载某个特定的预设。 对于预设的玩法,请见右侧菜单。
5.1.7 画 xxx 或 画 + 一张图片
最低版本: 2.2.0
通过 DALL.E 进行 AI 画图(需要你设置 OpenAI 的 api_key)
5.2 管理员命令
5.2.1 .重新加载配置文件
让机器人的配置文件重新加载
5.2.2 设置额度
安装后效果示例
常见错误分析
在连接 ChatGPT 和 QQ 的过程中,可能会出现以下一些错误:
- 环境配置错误:Mirai 或 Onebot 的环境配置不正确,例如缺少依赖库、配置文件格式错误等,都可能导致启动失败。
- 登录信息错误:在配置文件中输入的 QQ 号码或密码错误,或者验证码输入错误,都可能导致登录失败。
- 网络连接错误:在与 QQ 进行通信的过程中,可能会出现网络连接问题,例如服务器繁忙、网络延迟等,导致消息发送失败或响应超时。
- API 使用错误:在调用 API 的过程中,可能会出现参数不正确、接口不存在、API 版本不匹配等问题,导致请求失败。
- 安全问题:如果 Mirai 或 Onebot 的权限设置不当,可能会导致账号信息泄露、恶意攻击等安全问题。
- 代码错误:在编写 ChatGPT 的代码时,可能会出现语法错误、逻辑错误等问题,导致程序无法正常运行。
针对这些错误,可以通过仔细检查配置文件、排查网络连接问题、检查 API 使用等方式来解决。同时,也可以参考github中的解决方案和文档,以及向相关技术人员寻求帮助。
注意抓住几个核心问题:
- 在哪一步报错的
- 报什么错
- 有可能是什么原因导致的
总结
以上就是部署QQ机器人的流程,当然还有很多功能等着大家探索,可以根据自己的喜好调整,自己探索把。