Долгие запросы к модели вытесняют синхронные вызовы из бэкенда
Запрос к языковой модели легко выходит за привычные для веб-приложения границы времени ответа. Обработчик держит соединение, балансировщик рвёт его по таймауту, пользователь нажимает обновление и запускает вторую такую же генерацию.
Простое лечение — стриминг: ответ отдаётся по мере готовности, соединение остаётся живым, пользователь видит прогресс. Для интерфейсов этого обычно достаточно, но фоновые сценарии вроде массовой обработки документов так не решаются.
Задача как ресурс
Устойчивая схема — оформить генерацию как задачу: клиент создаёт её и получает идентификатор, воркер выполняет, результат забирается опросом или приходит вебхуком. Тогда повторный запрос становится безопасным, а сбой воркера — поводом для повторной попытки, а не потерей данных.
Отдельно приходится думать об идемпотентности и о деньгах: перезапуск задачи без ключа идемпотентности означает вторую оплату тех же токенов. Поэтому счётчик расхода и статус попытки обычно хранят вместе с самой задачей.
Что это значит
Подробности и первичное описание опубликованы на странице разбор приоритетов внутри запроса, там же собраны условия доступа и ограничения, о которых заявили разработчики.
Похожие материалы и обновления по теме мы собираем в разделе «Инструменты для разработчиков» — он пополняется по мере выхода новых сообщений.