Про 1кк токенов: Засылать миллион токенов на каждый чих игрока в проде - дорого и медленно (растет задержка). Поэтому мы используем скользящее окно истории (последние 4–12 ходов) + автоматическую фоновую суммаризацию старых ходов раз в 12–24 шага. Context window держится в пределах пары тысяч токенов. Как хранится сессия: В PostgreSQL 16. Состояние персонажа (статы, инвентарь, эффекты, погода, время) упаковано в структурированные JSONB-поля, а сообщения чата и локации лежат в нормализованных таблицах. Как устроена карта и RAG: База знаний мира и правила индексируются единоразово при создании/обновлении мира (текст режется на чанки и векторизуется в 768-мерные эмбеддинги через Google API). При запросе игрока на лету ничего не индексируется, а срабатывает гибридный поиск в БД
Пайплайн хода Навигатор (легкая модель) определяет текущий location_slug. RAG-поиск собирает актуальные правила и лор. Сборка промпта: статический промпт (кэшируется провайдером) + динамический контекст (статы, RAG, погода) + история + ввод игрока. Генерация: модель возвращает JSON с нарративом и дельтой изменений. Анти-чит: ActionValidator проверяет наличие предметов в БД, а StateValidator режет нелегитимные начисления ресурсов
Привет! Спасибо за вопросы
Про 1кк токенов: Засылать миллион токенов на каждый чих игрока в проде - дорого и медленно (растет задержка). Поэтому мы используем скользящее окно истории (последние 4–12 ходов) + автоматическую фоновую суммаризацию старых ходов раз в 12–24 шага. Context window держится в пределах пары тысяч токенов.
Как хранится сессия: В PostgreSQL 16. Состояние персонажа (статы, инвентарь, эффекты, погода, время) упаковано в структурированные JSONB-поля, а сообщения чата и локации лежат в нормализованных таблицах.
Как устроена карта и RAG: База знаний мира и правила индексируются единоразово при создании/обновлении мира (текст режется на чанки и векторизуется в 768-мерные эмбеддинги через Google API). При запросе игрока на лету ничего не индексируется, а срабатывает гибридный поиск в БД
Пайплайн хода
Навигатор (легкая модель) определяет текущий location_slug.
RAG-поиск собирает актуальные правила и лор.
Сборка промпта: статический промпт (кэшируется провайдером) + динамический контекст (статы, RAG, погода) + история + ввод игрока.
Генерация: модель возвращает JSON с нарративом и дельтой изменений.
Анти-чит: ActionValidator проверяет наличие предметов в БД, а StateValidator режет нелегитимные начисления ресурсов