Minecraft AI бот с Nemotron 9B: архитектура на vLLM и Mineflayer | AiManual
AiManual Logo Ai / Manual.
09 Мар 2026 Инструмент

Как создать игрового бота в Minecraft с локальной LLM Nemotron 9B: разбор архитектуры на vLLM и Mineflayer

Пошаговый гайд по созданию умного Minecraft бота с локальной LLM Nemotron 9B. Используем vLLM для инференса и Mineflayer для взаимодействия с игрой.

Зачем Minecraft боту мозги размером с Nemotron 9B?

Вы когда-нибудь кричали в монитор "Стив, иди налево!"? Теперь представьте, что Стив не просто слушается команд, а понимает их смысл. "Построй ферму автоматического выращивания картошки рядом с рекой" — и он уже копает. Это не мод, а связка из трех технологий: локальной языковой модели, системы инференса и игрового клиента.

Стандартные Minecraft боты работают по скриптам. Наш — думает. И делает это на вашем железе, без облаков и подписок.

На 09.03.2026 актуальная версия Nemotron — 9B-2025-Q8 (8-битная квантованная). vLLM обновили до 0.5.2 с поддержкой continuous batching. Mineflayer дорос до 4.3.0. Если в статьях 2024 года вы видели другие версии — забудьте. Здесь всё свежее.

Что склеивает Python, Node.js и кубический мир?

Архитектура выглядит как франкенштейн из трех компонентов. Но работает. Сердце — Nemotron 9B, запущенная через vLLM на Python. Мозг, если угодно. Тело — Mineflayer бот на Node.js, который умеет ходить, ломать блоки и читать чат. А между ними — Flask-мост, который переводит мысли в действия.

Почему именно так? Потому что Mineflayer — Node.js библиотека, а vLLM — Python фреймворк. Они не говорят на одном языке. Flask выступает переводчиком: принимает запросы от бота, передает их модели, возвращает структурированные команды.

1 Запускаем мозг: vLLM и Nemotron 9B

В 2026 году запустить локальную модель проще, чем два года назад. Но требования к железу остались. Для Nemotron 9B-2025-Q8 нужно минимум 12 ГБ VRAM. Нет такой карты? CloudGPU сдаёт инстансы с A100 почасово. Или возьмите квантованную версию Q4 — влезет в 8 ГБ.

pip install vllm==0.5.2
git-lfs clone https://huggingface.co/nvidia/Nemotron-9B-2025-Q8
vllm serve nvidia/Nemotron-9B-2025-Q8 --port 8000 --max-model-len 4096

Флаг --max-model-len важен. Minecraft команды бывают длинными, а контекст у модели ограничен. 4096 токенов хватит для диалога с ботом.

💡
Если vLLM ругается на память, попробуйте --gpu-memory-utilization 0.9. Но будьте готовы к тому, что система может стать нестабильной. Впрочем, это обычная история с локальными LLM — как в том LocalLlama Discord, где половина сообщений состоит из криков о OOM ошибках.

2 Тело бота: Mineflayer и его ограничения

Mineflayer — не панацея. Он не умеет всё, что умеет игрок. Зато он стабилен и имеет чёткий API. Установка проста:

npm install mineflayer@4.3.0 mineflayer-pathfinder@2.4.0

Бот подключается к локальному серверу Minecraft. Да, вам нужен запущенный Minecraft сервер. Spigot, Paper или vanilla — не важно. Главное, чтобы версия совпадала с поддержкой Mineflayer.

Самый частый вопрос: "Почему не использовать ComputerCraft или моды?" Потому что мы хотим универсальность. Mineflayer работает поверх протокола, не требуя модов на сервере. Бот — просто ещё один клиент.

3 Мост-переводчик: Flask сервер с structured output

Самая хитрая часть. Бот отправляет в чат "Собери дерева". Mineflayer ловит сообщение, отправляет его на Flask сервер. Тот формирует промпт для Nemotron, получает ответ, парсит его в JSON и возвращает боту список действий.

Промпт выглядит так:

Ты — AI помощник в Minecraft. Игрок сказал: "Собери дерева".
Текущее состояние: позиция (x: 120, y: 64, z: -30), в инвентаре 5 блоков земли.
Вокруг тебя есть дубы.

Верни JSON в формате:
{
  "actions": [
    {"type": "move", "target": [x, y, z]},
    {"type": "mine", "block": "oak_log", "count": 10}
  ]
}

