РелизРазбор · На радарHabr AI→ оригинал

Разработчик снизил медианную цену хода LLM-игры до 0,34 рубля

Один запрос к LLM должен одновременно продолжить сюжет, рассчитать бой и обновить память персонажей. Автор AniWorlds добился согласованности не дополнительными агентами, а порядком полей в JSON: сначала модель фиксирует решение, затем пишет зависящий от него текст. Сервер берёт на себя кубики, ресурсы и откаты, а повторяемые части контекста уходят в кеш. На 71 ходе медианная цена составила 0,34 рубля.

AI-обработка оригинала Habr AI; редакция Hamidun News
Разработчик снизил медианную цену хода LLM-игры до 0,34 рубля
Источник: Habr AI. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHabr AI ↗
Главный редактор
Ключевой факт #1Решение должно появляться в JSON раньше текста, который от него зависит.
Ключевой факт #2Кубики, ресурсы и откаты лучше считать кодом, а модели оставить рассказ.
Ключевой факт #3Любую правку правил стоит проверять серией прогонов, а не одним ответом.

В текстовой RPG один ответ модели должен сделать сразу несколько вещей: продолжить сцену, разрешить действия игрока, обновить раны и отношения, сохранить память персонажей и подготовить следующий ход. Если хотя бы два поля расходятся, история начинает разваливаться. Удар попал в описании, но не попал в расчёте. Персонаж узнал тайну, хотя не присутствовал при разговоре. Спутник сначала ушёл, а в следующем поле остался рядом.

Автор Telegram-игры AniWorlds столкнулся именно с этой инженерной проблемой. Вместо цепочки агентов он использует один запрос и получает JSON из 38 полей. Главный практический вывод неожиданно простой: порядок полей в структурированном ответе влияет на согласованность результата.

Сначала решение, потом рассказ

Модель генерирует JSON последовательно. Следующее поле может учитывать уже написанное, но не способно вернуться назад и переписать предыдущее. Поэтому скрытое решение — например, попал ли удар — должно стоять раньше художественного описания боя.

Когда порядок был обратным, рассказчик мог сначала красочно описать попадание, а затем записать в поле результата промах. Уговоры в системном промпте не устраняли противоречие надёжно. Перестановка полей устранила сам источник ошибки: модель сначала фиксирует исход, затем описывает его последствия.

Второй принцип — одно решение должно жить в одном месте. Если поведение спутника одновременно определяют правило перехода между локациями и отдельное правило спутников, ответы начинают расходиться. В AniWorlds решение вынесли в единственное поле, а остальные части схемы только используют его результат.

Что нельзя доверять рассказчику

Случайность и точную арифметику автор оставил серверу. Для каждого участника боя код бросает два кубика d6, учитывает характеристику и передаёт модели готовые числа. Модель не решает, кому повезло: она рассчитывает итог по заданным данным и превращает его в сцену.

Так же устроены стоимость способностей, запас сил и откаты. Сервер заранее сообщает, сколько ресурса осталось и какие действия недоступны. Это снижает риск того, что рассказчик забудет прошлый расход или самовольно изменит правила ради красивого эпизода.

Есть и отдельная граница знаний. После исхода модель записывает, что именно видели и слышали персонажи. Их память обновляется только из этого поля, а не из полного сообщения игрока. Решение пока не идеально: в части тестов персонажи всё ещё получают лишнюю информацию. Автор честно отмечает, что улучшение ещё не доказано.

Цена контекста и цена ошибки

Полный вход занимает 45–53 тысячи токенов. Правила и описание мира почти не меняются, поэтому стоят в начале запроса и попадают в кеш провайдера. По 71 ходу медианная цена одного запроса составила 0,34 рубля, средняя — 0,57 рубля. Без попадания в кеш ход обходился примерно в 1,25 рубля.

Причина дорогих промахов оказалась прозаичной: идентификаторы групп создавались заново на каждом ходе. Даже один изменившийся символ нарушал совпадение префикса. После закрепления постоянных идентификаторов кеш стал стабильнее. Это полезный урок для любого LLM-продукта: кеш зависит не от смысловой похожести, а от неизменности входных данных.

Правки автор проверяет сериями по 10 одинаковых запросов и фиксирует долю ошибок. Критерий приёмки — 10 ответов из 10 без выбранного дефекта. Это не доказывает абсолютную надёжность, зато не позволяет объявить проблему решённой после одного удачного примера. Перед выпуском правила дополнительно читают две чистые сессии модели, а затем изменение проходит 20 живых ходов.

Практический вывод шире игр. Для систем со структурированным выводом сначала размещайте факты и решения, затем зависимый текст. Детерминированные расчёты держите в коде. Каждому решению назначайте один источник истины. Стабильную часть контекста делайте побайтно неизменной. И измеряйте качество сериями прогонов: уверенное «готово» от ассистента ещё не означает, что ошибка исчезла.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: сначала решение, потом рассказ?

Модель генерирует JSON последовательно. Следующее поле может учитывать уже написанное, но не способно вернуться назад и переписать предыдущее. Поэтому скрытое решение — например, попал ли удар — должно стоять раньше художественного описания боя. Когда порядок был обратным, рассказчик мог сначала красочно описать попадание, а затем записать в поле результата промах. Уговоры в системном промпте не устраняли противоречие надёжно.

Что известно по теме: что нельзя доверять рассказчику?

Случайность и точную арифметику автор оставил серверу. Для каждого участника боя код бросает два кубика d6, учитывает характеристику и передаёт модели готовые числа. Модель не решает, кому повезло: она рассчитывает итог по заданным данным и превращает его в сцену. Так же устроены стоимость способностей, запас сил и откаты. Сервер заранее сообщает, сколько ресурса осталось и какие действия недоступны. Это снижает риск того, что рассказчик забудет прошлый расход или самовольно изменит правила ради красивого эпизода.

Что известно по теме: цена контекста и цена ошибки?

Полный вход занимает 45–53 тысячи токенов. Правила и описание мира почти не меняются, поэтому стоят в начале запроса и попадают в кеш провайдера. По 71 ходу медианная цена одного запроса составила 0,34 рубля, средняя — 0,57 рубля. Без попадания в кеш ход обходился примерно в 1,25 рубля. Причина дорогих промахов оказалась прозаичной: идентификаторы групп создавались заново на каждом ходе. Даже один изменившийся символ нарушал совпадение префикса. После закрепления постоянных идентификаторов кеш стал стабильнее.

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Единое AI-пространство · Nomad

Протестируйте новые LLM и мультимодальные модели в одном окне

Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.

Открыть Nomad AI →Автономный Nomad Agent
Что вы думаете?
Загружаем комментарии…