Когда ИИ-агент говорит «нет»: почему модель срывает задачу
Автономные агенты на базе LLM всё чаще отказываются доводить задачу до конца — от отказа по политике безопасности до тихого зацикливания. Разбираем, когда это защита, а когда баг, за который платите вы.

Вы даёте агенту задачу: разобрать входящие письма, ответить на три из них и выставить счёт. Он отвечает на два, а на третьем пишет: «Не могу выполнить этот запрос». Или, что хуже, молча останавливается на середине цепочки, оставив половину работы. Отказ агента — не сбой в привычном смысле: код не упал, API вернул 200, токены списались. Но результата нет. За 2024–2025 годы это стало одной из самых частых претензий к автономным агентам на базе больших языковых моделей, и причины у отказа разные — от заложенных ограничений до банального переполнения контекста.
Отказ отказу рознь
Под «отказом» скрываются как минимум четыре разных сценария, и путать их дорого: лечатся они по-разному.
- Явный отказ по политике. Модель распознала запрос как нарушающий встроенные ограничения — генерация вредоносного кода, обход защит, персональные данные — и вернула отказ текстом. Это осознанное поведение, заложенное разработчиком модели.
- Отказ из-за неопределённости. Агент не уверен, что понял задачу правильно, и вместо действия просит уточнения или отвечает, что данных недостаточно.
- Технический срыв. Инструмент вернул ошибку, кончился лимит контекста, истёк тайм-аут вызова функции. Агент не «отказался» — он не смог, но снаружи это выглядит одинаково.
- Тихий провал. Самый коварный: агент рапортует об успехе, но задачу не выполнил или выполнил частично. Отказа как такового нет, есть иллюзия результата.
Первые два — это фича. Третий — инфраструктурная проблема. Четвёртый — то, ради чего в продакшене нужна проверка результата, а не доверие к отчёту агента.
Почему модель отказывается «по правилам»
Крупные лаборатории публикуют политики использования: OpenAI, Anthropic и Google описывают, какие запросы модель должна отклонять. Anthropic формализовала это в виде Constitutional AI¹ — набора принципов, по которым модель оценивает и корректирует собственные ответы. На практике это значит, что часть отказов не случайна: агент обучен говорить «нет» на определённые классы задач, и промпт-инженерией это обходится не всегда и не должно.
Проблема в ложных срабатываниях. Запрос «напиши скрипт, который удаляет старые логи» может быть воспринят как деструктивный. «Проанализируй переписку клиента» — как работа с персональными данными. Чем строже настроена модель на безопасность, тем чаще она отказывает по безобидным поводам. Это прямой компромисс, и разработчики агентов балансируют между ним постоянно.
Хороший агент отказывается редко и по делу. Плохой отказывается либо на всё подряд, либо не отказывается никогда — включая случаи, когда отказаться было бы правильно.
Когда отказ — это защита, а не поломка
Право агента сказать «нет» — не недостаток, а необходимое свойство. Агент с доступом к почте, файлам и платёжному API — это исполнитель с полномочиями. Если он выполняет любую команду буквально, одна неоднозначная формулировка приводит к удалённым файлам или ошибочному платежу.
Поэтому в серьёзных агентных системах закладывают несколько уровней «стоп-сигнала»:
- Подтверждение перед необратимым действием. Удаление, отправка денег, публикация — агент останавливается и запрашивает подтверждение человека (паттерн human-in-the-loop).
- Проверка предусловий. Прежде чем выставить счёт, агент убеждается, что клиент существует и сумма непустая. Не сходится — отказывается, а не выдумывает данные.
- Лимит попыток. Если инструмент трижды вернул ошибку, агент прекращает и сообщает о проблеме, а не зацикливается, сжигая токены.
Отказ в этих случаях экономит деньги и репутацию. Куда опаснее агент, который вместо «не могу» галлюцинирует правдоподобный, но ложный результат.
Сколько стоит отказ
Цена вопроса измеряется не абстрактно. Разберём на типах отказа, что теряет пользователь и что с этим делать.
| Тип отказа | Что теряете | Что делать |
|---|---|---|
| По политике безопасности | Время на переформулировку; задача может быть невыполнима в принципе | Переформулировать явно и легально; при постоянных ложных срабатываниях — сменить модель или настроить system prompt |
| Из-за неопределённости | Лишний раунд диалога, задержку | Давать более полный контекст и критерии готовности сразу |
| Технический срыв | Потраченные токены без результата, иногда частично выполненную работу в непонятном состоянии | Ретраи с backoff, идемпотентные операции, проверка контекстного лимита |
| Тихий провал | Больше всего: вы уверены, что задача сделана, а она нет | Автоматическая верификация результата, а не доверие к отчёту агента |
Кто отвечает за отказ — модель или ваш код
Частая ошибка — винить модель, когда виноват оркестратор. Если агент остановился, потому что кончился контекст в 200 тысяч токенов, это не модель «отказалась» — это архитектура не предусмотрела суммаризацию длинной истории. Если агент зациклился на неработающем инструменте, значит, в цикле не было лимита итераций.
Разделение простое: решение сказать «нет» по смыслу задачи — зона модели и её политик; способность довести до конца выполнимую задачу — зона того, кто строит агента. Большинство жалоб на «упрямые» агенты при разборе оказываются во второй категории.
Как снизить долю ложных отказов
Универсального переключателя нет, но набор мер даёт заметный эффект:
- Формулируйте задачу с явными критериями готовности — что считается выполненным.
- Давайте агенту право задать уточняющий вопрос вместо отказа: это лучше и провала, и угадывания.
- Ставьте лимит итераций и тайм-ауты на вызовы инструментов, чтобы технический срыв не выглядел как отказ.
- Проверяйте результат отдельным шагом или отдельным агентом-верификатором, а не полагайтесь на самоотчёт.
- Логируйте причину остановки: без логов вы не отличите отказ по политике от переполнения контекста.
Отказ агента — это диагностический сигнал. Он говорит либо «эта задача за пределами того, что мне разрешено», либо «мне не хватило данных, инструментов или бюджета». В обоих случаях полезнее понять, какой именно, чем требовать, чтобы агент выполнял всё безусловно.
¹ Constitutional AI — метод обучения, при котором модель оценивает и переписывает собственные ответы по заданному набору принципов («конституции»), уменьшая долю вредных ответов без ручной разметки каждого случая.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: Anthropic — Constitutional AI: Harmlessness from AI Feedback, OpenAI — Usage policies
Частые вопросы
Можно ли заставить агента выполнить задачу, от которой он отказался по политике безопасности?
Как отличить осознанный отказ от технического сбоя?
Почему агент говорит, что сделал задачу, хотя она не выполнена?
Отказ агента — это баг, который надо чинить?
Кто виноват, если агент не довёл выполнимую задачу до конца?
Стоит ли давать агенту право задавать уточняющие вопросы?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.