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

Осенью 2024 года и в 2025-м все крупные лаборатории выпустили инструменты для построения агентов: OpenAI показала Agents SDK и Responses API, Anthropic развивает Model Context Protocol и Claude Agent SDK, Google продвигает Agent Development Kit. Демонстрации выглядят одинаково завораживающе: агент сам бронирует, сам пишет код, сам ходит по сайтам. Проблема начинается, когда это демо нужно запустить на тысяче реальных запросов в день — и оказывается, что «работает» и «работает надёжно» разделяет целый инженерный проект.
Разница не в модели. Одна и та же связка LLM + инструменты в демо даёт 95% успеха, а в проде — 60%, потому что реальный мир подсовывает пустые ответы API, изменившуюся вёрстку, обрыв соединения и запрос, который не предусмотрели в промпте. Ниже — про то, где именно рвётся автономность и во что обходится её укрепление.
Почему демо обманчиво
Демо агента почти всегда прогоняют на «счастливом пути»: заранее подобранный запрос, знакомый сайт, стабильный API. В этой траектории каждый шаг проходит, и цепочка из десяти действий выглядит безупречно.
Ключевая ловушка — накопление ошибки. Если один шаг агента срабатывает с вероятностью 95%, то цепочка из десяти независимых шагов даёт уже примерно 0.95 в десятой степени — около 60% успеха. Двадцать шагов — около 36%. Автономность длинных задач деградирует не линейно, а мультипликативно, и именно это не видно на трёхшаговом демо.
Надёжность агента — это не свойство модели, а свойство пайплайна вокруг неё: ретраи, проверки, ограничители и человек в точках, где ошибка стоит дорого.
Где рвётся на практике
- Инструменты возвращают мусор. API отдал 200 OK с пустым телом, парсер сайта поймал старую вёрстку — а агент принял это за валидный результат и поехал дальше по ложной ветке.
- Галлюцинация вызова функции. Модель придумывает несуществующий инструмент или подставляет аргумент не того типа. Без строгой валидации схемы это уходит в исполнение.
- Зацикливание. Агент повторяет один и тот же неудачный шаг, пока не упрётся в лимит токенов или бюджета.
- Переполнение контекстного окна*. На длинной задаче история диалога распухает, ранние инструкции вытесняются, агент «забывает» цель.
- Недетерминированность. Один и тот же запрос при temperature > 0 даёт разные траектории — воспроизвести баг и написать на него тест труднее, чем в обычном коде.
Что превращает прототип в надёжную систему
Разрыв закрывается не одной серебряной пулей, а набором обвязки. Вот минимальный список того, что отделяет «показал начальству» от «пустил на клиентов».
- Валидация выходов инструментов. Каждый ответ API и парсера проверяется по схеме до того, как попадёт обратно в модель. Пустой или неожиданный результат — явная ошибка, а не «поехали дальше».
- Ретраи с ограничением. Повтор при сбое, но с потолком по числу попыток, времени и стоимости, чтобы агент не сжёг бюджет в цикле.
- Идемпотентность действий. Если агент дважды нажал «отправить платёж» из-за ретрая, второй вызов не должен списать деньги повторно.
- Наблюдаемость. Трейсинг каждого шага: какой инструмент, с какими аргументами, что вернул. Без этого отладить недетерминированный сбой почти нереально.
- Человек в петле на дорогих шагах. Отправка денег, удаление данных, письмо клиенту — через подтверждение, а не автономно.
- Офлайн-оценка. Набор тестовых сценариев (eval), который прогоняется на каждое изменение промпта или модели, чтобы поймать регрессию до релиза.
«Работает» и «работает надёжно»: таблица различий
| Аспект | Агент «работает» (демо) | Агент «работает надёжно» (прод) |
|---|---|---|
| Данные на входе | Подобранный удачный кейс | Любой мусор, включая пустой и вредоносный ввод |
| Ответ инструмента | Считается валидным по умолчанию | Проверяется по схеме, ошибка обрабатывается явно |
| Сбой шага | Пайплайн падает или молча идёт дальше | Ретрай с лимитом, откат, деградация в ручной режим |
| Стоимость запуска | Не считается | Потолок по токенам и деньгам на задачу |
| Отладка сбоя | «Перезапустите ещё раз» | Трейс шагов, воспроизводимый eval-сценарий |
| Опасные действия | Выполняются автономно | Через подтверждение человека |
Сколько это стоит
Цена надёжности — это в первую очередь инженерное время, а не подписка на модель. Прототип агента на готовом SDK собирается за день-два. Обвязка вокруг него — валидация, ретраи, трейсинг, набор eval-сценариев, дежурство и разбор инцидентов — это недели и месяцы, и она никогда не бывает «доделана».
Второй счёт — токены. Ретраи, длинные траектории и проверочные вызовы увеличивают расход. Агент, который на счастливом пути укладывается в один вызов модели, в проде легко делает пять-десять на ту же задачу. Точные цены на токены и на подписки для разработчиков смотрите на официальных страницах OpenAI, Anthropic и Google — они пересматриваются каждые несколько месяцев, называть здесь конкретную цифру как вечную было бы враньём.
Кому это пригодится и кому нет
Автономный агент оправдан, когда:
- задача повторяемая и объёмная — разбор тысяч тикетов, обогащение лидов, сортировка входящих, где даже 80% автоматизации экономят человеко-часы;
- цена отдельной ошибки низкая и её легко откатить — черновик письма, предложение категории, а не финальное действие;
- у вас есть ресурс на наблюдаемость и разбор инцидентов, а не только на прототип.
Автономность лучше отложить, когда:
- каждое действие необратимо и дорого — переводы денег, юридически значимые документы, изменения в проде без ревью;
- задача редкая и разовая — проще сделать руками, чем строить и обслуживать пайплайн;
- нет способа автоматически проверить результат: если качество может оценить только эксперт вручную, автономия не масштабируется.
Практичный компромисс между «полностью вручную» и «полностью автономно» — copilot-режим: агент готовит черновик, предлагает шаги и собирает данные, а нажимает финальную кнопку человек. Он снимает большую часть рутины и оставляет ответственность там, где ошибка стоит дорого.
* Контекстное окно — максимальный объём текста (в токенах), который модель удерживает в одном обращении: и ваш запрос, и историю диалога, и ответ. Когда история длинной задачи перерастает окно, ранние инструкции вытесняются, и агент теряет исходную цель.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: OpenAI — New tools for building agents (Agents SDK, Responses API), Anthropic — Model Context Protocol
Частые вопросы
Почему агент, стабильный в тестах, падает на реальных пользователях?
Можно ли сделать агента надёжным, просто взяв модель поумнее?
Что такое eval и зачем он для агентов?
Сколько времени занимает довести прототип до продакшена?
Стоит ли давать агенту право на необратимые действия?
Почему один и тот же запрос даёт разный результат?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.