Nemotron 9B умеет в structured output. Не идеально, но в 90% случаев выдает валидный JSON. Flask сервер проверяет валидность и отправляет действия боту.

Код сервера:

from flask import Flask, request, jsonify
import requests
import json

app = Flask(__name__)
VLLM_URL = "http://localhost:8000/generate"

@app.route('/process', methods=['POST'])
def process_command():
    data = request.json
    player_message = data['message']
    world_state = data['state']
    
    prompt = f"""Ты — AI помощник в Minecraft. Игрок сказал: \"{player_message}\".\n"""
    prompt += f"Текущее состояние: {json.dumps(world_state)}\n\n"
    prompt += "Верни JSON с действиями..."
    
    response = requests.post(VLLM_URL, json={
        "prompt": prompt,
        "max_tokens": 500,
        "stop": ["\n"]
    })
    
    try:
        actions = json.loads(response.json()['text'])
        return jsonify({"actions": actions})
    except json.JSONDecodeError:
        return jsonify({"error": "Модель выдала мусор"}), 500

Чем это лучше альтернатив? (Спойлер: не всегда лучше)

Есть три подхода к AI ботам в играх:

Метод Плюсы Минусы
Наша связка (LLM + Mineflayer) Понимает естественный язык, не требует модов, работает локально Медленно (200-500 мс на запрос), требует GPU, иногда "глючит"
Традиционные скрипты (JavaScript/Python) Быстро, надёжно, предсказуемо Нужно программировать каждое действие, нет гибкости
Vision-based боты (компьютерное зрение) Работает с любыми играми, не требует API Очень ресурсоёмко, нестабильно, сложно настроить

Наш метод выигрывает в гибкости, но проигрывает в скорости. Нужно выбирать по ситуации. Для автоматизации рутины (копание туннелей, сортировка предметов) лучше скрипты. Для творческих задач (постройка по описанию, исследование) — LLM.

Где этот бот сломается сразу? (Предупреждения от того, кто уже наступал на грабли)

Не повторяйте этих ошибок:

  • Доверять модели координаты. Nemotron иногда "галлюцинирует" числа. Всегда проверяйте, что целевые координаты в пределах разумного.
  • Отправлять длинные контексты. Если вы передадите в промпт весь инвентарь (200 предметов), модель захлебнётся. Используйте суммаризацию.
  • Забывать про задержки. Между командой игрока и действием бота проходит 0.5-2 секунды. В динамичных ситуациях (PvP) это смертельно.

И главное: не оставляйте бота без присмотра на публичном сервере. Администраторы банят за подозрительную активность. А бот, который часами крутится на одном месте, выглядит очень подозрительно.

💡
Если бот должен принимать тактические решения (как в "Битвах Големов"), добавьте в промпт правила игры. Но помните: чем сложнее правила, тем чаще модель ошибается.

Кому стоит попробовать эту архитектуру?

Не всем. Если вы хотите просто автоматизировать ферму — есть моды. Если изучаете LLM и их применение в играх — это ваш кейс.

Идеально для:

  • Разработчиков, тестирующих NPC с "естественным" поведением
  • Энтузиастов локальных AI, которые уже запускали Discord бота на Raspberry Pi
  • Создателей контента, которым нужен бот для стримов или видео
  • Исследователей, изучающих grounding (привязку языковых команд к действиям в среде)

Совершенно бесполезно для:

  • Скоростного прохождения игры
  • PvP ситуаций (бот проиграет даже новичку)
  • Серверов с античитом (вас забанят в первую же минуту)

Что будет дальше? (Прогноз на 2027)

К 2027 году такие боты станут проще. Причины:

  1. Модели типа Nemotron станут меньше и точнее. Ожидайте 3B параметров с качеством сегодняшних 9B.
  2. Появятся специализированные LLM для игр, обученные на игровых логиках.
  3. Интеграция Mineflayer и vLLM станет нативной — не нужен будет Flask мост.

Но главное — изменится подход. Вместо "бот выполняет команды" будет "бот живёт в мире". Он будет иметь память, цели, curiosity drive. Как в AI Dungeon Master, но для Minecraft.

Попробуйте сейчас. Пока это сложно и глючно. Зато через год вы сможете сказать: "Я делал такое, когда это было хардкором".

Подписаться на канал