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

news2024/11/27 1:30:48

一、cqhttp

1. 下载cqhttp

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

2. 启动

解压下载的压缩包
将文件放入你项目的文件夹里
进入你的项目文件夹
以vscode中进行项目运行与管理举例
在这里插入图片描述
command + j 打开终端(反正只要在这个文件夹中打开终端就行)
运行命令 ./go-cqhttp
首次启动时,cqhttp会读取当前目录下是否有config.yml文件如果没有则会生成一个配置文件。
随后根据提示选择编号3(因为nonebot暂时只有反向socket),重新启动后如果成功会显示如下信息:
在这里插入图片描述
在这个文件夹中,多了一个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,下次运行时不再需要登录。

在这里插入图片描述
至此 cqhttp 部分结束。

二、NoneBot

1. 安装

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

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

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

会看到命令行前面有个venv标识,即成功
在这里插入图片描述
随后使用pip3安装nonebot脚手架,并通过nb命令创建bot代码,通过nb run运行bot
pip安装速度慢,记得换国内源

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

在这里插入图片描述

在这里插入图片描述
第3项和第4项的选择,可以看到前面是空心的,记得按空格选中某一项再按回车
现在的目录结构如下
在这里插入图片描述
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 命令即可看到运行成功了
在这里插入图片描述
这时候可以正常测试机器人的功能了。

不要关闭这个终端,打开一个新的终端,保证其运行目录为项目根目录而不是其中的文件夹 bot
运行 ./go-cqhttp
可以看到提示已连接到反向WebSocket Universal服务器在这里插入图片描述
回到刚刚的终端亦可看到nonebot也提示[INFO] logging | connection open
在这里插入图片描述

三、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中通过好友发送消息,即可获得回答。
在这里插入图片描述

2.1 可能会遇到的问题

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

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

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

参考文章

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jvm运行过程

VM是Java程序运行的环境,同时是一个操作系统的一个应用程序进程,因此它有自己的生命周期,也有自己的代码和数据空间. JVM体系主要是两个JVM的内部体系结构分为三个子系统和两大组件&#xff0c;分别是&#xff1a;类装载器&#xff08;ClassLoader&#xff09;子系统、执行引擎…

5.1、运输层概述

之前所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题&#xff0c;实现了主机到主机的通信\color{red}实现了主机到主机的通信实现了主机到主机的通信。 网络层的作用范围主机到主机 但实际上在计算机网络中…

帮助聊天回复的软件

在线客服在工作时&#xff0c;时常能遇到在某一个时间段一大批客户集中咨询的情况&#xff0c;使用客服快速回复软件能够使客服在第一时间进行高效的回复。 前言 在线客服在工作时&#xff0c;时常能遇到在某一个时间段一大批客户集中咨询的情况&#xff0c;通常这种情况下也是…

P2010 [NOIP2016 普及组] 回文日期————C++

题目 [NOIP2016 普及组] 回文日期 题目背景 NOIP2016 普及组 T2 题目描述 在日常生活中&#xff0c;通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用 888 位数字表示一个日期&#xff0c;其中&#xff0c;前 444 位代表年份&#xff0c;接下来 222 位…

算法测试中的召回率和精确率详解

基本概念 TP&#xff08;True Positive&#xff09;&#xff1a;正确的正例&#xff0c;一个实例是正类并且也被判定成正类FN&#xff08;False Negative&#xff09;&#xff1a;错误的反例&#xff0c;漏报&#xff0c;本为正类但判定为假类FP&#xff08;False Positive&am…

基于 java springboot+mybatis二手物品网站系统设计和实现

基于 java springbootmybatis二手物品网站系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获…

linux系统中QT里面多线程的使用方法

大家好&#xff0c;今天主要和大脚聊一聊&#xff0c;如何使用QT中的多线程的方法。 第一&#xff1a;多线程基本简介 QThread 线程类是实现多线程的核心类。Qt 有两种多线程的方法&#xff0c;其中一种是继承 QThread 的 run()函数&#xff0c;另外一种是把一个继承于 QObject…

Excel教程

目录 1.设置Excel界面以及保存Excel 1.1 自定义快速访问工具栏 1.2 自定义功能区的使用 1.2.1 自定义选项卡 1.3 自定义页面 1.4 保存时设置文件密码 2.常用的高效操作 2.1 快速填充 2.1.1 快速填充实现拆分重组 2.2 快速分析数据 2.2.1 格式化​编辑 2.2.2 图表&#xff0c…

yolov5 引入RepVGG模型结构

