
Зроблення ігор сприйнятними для LLM-агентів
Розробники часто стикаються з тим, що LLM-моделі не впораються з розробкою ігор. Новий підхід пропонує зробити ігри сприйнятними для AI за допомогою детермінізму, дифінгу зображень та об'єктів одного типу, щоб агенти могли орієнтуватися в станах гри.
Чому LLM важко працювати з іграми
LLM погано читають ігри в їхньому стані за замовчуванням. На відміну у веб-застосунків, які мають величезну кількість відкритого коду, іграм бракує стандартизованих інструментів, і вони мають багато елементів, які важко витягнути з коду. Коли розробники покладаються на LLM для обробки цих невидимих елементів, моделі зазнають невдач. Основна проблема — це проблема контексту. Оскільки ігри — це не лише код, наявні харнес-системи, які працюють із кодом, недостатні. Розробникам потрібно відкрити чорну коробку гри та зробити її більшу частину безпосередньою доступною для LLM.
Детермінізм та відтворювані стани
Щоб гра стала сприйнятною для агента, важливий детермінізм. Гра має дозволити легко й точно відтворювати конкретний стан. Це вимагає наявності з самого початку єдиного seed-джерела випадковості, яке гарантує, що кожен виклик недетермінованих функцій використовує це джерело. Якщо код викликає випадкову float-функцію 30 разів, 30-й виклик має бути ідентичним щоразу. Відтворювані стани дають агентам змогу повторно досягати тієї ж точки з нуля для перевірки змін. Також рекомендовані вбудовані screenshot API. Увімкнення-вимкнення шарів UI та gameplay зменшує візуальний шум і дозволяє LLM зосередитися на конкретному шарі, над яким відбувається робота.
Зроблення ігор сприйнятними для AI
Візуальне оцінювання через скріншоти може спричинити втрату контексту. Навіть мультимодальним моделем важко розуміти зміни з повного скріншота, що нагадує забруднення контексту. Замість того, щоб просто показувати зображення, розробники мають використовувати дифінг зображень. Такі інструменти, як odiff, можуть порівнювати два зображення та виводити кількісну значимість відмінностей, наприклад, на 85 відсотків схожі. Це дає LLM стабільну базову лінію для оцінки прогресу кожного циклу, поки він намагається зменшити різницю між поточним станом та цільовим зображенням.
Архітектура для агентів: Thing Driven Development
Архітектурний вибір теж має значення. Збереження глибоко об'єктно-орієнтованих ієрархій програмування в AI-агентах спричиняє плутанину, коли вони намагаються з'ясувати, куди вносити зміни. Замість цього розробники мають впровадити Thing Driven Development. Це означає, що все є об'єктом одного типу, тобто Thing, зі значеннями stat та type enum. AI це подобається, бо існує один джерело правди. Немає невизначеності, чи розширити клас, чи створити новий. Збереження та завантаження також стає тривіальним. Гра просто перетворюється на гігантський список Thing-ів, який серіалізується одним способом. Фіксація змін в цих об'єктах можлива за допомогою Command Pattern, із збереженням модифікацій у вигляді серіалізуваних command-об'єктів.
Джерела: kylekukshtel.com
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.