各位久等啦!距離上一次 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 嗎?