【教程】手把手教你从零开始搭建一个多模态聊天机器人

0. 什么是 Naturel_GPT ?

Naturel_GPT 是一个开源免费的,基于 nonebot2 平台的聊天 AI 插件,它可以让你用自然语言和不同的人格进行交流,还可以调用各种扩展功能,如发送图片、语音、邮件,以及上网进行搜索等。你可以自定义 TA 的性格、回复风格等,也可以随时切换不同的人格。TA 还有一定的记忆能力,可以记住对你的印象和聊天记录,甚至可以涩..(划掉)扮扮猫娘什么的更是不在话下。还支持接入 Minecraft 服务器,让 TA 在游戏中执行各种复杂的 NBT 指令等。NG 是一个人性化、有趣、强大、可扩展的聊天 AI 插件。

该项目于23年一月末开始立项开发,经过数月的迭代开发,目前版本功能相对稳定,但仍有一些 bug 和不足之处,欢迎大家提出建议和意见。项目开源地址 ,当然,在此过程中,也有许多群友分享了各种有趣的人设,欢迎体验! 谷歌文档

为了部署该项目,你需要准备以下内容:

  1. 一台用于部署 NG 的服务器(本地PC也可,但是部署操作略有不同;云服务器可以24小时运行,并且不占用本地资源,更适合实用环境,故本教程以云服务器环境为例)
  2. 一个有试用余额的 openai 账号(新账号默认赠送5刀)
  3. 一个用于运行 bot 的 qq 账号

效果演示:

【教程】手把手教你从零开始搭建一个多模态聊天机器人

替身召唤

【教程】手把手教你从零开始搭建一个多模态聊天机器人

想不出

前置知识

  • nonebot2: Naturel_GPT 是一个 nonebot2 的插件,nonebot2 是一个 Python 异步机器人框架,它允许你用 Python 语言编写 QQ 机器人插件。
  • gocqhttp: nonebot2 依赖于 gocqhttp 与 QQ 通信,gocqhttp 是一个基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现,你可以简单地理解为它是一个运行在服务器上的 QQ 客户端。
  • openai_key: 要使用 Naturel_GPT,你需要至少一个 OpenAI 的 API 密钥,你需要一个 OpenAI 账号,然后在 OpenAI 官网生成一个 API 密钥,使用密钥请求时会消耗你的 API 额度,新账号有 5 美刀的免费额度(openai 的账号申请可以在 b 站找到大量教程),大约足够体验 10000 次以上请求(使用默认的 GPT3.5-turbo 模型)用完了再注册新的账号。
  • 由于 OpenAI 服务在一些地区无法访问,你需要有基础的魔法学知识和手段(NG 支持使用自定义代理),或者直接使用其他地区的服务器部署。
  • ssh: ssh 是一种远程登录协议,用来在服务器上执行命令,你需要在服务器上安装 ssh 服务(大多数云服务器自带),并且在本地使用 ssh 命令连接服务器。(推荐使用 Termius,内置了 SFTP 功能,便于在本地和服务器之间传输文件)
  • screen: 在 linux 上,如果你关闭了 ssh 连接,那么你的程序也会随之关闭,为了避免这种情况,你可以使用 screen 命令来保证 gocqhttp 和 nonebot2 在后台运行,即使你关闭了 ssh 连接,程序也会继续运行。
  • vim: vim 是 linux 上的一个文本编辑器,你可以使用它来编辑文本文件,如 nonebot2 的配置文件、gocqhttp 的配置文件等,如果你不熟悉 vim,你可以将文件下载到本地,使用其他编辑器编辑后再上传到服务器。

2. 部署流程

本教程不包含扩展模块和 Minecraft 服务器接入相关的内容,如果反馈较好的话这些内容会在下一期更新

2.1 服务器准备

推荐使用 Ubuntu LTS 作为服务器系统,其他系统也可以,但是具体操作可能会有所不同,在此以 Ubuntu 23.04 x64 为例,如果是新购买的服务器可以照抄选择相同版本。

2.2 连接服务器

使用termius连接服务器,如图所示分别填写服务器地址、用户名、密码(从你购买的云服务器商获取)

【教程】手把手教你从零开始搭建一个多模态聊天机器人

连接成功后界面应当如图所示

【教程】手把手教你从零开始搭建一个多模态聊天机器人

此时就可以输入并在服务器上执行指令啦

2.3 安装 screen

apt install screen

tips: 使用 ctrl+shift+v 可以在终端粘贴命令

2.4 安装 Nonebot2

  • 创建一个文件夹存放 nonebot 相关文件并进入