&#xff08;一&#xff09;前情 这个工作已经有大佬用在自己的工程里了&#xff0c;他的帖子链接&#xff1a;https://blog.csdn.net/weixin_45829462/article/details/120372921 但他的这个lite主要不是研究repvgg的&#xff0c;是做移动端的&#xff0c;但是里面加了这个re…

【BP靶场portswigger-服务端8】文件上传漏洞-7个实验(全)

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

Linux应用编程---13.网络编程

Linux应用编程—13.网络编程 ​ 网络编程要熟悉一些计算机网络有关的名词&#xff0c;可以先做了解&#xff0c;后续实际开发在深入研究&#xff0c;自上而下学习。与本次Linux应用编程有关的就是TCP与UDP协议。简明概念如下图1所示。 图1 计算机网络体系结构 ​ 前面学习的进…

数控机床各种加工模式以及英文简写

AUTO&#xff08;自动模式&#xff09; 机床自动运行加工程序&#xff0c;对零件进行加工。前提是所编的程序经过试验后是可行的&#xff0c;而且是加工出来的件经过检验后是合格的&#xff0c;才可以使用该程序。 EDIT&#xff08;编辑模式&#xff09; 在此模式下&#xff…

Spring Boot集成第三方登录之微博登录

准备工作 微博开放平台&#xff1a;https://open.weibo.com/ 网站接入 登陆微博开放平台&#xff0c;进入微连接&#xff0c;选择网站接入 点击立即接入 开发者信息认证 填写开发者信息与身份认证信息 创建应用 开发者信息认证通过后即可创建应用。 应用创建成功后会得到app …

哪种台灯质量好又实惠?性价比最高的护眼台灯

l 只要台灯质量过关就是及格的第一步&#xff0c;首先就是有3C质量认证&#xff0c;符合国A或国AA照度标准。l 显色也会是很重要的&#xff0c;光源品质高的产品&#xff0c;显色性不会低于Ra90的&#xff0c;太阳光的显色指数&#xff1d;100&#xff0c;那么意味着显色指数越…

一文详解Paramiko安装与使用

项目要求 定期向特定服务器传输软件运行状况文件&#xff08;基于SFTP&#xff09;&#xff0c;因此计划写一个Python脚本&#xff0c;该脚本首先要定期读取产品运营数据&#xff0c;然后按要求生成数据文件&#xff0c;最后通过 Paramiko 上传到SFTP服务器。 这篇文章是我在实…

【Spring源码】19. 没合适的构造器?找determineCandidateConstructors()!

上篇介绍了instantiateBean()&#xff08;其实这个方法在后面还会再次被调用&#xff09;如果在前两篇的内容结束后都还未获取到构造函数&#xff0c;那么则继续向下执行&#xff0c;调用determineConstructorsFromBeanPostProcessors()方法determineConstructorsFromBeanPostP…

如何确定梯度消失/爆炸和解决梯度消失/爆炸

1、梯度消失的原因和表现1.1、梯度消失的原因&#xff1a;在深层网络中&#xff0c;如果激活函数的导数小于1&#xff0c;根据链式求导法则&#xff0c;靠近输入层的参数的梯度因为乘了很多的小于1的数而越来越小&#xff0c;最终就会趋近于0&#xff0c;例如sigmoid函数&#…

【C++常用算法】STL基础语法学习 | 算数生成算法集合算法

目录 ●accumulate ●fill ●set_intersection ●set_union ●set_difference ●accumulate 1.功能描述&#xff1a; 计算容器内元素累计总和 2.查看accumulate定义下底层代码的函数原型&#xff1a; 3.向vector容器中插入0~100&#xff0c;使用accumulate算法去计算其和…

RabbitMQ的五大常用模型介绍以及SpringAMQP的使用

目录MQ的介绍使用MQ的好处技术对比RabbitMQ的使用Docker启动MQ角色介绍五大常用消息模型使用SpringAMQP模板简单队列模型工作队列模型广播模型 Fanout路由模式 Direct主题模式 TopicMQ的介绍 MQ&#xff0c;MessageQuene即 消息队列&#xff0c;是程序与程序之间的异步通信一种…

spring的IOC与DI小案例

注&#xff1a;本博客用于自学&#xff0c;如有错误&#xff0c;敬请指正。 一、首先要了解的概念 IOC是一种思想&#xff1a;将创建、初始化对象的控制权交给IOC容器 IOC容器&#xff1a;用来装对象的容器 Bean&#xff1a;IOC容器中装的对象 DI&#xff1a;将IOC容器种Bean…