[ChatGPT] 使用Python对接OpenAi APi 实现智能QQ机器人 - 搭建QQ机器人

文章 , 技术分享
2654 5

前言

想要一个万能回复你的AI助手机器人吗?我看到网上很多基于Linux系统搭建的教程,今天就分享一个用windos系统就可以搭建的chatgpt机器人,而且用自己电脑就可以使用啦,下面是windos和Linux系统搭建的教程会持续更新新的版本~!
下面是搭建教程:
QQ机器人体验群:602354227
2022-12-14 13:43
修改revChatGPT代码使其最新版本能够支持Linux和Windows系统运行
点击下载
使用教程依旧如下
2022-12-13 14:01
增加一个Linux版本,可以自动获取cloudflare Cookie,如果你使用Windows版本依然不能自动获取,也可以在Windows上使用这个版本
2022-12-12 23:52
增加一个Windows专用版本,只能在Windows电脑或服务器上使用,可以自动获取cloudflare Cookie
2022-12-12 12:38 更新内容
增加CloudFlare配置,更新依赖,暂不支持账号密码,暂不知道CloudFlare配置多久需要更换一次,现在好像必须要翻墙了
2022-12-10 17:42 更新内容
增加账号密码支持,可以不使用token,直接使用账号密码
2022-12-10 00:23 更新内容
将每个QQ私聊区分,每个人私聊机器人都是一个独立的会话
将每个QQ群区分,每个QQ群是一个独立的会话
增加回复字数限制,超过限制转换成图片回复(见配置文件)
如果想要重置会话,对机器人发送:重置会话

简介

监听QQ消息并不需要我们写代码,因为市面上已经有很多开源QQ机器人框架,在这里我们使用go-cqhttp
官方文档: go-cqhttp
如果您感兴趣的话,可以阅读一下官方文档,如果不想看,直接看我的文章即可。
前提条件

  • 您需要准备一个QQ号,不要使用自己大号
  • 您需要准备一个OpenAi的账号,用来获取Token
  • 一台服务器(可选,如果您想让机器人7x24小时在线的话,请准备一台,1核1G足以,外服最好)

注意:OpenAi(ChatGPT)的注册方式B站有一堆视频,随便参考一个就行。

搭建

获取ChatGPT接口Token
首先登录ChatGPT https://chat.openai.com/

2022-12-11T11:06:41.png

登录后按F12打开调试面板,安装图中操作,将token复制出来并保存
2022-12-11T11:07:01.png

修改代码
可以使用我打包好的文件,也可以根据前两个文章自行开发,推荐使用我打包好的:
点击下载
下载解压后你会得到如下文件
2022-12-11T11:07:41.png

首先我们修改逻辑处理端,打开py文件夹
image.png

用一个合适的编辑器打开config.json,如果没有合适的,用记事本打开也行
image.png

如果所有消息都想用图片回复,max_length可以设置为0,如果不想使用图片回复,可以设置为9999

打开后按图上的提示修改,修改后保存即可

然后修改 QQ机器人\QBot 文件夹下的 config.yml

配置文件1.png

配置文件2.png

启动服务
启动逻辑处理端
打开文件夹: QQ机器人\py
Windows系统双击 python-3.11.1-amd64.exe 安装Python环境
已经有Python环境的不用安装

py安装.png

Linux系统请根据系统自行安装
环境安装完成之后,双击 安装依赖.bat 安装依赖

Linux系统请使用如下命令安装:
pip3 install -r requirements.txt

依赖安装完成后,双击 windows启动.bat 启动逻辑处理端
Linux系统使用如下命令启动

# 前台运行
py chat-gpt-qbot.py
# 后台运行
nohup py chat-gpt-qbot.py &

启动后如下图所示

启动py2.png

此时我们可以用浏览器访问 127.0.0.1:7777 可以看到如下图所示
image.png

启动监听端
打开文件夹 QQ机器人\QBot
Windows 双击 go-cqhttp.bat 即可启动
注意此时需要输入 2 并回车,选择扫码验证登录

启动cq1.png

扫码后即可登录成功
启动cq2.png

注意:如果你打算部署到Linux服务器(不管什么系统的云服务器)上,你依然需要完成上述步骤,即在电脑上登录一次,然后将QBot文件夹里生成的文件上传到你的服务器上再完成启动流程(防止QQ风控)

如果你看到下面这种提示,忽略就行不用管

image.png

Linux启动需要使用如下命令:

# 前台运行命令
./go-cqhttp
# 后台运行命令
nohup ./go-cqhttp > logs/`date -d yesterday +%Y%m%d`.log 2>&1 &

测试
私聊测试,基本上你问的正常的问题都会回复你哟~这个是AI机器人,不是那种按照别人固定数据库的回答回复你~灰常人性化~

请输入图片描述

请输入图片描述

请输入图片描述

最后更新 2023-07-15
评论 ( 5 )
OωO
隐私评论
  1. Hubuuu

    https://cf-shit.aurorax.cloud/challenge这个网站502了。。。

    1年前湖北省襄阳市回复
  2. 大家先别急,这个是逆向官方的接口的,还有个是直接使用官方的api接口版本,操作比这个更容易,等有时间在更新一下

    2年前江苏省苏州市回复
    1. 时光
      @戏人看戏

      我启动报错啊

      1年前上海市虹口区回复
      1. 时光
        @时光

        E:\NODEproject\QQ-robot\py>py chat-gpt-qbot.py
        Traceback (most recent call last):
        File "D:\Python\python-3.11.1-amd64\Lib\site-packages\requests\models.py", line 971, in json

        return complexjson.loads(self.text, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        File "D:\Python\python-3.11.1-amd64\Lib\json\__init__.py", line 346, in loads

        return _default_decoder.decode(s) ^^^^^^^^^^^^^^^^^^^^^^^^^^

        File "D:\Python\python-3.11.1-amd64\Lib\json\decoder.py", line 337, in decode

        obj, end = self.raw_decode(s, idx=_w(s, 0).end()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        File "D:\Python\python-3.11.1-amd64\Lib\json\decoder.py", line 355, in raw_decode

        raise JSONDecodeError("Expecting value", s, err.value) from None

        json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File "E:\NODEproject\QQ-robot\py\chat-gpt-qbot.py", line 31, in

        chatbot = Chatbot(config, conversation_id=None) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        File "D:\Python\python-3.11.1-amd64\Lib\site-packages\revChatGPT\revChatGPT.py", line 69, in init

        self.refresh_session()

        File "D:\Python\python-3.11.1-amd64\Lib\site-packages\revChatGPT\revChatGPT.py", line 270, in refresh_session

        if response.json() == {}: ^^^^^^^^^^^^^^^

        File "D:\Python\python-3.11.1-amd64\Lib\site-packages\requests\models.py", line 975, in json

        raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)

        requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

        1年前上海市虹口区回复
        1. @时光

          环境没装好吧

          1年前江苏省南京市回复