各位久等啦!距离上一次 Naturel_GPT 的教程已经过去了整整一年半了,这次带来了新的更好玩的猫娘机器人,并且全面改用了 Docker 封装应用,对比老 NG 项目简化了 90% 以上的部署操作,废话不多说这就开始吧!
Part 0. 什么是 NekroAgent ?
Nekro Agent 是一个 完全开源免费 的高扩展性代理执行机器人框架,源码托管在 Github
相比于传统的聊天机器人,除了基本的人设扮演能力以外,她还支持群聊多人互动,并且具备完全自主地动态 生成/执行 代码的能力,可以方便地实现各种能力的组合使用,她能够使用两种方式进行消息回复:
文本方式直接回复
编写一段即时回复流代码,并调用相关资源来完成回复
这么说可能不太直观,我们直接来看一些实际的应用场景吧!
SD画图结合文件生成
外部功能使用
还有赛博刷机环节
NekroAgent 的架构核心在于,我们并不需要告诉她 Excel 如何生成、图片如何调整分辨率等细枝末节的信息,她就能利用即时编程能力直接生成我们需要的内容,这些编码知识已经在大模型博览群书的庞大先验知识库中,我们只需要给予她合适的工具和方法,她就能为我们创造一切!
Part 1. 部署前准备
首先你需要准备好以下素材:
猫娘小窝:一台能运行 Docker 的 Linux 服务器(或虚拟机),配置要求任意,推荐 2G 运存以上
猫娘的替身:一个用于机器人登录的 QQ 账号
猫娘的灵魂:任意一个能提供聊天生成能力的中转 API (如果没有可以使用 Nekro 中转)
聪明的主人:熟练使用 Ctrl、C、V 等常用键盘按键,具备一般水平语言理解能力
Part 2. 开始部署
1. 服务器准备
如果你已经有可用的 Linux 服务器,可跳过这一步
NekroAgent 本体使用 Docker 容器化部署,并且同时需要 Docker 提供沙盒代码解析环境,所以从开发到部署均需要在支持 Docker 的服务器环境下,因此如果需要选购云服务器可优先选择 Ubuntu 22.04 ,如果不想购买服务器来托管应用,可以使用 VM 虚拟机或者 WSL 子系统来创建一个 Linux 系统环境,本教程不再赘述服务器的获取和访问方式,如果有需要可参考 Naturel_GPT 部署教程 中的前期服务器准备部分
我们将从进入服务器操作终端开始讲解部署流程
2. 部署 NekroAgent 本体服务
NekroAgent 项目提供了一键部署命令,可自动化创建拉取必要容器并启动项目
sudo -E bash -c "$(curl -fsSL https://raw.githubusercontent.com/KroMiose/nekro-agent/main/quick_start.sh)"
如果部署过程出现是否安装 Docker 和 DockerCompose 可直接回车,安装完成后应该显示如下:
至此 NekroAgent 本体服务部署完成,但仍有一些配置需要修改,我们先继续部署 QQ 机器人的协议实现端
3. 部署 OneBotV11 协议实现端
NekroAgent 通过 OneBotV11 协议与 QQ 服务进行通信,使用以下命令开启一个 lagrange 服务来实现这一过程
docker run -d \
--name lagrange \
--restart unless-stopped \
-p 8081:8081 \
-v $HOME/srv/lagrange:/app/data:rw \
-v $HOME/srv/nekro_agent:/app/nekro_agent_data:rw \
--network nekro_agent_nekro_network \
-e UID=$UID \
-e GID=$(id -g) \
ghcr.io/lagrangedev/lagrange.onebot:edge
注意这是一行命令,为了可读性进行了分行拆分,直接一次选择粘贴进终端执行即可
然后我们需要配置一些机器人帐号信息,编辑 lagrange 的配置文件,执行:
vim ~/srv/lagrange/appsettings.json
# 如果提示 vim: command not found 原因是服务器未安装 vim 文本编辑工具导致,使用 sudo apt install -y vim 进行安装即可
# 这里开始我们需要在终端中使用 vim 编辑一些文件,不了解 vim 操作方式的同学可前往 Part 5. QA 中查看 vim 的基本使用方式
此时将进入 vim 编辑器,我们需要修改以下几处配置:、
机器人的 QQ 帐号
找到 "Uin": 0 这行, 修改为 "Uin": 你的机器人 QQ 帐号
反向 WS 链接配置
找到 "Type": "ReverseWebSocket", 这行,按如下所示修改 Host 和 Port 配置:
...
"Type": "ReverseWebSocket",
"Host": "nekro_agent",
"Port": 8021,
...
修改完成后重启 lagrange 服务
sudo docker restart lagrange
随后查看 lagrange 日志获取登陆二维码并扫码登陆
sudo docker logs lagrange
扫码并在手机上允许登陆设备,随后查看 NekroAgent 本体日志,检查 Bot 是否连接成功
sudo docker logs nekro_agent
Bot 连接成功
最后一行显示 connection open 字样即表示协议端连接成功
4. 完善 NekroAgent 服务必要配置
NekroAgent 需要一些诸如对话 API 等基本配置才能正常工作,使用下列命令开始编辑 NekroAgent 的配置文件
vim ~/srv/nekro_agent/configs/config.dev.yaml
类似上面的 lagrange 配置编辑方式,以下是一份简化配置,仅包含一些较重要的配置项:
为了让机器人能够正常聊天,至少需要配置 SUPER_USERS、BOT_QQ、API_KEY 这三项,其他选项可先维持默认,后续再根据需要调整
简化的部分配置示例
配置项之间顺序无关,# 号之后的内容为注释内容,不影响配置信息
配置完成后,使用以下命令重启 NekroAgent 服务
sudo docker restart nekro_agent
稍等几秒,此时向机器人发送消息就应该能得到回复了,恭喜你完成整个应用的部署!
Part 3. 常用命令
为了更好地管理我们的私有猫娘,NekroAgent 提供了一些简单命令来控制行为,使用 /na_help 即可查看相关命令,这里列举一些常用的命令说明
重置当前会话(/reset)
如果你不小心把你的猫娘玩坏了,或者变得奇怪了,可以尝试使用 /reset 重置记忆状态
开关会话聊天(/na_on 和 /na_off)
字面上的意思,用来 启用/禁用 当前会话的聊天功能,支持通配符批量操作:/na_off * 关闭所有会话聊天功能
Part 4. 扩展能力
NekroAgent 支持多种方式扩展能力,包括但不限于访问网络信息、接收/处理多模态信息等,目前主要有两种方式扩展能力的方式
1. 自定义沙盒容器,扩展 Python 依赖库
由于大模型本身已经具有相当强力的代码编写能力和常用库的应用知识,对于大多数已有现成库解决的问题,我们只需要直接在沙盒环境中为其安装即可令其自主使用
2. 按照 NekroAgent 的原生支持扩展方式编写扩展模块
参考 NekroAgent 的官方扩展模块代码,只需要入门级别的 Python 编程能力即可自行实现新的扩展功能,并在应用中加载使用,可以实现更高的自由度和定制复杂逻辑使用
Part 5. Q&A 环节
Q: 在命令行中使用 vim 编辑文件的基本方法
A: 在 vim 界面中按下 i 键,此时进入编辑模式,可以使用方向键控制光标位置,并任意输入或删除;在编辑完成后,按下 ESC 键,随后输入 :wq 并回车即可保存文件
Q: 成本问题?
A: 众所周知,大模型的推理需要庞大的算力支持,因此不可避免地会产生调用费用,但是随着全球各大厂商纷纷进军大模型,目前已经有许多效果尚可且价格低廉的模型可以选择,这里主推 gemini-1.5-pro-002 模型,注意由于上下文长度不同,每次调用产生的费用都会略有浮动,但是个人测试大约保持在每 100 次调用花费 1RMB(不同的 API 来源价格不一,这里以 Nekro 中转计算为例),即使是比较高强度地使用也仅和一些游戏的月卡差不多
Q: Windows 能用吗?
A: 由于该机器人的代码执行能力与 Docker 容器调度能力高度绑定,所以目前无法在 Windows 系统上直接部署,但是可以通过虚拟机、wsl 子系统等方式在虚拟化的 Linux 系统中进行部署;另外云服务器环境相对稳定,且可以 24 小时不间断运行,部署起来更加省心省力,加上最近双十一各大服务器厂商均有相关优惠,因此个人最为推荐使用云服务器部署
Q: 调教方向?(生产力 or 扮猫娘?)
A: 理论上来说 NekroAgent 的设计使得其同时具有了一些生产力属性,能够快速地生成内容,甚至直接用于自动化文档操作等,但是由于模型训练的倾向和应用调教问题,目前 NekroAgent 的调教风格更偏向于娱乐性,如果你希望机器人在生产力方面获得更好的效果,你可能需要做一些进阶调整和尝试,例如:
使用 OpenAI 系的 GPT 模型,其调教风格和代码编写能力能够一定程度上提高需求完成率
使用较为简短的、更聪明的人设;如果 AI 扮演过于 “入戏”,她可能会代入智商不太高的人设智商,导致降低需求完成率
关闭与完成任务无关扩展能力,这会消耗掉 AI 为数不多的注意力,导致降低需求完成率
Part 6. 结语
最后,如果你看到了这里,那么恭喜你已经有能力完成一个强大而又独具个性的猫娘机器人的部署!在使用过程中,你可能会产生新的想法,或者需要对机器人进行进一步的个性化定制和扩展。NekroAgent 具备高度开放易扩展的架构,由于篇幅限制,还有更多特别的玩法内容没有在此展示;同时欢迎各路大佬加入项目开源社区,让我们的电子猫猫变得更有趣,更强大!
至此,本教程到此结束,希望你和你的电子猫猫能一起度过愉快的时光!如果喜欢我的项目可以到 NekroAgent 开源仓库 点一个免费的 Start 吗?