使用 MINDcraft 與 Novita AI:完整指南

使用 MINDcraft 與 Novita AI:完整指南

MINDcraft 是一項開創性的開源專案,整合大型語言模型(LLM)來控制 Minecraft 機器人,為遊戲帶來全新的互動與創造層次。它利用 Mineflayer 函式庫,讓機器人能夠透過生成高階程式碼來執行複雜任務。此專案不僅展現了 AI 在遊戲中的潛力,也推進了語言模型在虛擬環境中的應用邊界。Novita AI 被推薦為該專案的 API 提供商之一。

MINDcraft 專案概述

MINDcraft 的核心是一個 node.js 應用程式,整合 LLM 來引導 Minecraft 機器人執行各種任務。主要機器人 Andy 可以與玩家對話,並自主設定目標,例如收集資源或建造建築。這讓 Andy 能夠獨立進行遊戲,持續調整並設定新目標,無需人為介入。專案的架構使 Andy 能有效執行指令,並以有意義的方式與遊戲環境互動。

https://www.youtube.com/embed/IeXadWbvDiE

主要特色

  • 語言模型整合:MINDcraft 採用 LLM 生成程式碼,指示機器人在 Minecraft 中的行為。此整合讓 Andy 能透過解讀自然語言指令,將其轉化為可執行的遊戲命令,從而高效完成複雜任務。
  • 自主遊玩:Andy 能獨立設定目標並探索遊戲世界,無需玩家直接輸入即可增強任務執行能力。這種自主性讓 Andy 能嘗試新策略,並根據環境回饋調整行為。
  • 參數化指令:專案引入了類似 Toolformer 的指令,讓 Andy 能更可靠地執行如資源收集等任務。這些參數化指令透過提供可依特定需求自訂的預設動作,簡化了任務執行流程。

MINDcraft 開發與實作

開發過程

靈感與初步工作

MINDcraft 的開發始於一篇關於 Voyager 的重要論文發表之後,該論文引入了用於在 Node.js 中創建 Minecraft 機器人的 Mineflayer 函式庫。不同於以往使用圖像輸入和低階輸出的 AI 研究,Mineflayer 讓 AI 系統能用高階程式碼與 Minecraft 互動,簡化了導航和資源獲取等任務,無需依賴強化學習。

利用 LLM 遵循指令

現代 LLM 擅長程式碼生成與指令遵循,因此很容易讓 LLM 根據人類指令生成 Mineflayer 程式碼,進而創造出 Andy。為了提升 Andy 在執行常見技能時的可靠性,我們實作了參數化指令。例如,Andy 可以直接輸出 !collectBlocks("oak_log", 1),而不需要生成複雜的程式碼。

增強功能與未來方向

隨著時間推移,Andy 的指令集不斷擴充,也加入了自動避開攻擊性生物等行為。最近,Andy 已經能夠透過設定自然語言目標(例如「收集材料來蓋房子」)來獨立遊玩 Minecraft。未來計畫包括程式碼重用、經驗反思、改善空間感知、視覺輸入以及多代理互動。

實作方式

MINDcraft 實作架構圖

Agent 類別與主要邏輯迴圈

MINDcraft 的主要類別是 Agent,每當 Andy 未登入時就會實例化。主要邏輯迴圈位於 handleMessage 中,當玩家向 Andy 發送訊息時執行:

handleMessage(message):
    history.add(message)
    while true:
        hist = history.getHistory()
        response = prompter.promptConvo(hist)
        if containsCommand(response):
            cleanChat(response)
            history.add(response)
            result = executeCommand(this, response)
            history.add(result)
        else:
            cleanChat(response)
            history.add(response)
            break

處理回應與指令

Andy 可以回傳單一回應,或反覆呼叫查詢或動作指令。查詢指令提供世界狀態資訊(例如 !inventory!nearbyBlocks ),動作指令則引發遊戲內行為(例如 !followPlayer(name)!collectBlocks(block) )。所有動作皆透過 Coder 類別中的 execute 方法執行。

自訂程式碼生成

對於建造等複雜行為,Andy 可以透過輸出 newAction 指令進入編碼模式來撰寫自訂程式碼。使用 Coder 類別中的 generateCode 方法,Andy 可以撰寫自訂的 JavaScript 程式碼,並能存取 Mineflayer 以及一系列實用函式。該方法包含用於多次除錯嘗試的迴圈。

情境範例的角色

情境範例對 Andy 回應的品質至關重要。嵌入模型會找出與當前對話歷史相似的範例,並將其加入 LLM 上下文,確保 Andy 能正確使用指令,並在完成任務前查詢所需資訊。

如何執行 MINDcraft

系統需求

  • Minecraft Java 版(最高 v1.21.1,建議 v1.20.4)
  • 已安裝 Node.js(至少 v14)
  • 以下任一項:OpenAI API Key | Gemini API Key | Anthropic API Key | Replicate API Key | Hugging Face API Key | Groq API Key | 已安裝 Ollama | Qwen API Key | Novita AI API Key

安裝與執行

請先確認已滿足上述需求。

  1. 克隆或下載此儲存庫(點擊綠色大按鈕)
  2. keys.example.json 重新命名為 keys.json,並填入你的 API 金鑰(只需一個)。所需的模型在 andy.json 或其他設定檔中設定。其他模型請參考下表。
  3. 在終端機 / 命令提示字元中,從安裝目錄執行 npm install
  4. 開啟一個 Minecraft 世界,並在 localhost 連接埠 55916 上開放至 LAN
  5. 從安裝目錄執行 node main.js

自訂設定

你可以在 settings.js 中設定專案細節。請參閱該檔案。你可以在機器人的設定檔(如 andy.json)中設定代理名稱、模型和提示詞。

API 設定變數 範例模型名稱
Novita AI NOVITA_API_KEY gryphe/mythomax-l2-13b

如何取得 Novita AI API 金鑰

步驟 1:前往 novita.ai 並登入

你可以使用 Google 或 GitHub 帳號登入 Novita AI,首次登入時會自動建立新帳戶。或者,你也可以使用電子郵件地址註冊。

步驟 2:管理 Novita AI LLM API 金鑰

Novita AI 透過在請求標頭中包含 API 金鑰(例如 Authorization: Bearer {API Key})來進行 Bearer 認證,以確保 API 存取安全。若要管理金鑰,請導航至設定中的「金鑰管理」。首次登入時會自動生成一組預設金鑰。你可以點擊「+ 新增金鑰」來建立更多金鑰。

Novita 金鑰管理頁面

步驟 3:儲值額度

Novita AI 為新用戶提供附有一定額度的優惠券,讓你可以試用我們的產品。如需增加更多額度,請前往 帳單與付款,並依照 付款方式 的指南操作。

實用連結與資源

結論

MINDcraft 代表了 AI 在遊戲環境中的一項重大進展。透過善用 LLM 的威力,它為 Minecraft 開啟了創造力與互動的新可能性。隨著專案持續演進,社群參與和回饋將在塑造其未來發展中扮演關鍵角色。專案的開源性質鼓勵對探索 AI 與遊戲交會點感興趣的開發者與研究人員進行協作。

原文發表於 Novita AI

Novita AI 是一個 AI 雲端平台,讓開發者能透過簡單的 API 輕鬆部署 AI 模型,同時提供價格實惠且可靠的 GPU 雲端服務,用於建立與擴展應用程式。