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
