續上期教程,本期的主題是 Naturel_GPT 的擴展模塊使用和 Minecraft 服務器接入,另附擴展編寫基礎教程,供有動手能力的玩家參考
溫馨提示:本教程覆蓋內容較廣,請自主選擇需要的信息進行閱讀,爲了獲得較好的閱讀體驗,建議先了解上期內容
爲了方便 PC 端閱讀同時進行操作,本期教程已同步發佈至 知乎專欄
4. 擴展
類似於 OpenAI 官方的 ChatGPT Plugins,Naturel_GPT 也提供了自定義擴展功能,可以完成大部分“事先封裝好的,能夠通過自然語言描述使用方式和需求的任務”
4.1 效果展示
啓用擴展列表命令
發送郵件
谷歌搜索
語音測試
以上僅演示部分擴展,如果想了解更多,可以查看Github 倉庫的擴展列表
注:演示使用的是 gpt-4 的模型和谷歌的搜索接口
4.2 原理簡介
一般來說,ChatGPT 的模型只能產生文字內容的響應信息,但是如果我們事先與其“約定”好一種特定的調用格式,當它發送這種格式的信息時,我們就能夠理解爲它想要使用某功能,從而使用預先編寫好的擴展程序去代替它完成這些操作,並且支持由 ChatGPT 自行指定參數,從而實現強大的擴展性。
4.3 如何使用
要使用擴展,你需要進行兩步操作:1. 下載擴展 -> 2. 配置擴展
4.3.1 獲取擴展
- 方式一:倉庫來源(推薦): 你可以從本項目的Github 倉庫的擴展列表中獲取已編寫好的擴展模塊,以 sexnyan_pic 擴展爲例,安裝指令爲rg ext add sexnyan_pic(確保你有 bot 超級管理權限,然後直接在聊天欄使用該命令即可)
- 方式二:第三方來源: 你可以使用任何其它用戶自行編寫的擴展程序,但是請注意僅從你信任的來源獲取,否則可能包含危險代碼! 安裝步驟:將你需要安裝的擴展 (通常是ext_xxx.py) 放入擴展模塊存放目錄(默認nonebot目錄/data/naturel_gpt/extensions/)
4.3.2 進行擴展配置
編輯 Naturel_GPT 的配置文件 (位於:nonebot目錄/config/naturel_gpt.config.yml)
編輯配置以下兩項配置項(#號後內容爲註釋,可刪除):
NG_ENABLE_EXT: true # 擴展總開關,設爲 true 纔會執行擴展加載
NG_EXT_LOAD_LIST:
- EXT_NAME: ext_random # 擴展文件名 (不含'.py')
IS_ACTIVE: true # 是否啓用 (設爲啓用纔會加載擴展,同時需要保證 NG_ENABLE_EXT 項開啓)
EXT_CONFIG: # 擴展配置 如該擴展插件無要求可不寫此項
arg: value # 填寫示例 -> 參數名: 參數值 (注意縮進必須在EXT_CONFIG下一級)
- EXT_NAME: ext_xxx # 多個擴展按此形式依次填寫
- 示例:啓用 sexnyan_pic 和 VOICEVOX 擴展
NG_ENABLE_EXT: true
NG_EXT_LOAD_LIST:
- EXT_NAME: ext_sexnyan_pic
IS_ACTIVE: true
- EXT_NAME: ext_VOICEVOX
IS_ACTIVE: true
EXT_CONFIG:
ng_voice_translate_on: true
tencentcloud_common_region: ap-shanghai
tencentcloud_common_secretid: AKID*********************************2DJ
tencentcloud_common_secretkey: 0jD*********************************duwjI
g_voice_tar: ja
is_base64: false
api_url: xxx.xxx.xxx:50021
character: ずんだもん
注:擴展中需要的接口 api 需要自行申請(如上述騰訊翻譯 api 等)
4.3.3 重啓 Nonebot 應用擴展
要檢查擴展是否加載成功,可使用!rg ext查看加載的擴展列表
4.3.4 擴展使用
擴展成功加載後就會出現在 bot 回覆的“可用擴展功能”中,TA 會在對話中根據語境和需求主動地調用擴展,如果出現調用不積極或者效果不佳,可以在 bot 人設中具體描述你希望的使用方式以供參考
5. Minecraft 服務器鏈接
注意事項:
- Minecraft 服務器適配器不一定適用於所有 MC 服務器,此處以 1.19.4 的 spigot 端爲例,其它服務端請參考mc_qq安裝文檔安裝服務端適配插件
- 如需使用本插件接入您的服務器,爲了避免 bot 使用高危指令,請自行配置合理指令黑白名單,嚴格限定 bot 的行爲在特定範圍,作者不對任何使用本插件所導致的任何後果負責
- 爲了提高 bot 執行指令的準確度,建議在人格設定中給出服務器的基本信息(版本、插件等),並提供一定的指令示例
5.1 NoneBot 端適配
5.1.1 MC適配器安裝
nb adapter install nonebot-adapter-spigot
- 如果你的 MC 服務端和 Nonebot 服務端不在同一臺服務器上,需要在 .env.prod 中將 NoneBot 的監聽地址(HOST=127.0.0.1)改爲HOST=0.0.0.0並放行對應端口(PORT字段指示的端口),否則會導致連接失敗
5.2 Minecraft 服務端適配
- 參考mc_qq 安裝文檔安裝服務端插件(即下載適合的插件丟進服務端 plugins 文件夾中)
- 啓動一次服務端,生成 mc_qq 配置文件
- 將生成的配置文件中websocket_url: "ws://127.0.0.1:8765"的值部分應改爲ws://Nonebot服務器ip:Nonebot監聽端口/spigot/ws(如下圖)
修改完畢後啓動 Minecraft 服務器和 Nonebot 即可
5.3 RCON 配置
RCON 是 Minecraft 服務端的遠程控制協議,用於執行遊戲內指令,如果需要使用指令執行功能,需要開啓 RCON 並配置密碼;如果僅想使用基本聊天功能可跳過此步
在本插件中,RCON 以擴展調用的形式工作,故需要先安裝 ext_mc_command 擴展模塊
5.3.1 服務端配置
- 安裝參考上述擴展安裝教程安裝擴展ext_mc_command並填寫好相關配置
- 在 MC 服務端server.properties文件中編輯enable-rcon=true和rcon.password=你的密碼兩項
- 在本插件配置文件(naturel_gpt_config.yml)中編輯 MC_RCON 相關配置項爲你的服務器配置信息(你應該打開過無數次這個文件了,在此就不再贅述了)
至此配置完成,請啓動服務器和 nonebot 查看插件是否工作正常
6. 如何編寫一個擴展
6.1 前置知識
編寫擴展只需要具備基礎的 Python 編程知識和能力,還有良好的功能設計思維
6.2 擴展模板
你可以在 Github 倉庫中找到一份基本的擴展編寫模板,並在此基礎上編寫你的自定義邏輯
這裏以隨機數生成爲例,提供一個擴展編寫的例子
- 擴展名、擴展參數、擴展使用描述是面向 bot 使用視角的,使用英文編寫可以有效降低 token 消耗
- 上例中獲取的參數是實際對話流程中 bot 提供的參數,如果要獲取 naturel_gpt_config.yml 中的擴展參數請使用custom_config.get('參數名', 默認值)
- 返回結果有多種形式,一些形式會導致再次觸發 bot 響應(例如需要執行搜索或者定時器的場景),也可以將一些執行信息插入到對話上下文中以便 bot 參考,可根據實際需求參考對應擴展的實現代碼瞭解學習
至此你已經理解了整個 Naturel_GPT 的應用內容,歡迎關注Github 項目發佈頁探索更多內容、查看更新版本或參與項目的開發探討
最後,如果你認爲這個項目對你有幫助的話,歡迎留下你的 ⭐ ,謝謝!
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com