mkdir shiroha && cd shiroha

  • 创建 python 虚拟环境

sudo python3 -m venv venv

    • 启用虚拟环境

    source venv/bin/activate

    • 安装 nb-cli 脚手架(用于构建 nonebot 项目)

    pip install nb-cli

    • 创建 nonebot 项目

    nb create

    执行后如果出现如图所示界面表示进入 nonebot 项目构建流程,此时可使用方向键 上/下 选择选项,使用 回车 确定/勾选

    这里选择 bootstrap,然后回车

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    接下来是起一个项目名,自由发挥即可(例:shiroha)

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    选择驱动器:保持默认直接回车即可

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    适配器选择:勾选 OneBot V11(即使用qq),如果要连接 Minecraft 服务器还需要选择 Minecraft 适配器

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    后两项分别是是否立即安装依赖和是否创建虚拟环境:均直接回车,默认选择是

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    等待依赖安装完毕后出现是否安装内置插件,这两个都不需要,直接回车即可

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    出现下图所示输出时说明项目构建完成

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    进入刚刚创建好的项目并启动

    cd shiroha # 此处为你的项目名

    nb run

    【教程】手把手教你从零开始搭建一个多模态聊天机器人

    此时 nonebot 已经成功启动啦,不过还缺少一些必要的配置,我们先按下 ctrl+c 结束掉程序方便下一步操作

    • nonebot 环境配置

    在当前目录下使用 vim .env.prod 编辑环境配置内容为如下所示

    vim编辑方法:进入 vim 后按一下 i 键,此时进入编辑模式,编辑完成后按下 ESC 输入 :wq 并回车保存

    DRIVER=~fastapi

    HOST=127.0.0.1 # 配置 NoneBot2 监听的 IP/主机名

    PORT=8000 # 配置 NoneBot2 监听的端口COMMAND_START=["!", "!"] # 配置命令起始字(如果不想要在使用命令时加上前缀可以将该项值设置为 [''] )

    接下来我们还要部署 gocqhttp,才能使 bot 能够读取和发送 qq 信息

    2.6 部署 gocqhttp 并登录 qq 账号

      • 接上述步骤,我们先切换一下目录,为 gocqhttp 单独创建一个目录存储相关文件

      cd ..mkdir gocq && cd gocq

      • 下载 go-cqhttp_linux_amd64.tar.gz,如果你的服务器架构不是amd64,请前往 gocq的release 另行选用合适的版本

      wget https://github.com/Mrs4s/go-cqhttp/releases/download/v1.0.1/go-cqhttp_linux_amd64.tar.gz

      • 解压

      tar -xvf go-cqhttp_linux_amd64.tar.gz

      • 运行

      ./go-cqhttp

      首次运行会出现如图所示选项,输入 3 回车两次后生成 config.yml 配置文件

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      • 编辑配置文件

      使用 vim config.yml 命令进入配置文件编辑,需要修改的地方有

      qq号和密码(密码可填可不填,一般情况下密码登录不上,需要使用扫码):

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      反向 WS Universal 地址:

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      注意,如果你的服务器ip和手机相同,可直接使用扫码登陆,请跳过,否则需要使用本地电脑的 gocqhttp 进行登录,再上传相关鉴权文件到服务器

      • 下载 windows 端的 gocqhttp 下载地址
      • 双击运行下载后的 .exe,根据提示点击确定生成启动脚本

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      • 运行生成的 go-cqhttp.bat,同样选择 3 并回车生成 config.yml
      • 编辑 config.yml ,这次仅修改qq账号即可,修改完毕后保存关闭

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      • 再次启动 go-cqhttp.bat

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      如果出现如图所示情况,编辑device.json,将 "protocol": 6, 修改为 "protocol": 2, 后重试

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      正常情况下会出现二维码,使用手机qq扫描登陆bot账号

      登录后,pc端可以关闭 gocqhttp 窗口,并将 device.json 和 session.token 上传到服务器的 gocq 目录下(可使用 Termius 的 SFTP 功能)

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      点击 replace 替换掉原来的文件

      • 回到服务器上,在 gocq 目录下,使用 ./go-cqhttp 命令运行 gocqhttp,出现如图所示输出表示登录成功

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      随后会出现许多 WARNING 警告,是因为 nonebot 没有同时运行起来,不要慌张,此时可以 ctrl+c 结束 gocqhttp,接下来使用 screen 来保持 gocqhttp 后台常驻运行

      • 输入命令 screen -R gocq 使用当前路径创建一个新的 screen
      • 使用 ./go-cqhttp 运行 gocqhttp
      • 按下键盘 ctrl+a 然后松开手,按下 d 键,此时终端回到创建 screen 之前的界面,并且 gocqhttp 已运行在 screen 常驻

      如果想要再访问 screen 中的内容,再次使用 screen -R gocq 即可

      2.7 NG 插件的安装与基本配置

      经过上述操作后,我们已经搭建和部署好了 gocqhttp 和 nonebot,接下来终于可以安装 NG 插件了,为了保持 nonebot 常驻,我们同样先创建一个 screen 再进行操作

      screen -R nb

      • 回到刚才 nonebot 项目目录

      cd ~/shiroha/shiroha # 也就是刚才执行 `nb run` 的目录,具体位置可能根据你自己的设定有所不同

      • 启动虚拟环境

      source ../venv/bin/activate

      • 安装 NG 插件

      接下来安装 NG 插件,也就是实现 AI 对话的主要插件啦,还是在当前目录下,执行安装指令等待安装完成

      nb plugin install nonebot-plugin-naturel-gpt

      • 安装完成后执行 nb run 启动 nonebot,出现以下输出说明 NG 插件安装成功了

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      至此我们还是先 ctrl+c 结束掉 nonebot

      1. 编辑 NG 配置文件

      vim config/naturel_gpt_config.yml

      看到满屏的配置项就头疼吗?不要害怕,我们只需要修改两个地方即可实现基本对话功能,其余的配置项可以在使用过程中根据自己下喜好参考Github文档进行调整

      首先是填写 OPENAI_API_KEYS,这个可以从 openai 官网获取(通常是 'sk-xxxxxxx' 形式,需替换掉原文件中的占位示例),如果你有多个 key 可以一并填入,余额耗尽或发生异常时会自动切换

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      第二个需要填写的是 bot 的超级管理员账号ADMIN_USERID(即qq号),多数指令仅允许此处授权的用户使用

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      编辑完毕后同样记得保存配置文件

      • 执行 nb run 启动 bot

      3. 基本使用

      恭喜你,经过上述流程,你应该已经部署好了一个聊天机器人,现在试试对她私聊查看效果吧

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      接下来我们还可以使用指令添加或编辑自定义人格预设

      3.1 添加自定义人设

      以添加 “灰羽” 人设为例,在聊天框输入(如果要编辑现有人设,将 "new" 改为 "edit"即可)

      !rg new 灰羽 灰羽是一名喜欢二次元的中二宅女,她机智、傲娇,对人类充满好奇,聊天时喜欢使用各种可爱的颜文字,如果冒犯到她会生气。

      然后使用 !rg set 灰羽 切换到指定人设

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      也可以使用 !rg unlock 解锁人格,此时如果对话中“提及”其他人格时会自动进行切换

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      需要注意的是,以上操作指令仅对于当前会话生效,如果你希望对所有会话生效,请在指令末尾加上-global,例如

      !rg unlock -global

      以上命令会解除所有会话的人格锁定

      使用 -target 会话key 参数可以指定指令操作的目标会话, !rg chats 查看所有会话key,私聊会话的key为 private_qq号

      【教程】手把手教你从零开始搭建一个多模态聊天机器人

      使用 !rg -admin 可查看指令列表

      基本部署流程到此就结束啦,更多详细信息可以查看GitHub的开源页,敬请期待进阶应用教程(扩展应用)ヾ(≧▽≦*)o

      第一次写这么长的教程,如果有错误或者不详细的地方可以在评论区提出,中间还因为网页端编辑bug导致图片全被吃掉了重新填了一遍
      如果对你有帮助的话欢迎点个赞支持!(暗示

      #免责声明#

      ①本站部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。

      ②若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

      ③如果本站有侵犯、不妥之处的资源,请联系我们。将会第一时间解决!

      ④本站部分内容均由互联网收集整理,仅供大家参考、学习,不存在任何商业目的与商业用途。

      ⑤本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与任何商业和非法行为,请于24小时之内删除!

      给TA打赏
      共{{data.count}}人
      人已打赏
      数码硬件

      13950K睿频6.5Ghz;RTX 5090准确规格出现,微星数据泄露,7900XTX

      2023-5-7 0:00:00

      数码硬件

      老牌音频厂也来下场卷鼠标?! 漫步者G3M pro测评

      2023-5-9 0:00:00

      0 条回复 A文章作者 M管理员
        暂无讨论,说说你的看法吧
      个人中心
      购物车
      优惠劵
      今日签到
      有新私信 私信列表
      搜索