前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NoneBot2 + Go-cqhttp开源通信框架玩转智能AI机器人 - ChatGPT

NoneBot2 + Go-cqhttp开源通信框架玩转智能AI机器人 - ChatGPT

原创
作者头像
RokasYang
修改2023-02-13 02:42:30
4.4K1
修改2023-02-13 02:42:30
举报
文章被收录于专栏:RokasYangRokasYang

一、前言

NoneBot2为跨平台Python异步聊天机器人框架,本文将阐述在Linux系统搭建一套QQ机器人,如何在日常使用中带来更多便利,为我们服务。

二、安装及配置必要运行环境

本文以Gentoo Linux作为演示,其他发行版操作上没有本质区别。

1、安装pip

可以从软件源里安装,也可以通过get-pip脚本安装:

代码语言:shell
复制
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

注意Python必须是3.x版本。

当然也可以编译安装,选择其中一种方式安装即可。作为演示,这里直接从软件源进行安装:

安装成功后检查下版本:

代码语言:shell
复制
pip --version

2、安装nb-cli并配置PATH

nb-cliNoneBot2的脚手架,后续都将使用脚手架管理运行项目,使用pip安装即可:

代码语言:shell
复制
pip install nb-cli

二进制文件路径默认在当前目录的.local/bin下面,因此需要加入到PATH环境变量中去:

代码语言:shell
复制
echo 'export PATH=$PATH:/root/.local/bin' >> /etc/profile
source /etc/profile

路径要根据实际路径做更改,或者将二进制目录mv到已有的PATH路径中。

这里使用zsh作为shell解释器,因此写入的是zsh配置文件,或者写入到/etc/zsh/zprofile

代码语言:shell
复制
echo 'export PATH=$PATH:/root/.local/bin' >> .zshrc
exec zsh
echo $PATH

查看版本号:

代码语言:shell
复制
nb --version

这里的版本为nb cli版本,并非NoneBot版本,因此不要被误导,以为自己装的是nonebot1。

三、NoneBot2配置及参数选择

1、创建NoneBot项目

直接执行nb命令:

代码语言:shell
复制
cd /opt
nb

会交互式询问,这里选择第一项回车。

2、选择bootstrap框架

接着选择bootstrap回车:

3、选择驱动器

输入项目名后,回车选择FastAPI驱动器:

4、选择通信协议

使用空格选择通信协议,QQ平台这里选择OneBot V11,之后回车:

V12刚出不久,相对V11不太稳定成熟,目前绝大部分插件也是基于V11兼容的。

5、安装依赖及创建虚拟环境变量

安装依赖、创建虚拟环境变量这里默认都选YES:

6、选择内建插件echo

内建插件,选择echo即可:

7、测试运行

安装完后会提示运行命令,cd到项目目录,测试运行情况:

代码语言:shell
复制
 cd test-bot
 nb run --reload

到此项目创建完成,CTRL+C终止。

四、go-cqhttp配置与安装

1、安装go-cqhttp

go-cqhttp并不需要手动独立安装,NoneBot2已经把它集成为插件并可以通过nb去管理插件,用户并不需要去关心go-cqhttp安装在哪,相对前一个版本简化了大量配置。

使用nb命令,依次选择Manage bot plugins --> Install nonebot plugin to current project并回车:

输入nonebot_plugin_gocqhttp插件名回车:

到此go-cqhttp安装完成。其他所有插件也可以使用此类方式安装,当然也可以使用如下命令安装:

pip安装:

代码语言:shell
复制
pip install <plugin_name>

nb安装:

代码语言:shell
复制
nb plugin install <plugin_name>

2、配置.env.prod

每个项目目录下都会有一个.env.prod配置文件,所有插件的变量名等都会在这个文件里定义,也包括NoneBot2自带的一些变量。

这里如下设置:

代码语言:shell
复制
DRIVER=~fastapi   #指定驱动器,默认已有
HOST=0.0.0.0  # 监听IP
PORT=36985    # 监听端口
SUPERUSERS=["123456789"]  # 超级管理员QQ,即机器人主人QQ,改成自己的
COMMAND_START=["/", ""]  # 配置命令起始字符
COMMAND_SEP=["."]  # 配置命令分割字符

3、配置go-cqhttp

使用nb run运行后,可以看到go-cqhttp监听了我们在.env.prod设置的端口:

使用浏览器访问URL:http://IP:36985/go-cqhttp/#/

可以看到进程日志都会在这里展示,并且自带一些简要的系统资源监控情况。

点击左上角的添加账号,输入要运行机器人的QQ账号,并选择设备类型:

可以仅输入账号,然后在控制台进程日志扫码登录,也可以账号密码一并输入,出于安全考虑更建议前者。

设备类型选择,只要不涉及多端登录导致冲突即可,这里选择Android Watch

之后点击启动:

进程日志会输出二维码,使用刚刚提交的QQ账号扫描登录即可。

到此则说明没有任何问题,此时可以关闭浏览器端,浏览器这步主要用于配置QQ账号、查看系统负载等。

4、测试验证

我们前面已经安装echo内建插件,用于打印输出。私聊机器人或者群里艾特机器人,测试生效情况:

五、写SystemD服务

可选项,为了方便管理NoneBot2服务,如果你觉得太麻烦也可以考虑使用screennohup &

代码语言:shell
复制
Gentoo@root# vim /etc/systemd/system/nonebot.service
[Unit]
Description=Nonebot Daemon Service
After=network.target

[Service]
User=root
WorkingDirectory=/opt/test-bot
ExecStart=/root/.local/bin/nb run
ExecStop=/usr/bin/pkill -9 nb

[Install]
WantedBy=multi-user.target

写完服务后,重载systemd并启用开机自启动:

代码语言:shell
复制
systemctl daemon-reload
systemctl enable --now nonebot.service
systemctl status nonebot.service

六、ChatGPT安装及配置

1、OpenAI注册

首先到OpenAI官网注册账号,国外手机验证可以到sms接码平台获取短信验证。

注册账号后,你已经可以在chatgpt网页版使用:

注意proxy需要全局模式,最好是美国,否则会提示区域限制访问:

2、安装ChatGPT插件

以下几种安装方式,选取一种即可。

1)Plugins Store搜索

可以在NoneBot2的插件商店搜索ChatGPT相关插件:

2)CLI下搜索

或者在nb命令行下搜索。

依次选择Manage bot plugins --> Search for nonebot plugins published on nonebot homepage,搜索关键词gpt即可:

3)使用nb安装

nonebot-plugin-gpt3为例,使用nb安装:

依次选择Manage bot plugins --> Install nonebot plugin to current project,之后输入nonebot-plugin-gpt3回车即可:

4)使用pip安装

如果觉得交互太麻烦,也可以使用pip或者nb直接安装:

代码语言:shell
复制
pip install nonebot-plugin-gpt3  # pip安装
nb plugin install nonebot-plugin-gpt3 # nb安装

3、配置api-key

1)生成API key

首先到API keys页面创建一个key并复制它:

2)写入配置文件

生成key后,写入到config/chatgpt_api_key.yml,内容如下:

代码语言:shell
复制
api_keys: ["sk-xxx"]        # API key
gpt3_command_prefix: "gpt3" # 定义触发的关键词
gpt3_need_at: False         # 是否需要被@
gpt3_image_render: False    # 是否需要将回答渲染为图片
gpt3_max_tokens: 800        # 返回回答的最大长度

4、测试验证

之后使用systemctl重启下NoneBot2

代码语言:shell
复制
systemctl reboot nonebot.service

或者首次直接在项目目录前端执行nb run,方便观察日志。

测试提问:

可以看到提问和回答间隔时间在几秒到十几秒,这中间还需要考虑服务器到OpenAI API的网络传输质量情况。经过验证,API调用没有美国地域的必然要求,只要有访问境外服务器的能力即可。

如果局域网下没有相关代理网关(比如OpenWrt),则需要在系统内部配置代理,可以参考我这篇文章

5、收费情况

1)免费额度

截至目前(2023.2.13),OpenAI官方对于注册账户会赠送18美元的API调用额度,可以在Usage页面查看使用情况:

2)不同模型的tokens价格

每个模型价格不一样,偏向的场景与功能也不大一样,具体参考官方文档

当前价格列表:

Davinci模型为例,0.02美元1K次tokens,那么18美元免费额度的总tokens数量为90万次tokens。

3)token是怎么定义的

根据官方的解释,tokens就是每个自然语言处理的片段。

一个token为4个字符(char)或0.75个单词(words),比如this会花费1个token,而this is会花费两个token,today is也是两个token。

4)tokens辅助计算工具

使用tokenizer可以在线计算:

七、附录

1.NoneBot2官方文档

2.NoneBot2项目主页

3.Go-cqhttp

4.NoneBot2插件页面

5.OpenAI API

6.各个Module的tokens价格

7.ChatGPT Web版

8.Tokens计算工具-tokenizer

附带PDF版本:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、安装及配置必要运行环境
    • 1、安装pip
      • 2、安装nb-cli并配置PATH
      • 三、NoneBot2配置及参数选择
        • 1、创建NoneBot项目
          • 2、选择bootstrap框架
            • 3、选择驱动器
              • 4、选择通信协议
                • 5、安装依赖及创建虚拟环境变量
                  • 6、选择内建插件echo
                    • 7、测试运行
                    • 四、go-cqhttp配置与安装
                      • 1、安装go-cqhttp
                        • 2、配置.env.prod
                          • 3、配置go-cqhttp
                            • 4、测试验证
                            • 五、写SystemD服务
                            • 六、ChatGPT安装及配置
                              • 1、OpenAI注册
                                • 2、安装ChatGPT插件
                                  • 1)Plugins Store搜索
                                  • 2)CLI下搜索
                                  • 3)使用nb安装
                                  • 4)使用pip安装
                                • 3、配置api-key
                                  • 1)生成API key
                                  • 2)写入配置文件
                                • 4、测试验证
                                  • 5、收费情况
                                    • 1)免费额度
                                    • 2)不同模型的tokens价格
                                    • 3)token是怎么定义的
                                    • 4)tokens辅助计算工具
                                • 七、附录
                                相关产品与服务
                                短信
                                腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档