Хайп вокруг VLM-агентов, способных "видеть" и "действовать", не утихает. Но как только дело доходит до практики, встает главный вопрос: а как, собственно, измерить, какой ИИ-агент "умнее"? Прогнать его по MMLU? Скучно и нерелевантно для оценки действия в динамической среде.
Именно здесь на сцену выходят игровые бенчмарки. Игры — это идеальные песочницы: сложные, с четкими правилами, измеримыми результатами и бесконечной вариативностью. Сегодня мы не просто рассмотрим два open-source проекта для оценки VLM-агентов, а столкнем лбами две фундаментально разные философии их тестирования.
С одной стороны у нас VideogameBench — проект, проверяющий широту компетенций, своего рода "декатлон" для ИИ. С другой — LLM Colosseum, который тестирует глубину тактического мышления и скорость реакции.
Так что же важнее для современного VLM-агента: быть эрудитом, способным пройти и Civilization, и Zelda, или быть мастером одного дела, молниеносно принимающим решения в Street Fighter? Давайте разбираться.
Прежде чем лезть в код и архитектуру, важно понять идеологическую разницу подходов. От нее зависят и выбор игр, и метрики, и даже стиль промптов.
VideogameBench (VGB) ставит перед моделью глобальную задачу: доказать свою общую компетентность в максимально разнообразных условиях.
Агент должен показать, что он может быть и стратегом, и тактиком, и исследователем.
LLM Colosseum исповедует совершенно иную философию. Он не распыляется на жанры.
Здесь не нужно учиться новому; нужно довести до совершенства имеющиеся навыки в условиях жесткого противостояния.
Оба подхода имеют право на жизнь, но они тестируют совершенно разные аспекты "интеллекта" VLM-агента. Теперь посмотрим, как эти философские различия реализуются на техническом уровне.
Философские различия неизбежно ведут к разным техническим решениям.
VGB использует два совершенно разных подхода к эмуляции, что подчеркивает его фокус на адаптивности агента.
1. Игры для Game Boy (GBA): Для классики вроде Zelda или Pokémon Crystal используется библиотека PyBoy. Это нативный Python-эмулятор, что дает огромное преимущество в простоте интеграции. Взаимодействие с игрой происходит через прямые вызовы API.
В файле src/emulators/gba/interface.py
мы видим, как текстовые команды агента мапятся на конкретные события эмулятора:
BUTTON_MAP = {
'A': WindowEvent.PRESS_BUTTON_A,
'B': WindowEvent.PRESS_BUTTON_B,
'SELECT': WindowEvent.PRESS_BUTTON_SELECT,
'START': WindowEvent.PRESS_BUTTON_START,
'RIGHT': WindowEvent.PRESS_ARROW_RIGHT,
# ... и так далее
}
Агент думает: "нажать A"
, и скрипт выполняет pyboy.send_input(WindowEvent.PRESS_BUTTON_A)
. Просто, быстро и надежно.
2. Игры для MS-DOS: А вот для DOS-игр вроде Doom II или Civilization выбран нетривиальный путь. Игры запускаются в эмуляторе JS-DOS, который работает прямо в браузере. Агент взаимодействует с этим браузером через Playwright — фреймворк для веб-автоматизации.
Агент генерирует JSON-подобные команды, которые затем парсятся и исполняются BrowserController
'ом:
{
"thought": "I need to move the character left in the game",
"action": "press_key",
"action_input": "ArrowLeft"
}
Для мыши агент указывает координаты ("action": "move_mouse", "action_input": "320,200"
), а Playwright
имитирует человекоподобное движение курсора по canvas
элемента браузера.
[!INFO] Черный ящик против прямого доступа
Ключевое различие: для GBA-игр у агента есть потенциальный доступ "внутрь" эмулятора (память, состояние). Для DOS-игр эмулятор — это полный черный ящик (веб-страница), и единственные каналы взаимодействия — это скриншот на вход и симуляция нажатий на выход. Это заставляет VLM-агента полагаться исключительно на зрение, как это делал бы человек.
LLM Colosseum не изобретает велосипед, а берет готовое, проверенное в боях решение — Diambra Arena. Это платформа, построенная на базе эмуляторов MAME и RetroArch, специально заточенная для соревнований ИИ в играх.
"нажать Вниз, Вперед, Удар"
, агент может сказать "Fireball"
. В файле agent/config.py
эти мета-инструкции уже разложены на последовательности нажатий:COMBOS = {
"Fireball (Hadouken)": {"right": [7, 6, 5, 10], "left": [7, 8, 1, 10]},
# ...
}
observe
в agent/robot.py
также извлекает из эмулятора структурированные данные:character_position
: координаты своего персонажа.ennemy_position
: координаты противника.super_bar_own
: уровень своей шкалы "супер-удара".health
: уровень здоровья обоих игроков.Эти данные потом явно передаются в промпт. То есть агент не должен угадывать по картинке, где он находится или сколько у него здоровья, — он это знает. Это смещает фокус с распознавания образов на чистое тактическое принятие решений.
Как проекты определяют победителя? Здесь их пути снова расходятся.
VGB использует систему чекпоинтов (checkpoints). Для каждой игры подготовлен набор эталонных скриншотов, которые соответствуют ключевым моментам прохождения.
DOSEvaluator
или GBEvaluator
берет текущий скриншот с экрана. Затем этот скриншот сравнивается с хэшем следующего чекпоинта из списка.imagehash.average_hash
). Вместо попиксельного сравнения, которое чувствительно к малейшим артефактам, p-hash создает "отпечаток" изображения. Функция is_same_hash
в src/utils.py
считает расстояние Хэмминга между хэшами. Если оно меньше заданного порога (threshold
), чекпоинт считается пройденным.def is_same_hash(img_hash: ImageHash, ref_hash: ImageHash, threshold: int = 1, verbose: bool = False) -> bool:
# Hamming distance
dist = img_hash - ref_hash
if verbose:
print("Current hash dist:", dist, dist <= threshold, threshold)
return dist <= threshold
LLM Colosseum, как и подобает соревновательной платформе, использует рейтинговую систему Эло. Это классический подход из мира шахмат и киберспорта для оценки относительной силы игроков.
elo_update
в eval/game.py
реализует стандартную формулу Эло. Рейтинг изменяется в зависимости от:def elo_update(winner_rating, loser_rating, k=32):
expected_score_winner = elo_expected_score(winner_rating, loser_rating)
# ...
new_winner_rating = winner_rating + k * (1 - expected_score_winner)
new_loser_rating = loser_rating + k * (0 - expected_score_loser)
return new_winner_rating, new_loser_rating
Ваша поддержка — это энергия для новых статей и проектов. Спасибо, что читаете!
Так какой же бенчмарк "лучше"? Ответ: оба. Они не конкуренты, а взаимодополняющие инструменты.
VideogameBench — это идеальный инструмент для оценки базовой когнитивной гибкости VLM-агента. Он отвечает на вопрос: "Эта модель вообще способна обучаться и действовать в разнообразных мирах?". Это необходимый входной тест для любого универсального агента. Если модель не может пройти Kirby, нет смысла ставить ее управлять роботом-пылесосом.
LLM Colosseum — это инструмент для тонкой настройки и сравнения уже состоявшихся агентов в условиях высокого стресса. Он отвечает на вопрос: "Какая из этих двух моделей быстрее и тактически грамотнее?". Это идеальный бенчмарк для задач, где важна скорость реакции и глубина планирования в узкой области, например, в биржевом трейдинге или управлении дронами.
Вместе они дают объемную картину возможностей VLM:
Будущее, очевидно, за гибридными бенчмарками, которые смогут измерять и широту, и глубину. Но уже сегодня, благодаря таким open-source проектам, мы можем перестать гадать на кофейной гуще и начать измерять реальные способности ИИ-агентов.