Как строить AI-агентов для продакшена
Почему запуск агента это фоновая задача, сколько на самом деле стоит бюджет токенов и какие четыре ограждения я ставлю перед каждым вызовом модели.
Агент это фоновая задача, а не запрос
Первое, что ломается, когда агента встраивают в продукт, это форма исполнения. Один запуск агента занимает минуты. Он вызывает модель, читает файлы, снова вызывает модель и что-то записывает. Это не веб-запрос.
В Lemniscate агент работает как задача в воркере на Redis и BullMQ. Он читает репозиторий, предлагает изменения, пишет код, пушит ветку и открывает pull request. Браузер не держит соединение открытым в ожидании результата: он смотрит поток логов через server-sent events, и браузер можно закрыть и открыть снова, не убив запуск.
Второе, что ломается, это доверие одному проходу. Перед мержем Lemniscate по желанию отправляет собственный дифф на второй вызов модели. Ревьюер дешевле автора и ловит очевидные ошибки.
Бюджет токенов это настоящий бюджет
Самый дорогой урок мне преподала reasoning-модель. Она списывает цепочку рассуждений с того же лимита на вывод, что и ответ. На длинном ответе рассуждения съели весь бюджет, и модель не вернула ничего: ни ответа, ни ошибки, просто пустая строка.
Я это измерил, а не угадал, поднял потолок и добавил обработку продолжения: модель просят продолжить ровно с того места, где она остановилась, и запрещают повторять уже написанное. С тех пор стоимость длинного ответа это число, которое я могу предсказать, а не сюрприз.
В каждой интеграции, которую я сейчас делаю, перед вызовом модели стоят четыре вещи: таймаут, проверка вывода по схеме, жёсткий потолок токенов и путь отката.
Фолбэки это не паранойя
AI-доктор на этом сайте отвечает на вопросы о моих данных о здоровье через вызовы инструментов. Когда модель у провайдера недоступна, он переключается на модель на том же сервере, более медленную и слабую, но работающую. Когда API возвращает битый вывод, ассистент отвечает тем, что может проверить, вместо того чтобы выдумать число.
Вот разница между фичей и демо. Демо предполагает, что провайдер доступен, ответ корректно сформирован, а пользователь терпелив.
Запуск должен быть проверяемым
Агент, который меняет код, обязан оставлять след. В Touchstone API для агентов возвращает версионированные схемы отчётов (report/v1), так что клиент понимает, какого вида ответ получил. Каждый шаг записан: что спросили, что вернула модель, что приняли.
Без такого следа не ответить на единственный вопрос, который важен после инцидента: что агент вообще сделал.
Честное резюме
Продакшен-агент это по большей части обычная работа с распределёнными системами: очереди, ретраи, идемпотентность, бюджеты, логи, фолбэки. Модель здесь одна из зависимостей внутри этой машины, и ведёт она себя как зависимость с непредсказуемой задержкой, реальной ценой и привычкой уверенно ошибаться.
Если относиться к ней так, фичи держатся. Если считать её магией, получится штука, которая работает ровно один раз, на вашей машине, во время демо.