使用MINDcraft与Novita AI:全面指南

使用MINDcraft与Novita AI:全面指南

MINDcraft 是一个突破性的开源项目,它将大语言模型(LLM)集成用于控制《我的世界》中的机器人,为游戏内的交互和创造力提供了全新维度。该项目利用 Mineflayer 库,使机器人能够通过生成高级代码来执行复杂任务。此项目不仅展示了AI在游戏中的潜力,还推动了语言模型在虚拟环境中实现可能性的边界。Novita AI 被推荐为该项目的API提供商之一。

MINDcraft 项目概述

MINDcraft 本质上是一个 Node.js 应用程序,它集成 LLM 来指导《我的世界》中的机器人执行各种任务。主机器人名为 Andy,可以与玩家通信并自主设定目标,例如收集资源或建造建筑。这一能力使 Andy 能够独立进行游戏,不断调整并设定新目标,无需人工干预。项目的架构使 Andy 能够高效执行命令,并以有意义的方式与游戏环境交互。

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

主要功能

  • 语言模型集成:MINDcraft 使用 LLM 生成代码,以指导机器人在《我的世界》中的行动。这种集成使 Andy 能够通过将自然语言指令解释为可执行的游戏命令,高效地执行复杂任务。
  • 自主游戏:Andy 可以独立设定目标并导航游戏世界,从而增强其在无玩家直接输入的情况下执行任务的能力。这种自主性使 Andy 能够探索新策略,并根据环境反馈调整自身行为。
  • 参数化命令:该项目采用了类似于 Toolformer 中的命令,使 Andy 能更可靠地执行如资源收集等任务。这些参数化命令通过提供可基于特定要求定制的预定义操作,简化了任务执行。

MINDcraft 开发与实现

开发

灵感与初始工作

MINDcraft 的开发始于一篇关于 Voyager 的著名论文发布之后,该论文引入了 Mineflayer 库,用于在 Node.js 中创建《我的世界》机器人。与以往使用图像输入和低级输出的AI研究不同,Mineflayer 允许AI系统使用高级代码与《我的世界》交互,从而简化了导航和资源获取等任务,无需强化学习。

利用 LLM 进行指令跟随

现代 LLM 在代码生成和指令遵循方面表现出色,因此很容易对 LLM 进行条件设置,使其根据人类指令生成 Mineflayer 代码,从而创建了 Andy。为了实现 Andy 在执行常见技能时的可靠性,实现了参数化命令。例如,Andy 可以输出 !collectBlocks("oak_log", 1) 而不是生成复杂的代码。

增强与未来方向

随着时间的推移,Andy 的命令集得到了扩展,并添加了自动行为,例如避开攻击性生物。最近,Andy 可以通过设定自然语言目标(例如“收集材料建造房屋”)独立进行《我的世界》游戏。未来的计划包括代码重用、经验反思、改进的空间感知、视觉输入以及多智能体交互。

实现

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 密钥 | Gemini API 密钥 | Anthropic API 密钥 | Replicate API 密钥 | Hugging Face API 密钥 | Groq API 密钥 | 已安装 Ollama | Qwen API 密钥 | Novita AI API 密钥 |

安装与运行

确保满足上述要求。

  1. 克隆或下载此仓库(绿色大按钮)
  2. keys.example.json 重命名为 keys.json 并填写你的 API 密钥(只需一个)。所需模型在 andy.json 或其他配置文件中设置。其他模型请参考下表。
  3. 在终端/命令提示符中,从安装目录运行 npm install
  4. 启动一个《我的世界》世界,并在 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 密钥包含在请求头中的 Bearer 认证来保护 API 访问,例如 “Authorization: Bearer {API Key}”。要管理你的密钥,请导航到设置中的 “Key Management”。首次登录时会自动生成一个默认密钥。你可以通过点击 “+ Add New Key” 创建更多密钥。

Novita 密钥管理页面

步骤 3:充值额度

Novita AI 为新用户提供带有一定额度的代金券,以便试用我们的产品。若要添加更多额度,请访问 账单与支付 并参考 支付方式 指南。

有用链接与资源

结论

MINDcraft 代表了游戏环境中AI研究的重大进展。通过利用 LLM 的力量,它为《我的世界》中的创造力和交互开辟了新的可能性。随着项目的不断发展,社区参与和反馈将在塑造其未来发展中发挥关键作用。该项目的开源特性鼓励了对AI与游戏交叉领域感兴趣的开发者和研究人员之间的合作。

原文发布于 Novita AI

Novita AI 是一个AI云平台,为开发者提供简单的API来部署AI模型,同时提供经济实惠且可靠的GPU云服务,用于构建和扩展应用。