0. 什麼是 Naturel_GPT ?
Naturel_GPT 是一個開源免費的,基於 nonebot2 平臺的聊天 AI 插件,它可以讓你用自然語言和不同的人格進行交流,還可以調用各種擴展功能,如發送圖片、語音、郵件,以及上網進行搜索等。你可以自定義 TA 的性格、回覆風格等,也可以隨時切換不同的人格。TA 還有一定的記憶能力,可以記住對你的印象和聊天記錄,甚至可以澀..(劃掉)扮扮貓娘什麼的更是不在話下。還支持接入 Minecraft 服務器,讓 TA 在遊戲中執行各種複雜的 NBT 指令等。NG 是一個人性化、有趣、強大、可擴展的聊天 AI 插件。
該項目於23年一月末開始立項開發,經過數月的迭代開發,目前版本功能相對穩定,但仍有一些 bug 和不足之處,歡迎大家提出建議和意見。項目開源地址 ,當然,在此過程中,也有許多羣友分享了各種有趣的人設,歡迎體驗! 谷歌文檔
爲了部署該項目,你需要準備以下內容:
- 一臺用於部署 NG 的服務器(本地PC也可,但是部署操作略有不同;雲服務器可以24小時運行,並且不佔用本地資源,更適合實用環境,故本教程以雲服務器環境爲例)
- 一個有試用餘額的 openai 賬號(新賬號默認贈送5刀)
- 一個用於運行 bot 的 qq 賬號
效果演示:
角色扮演
探討人生
奇怪play
替身召喚
想不出
前置知識
- 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
- 編輯 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導致圖片全被喫掉了重新填了一遍
如果對你有幫助的話歡迎點個贊支持!(暗示
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com