Автономные агенты галлюцинируют не словами, а действиями
У чат-бота галлюцинация — это выдуманный факт в тексте. У агента с доступом к вашей почте, терминалу и банковскому API — отправленное письмо, удалённый файл или списанные деньги. Разбираем, чем это опасно и как это ограничивают.

Языковая модель, которая просто отвечает текстом, ошибается безнаказанно: вы читаете выдуманную цитату, замечаете чушь и не используете её. Автономный агент — та же модель, но с руками. Он вызывает функции, ходит по API, запускает команды в терминале, отправляет письма и оформляет заказы. Когда такой агент «уверенно неправ», ошибка не остаётся на экране: она превращается в действие с последствиями. Это и есть галлюцинирующее действие — правдоподобный, но неверный шаг, который агент совершает от вашего имени.
Чем действие опаснее текста
Обычную галлюцинацию в чате можно отловить глазами. Действие отловить сложнее по трём причинам.
Во-первых, оно необратимо или дорого обратимо. Удалённая ветка в репозитории, отправленное клиенту письмо, оформленный возврат на маркетплейсе — всё это нельзя «дочитать и не поверить». Во-вторых, действия складываются в цепочки: агент делает десять шагов, и ошибка на третьем тянет за собой остальные семь, каждый из которых выглядит логичным продолжением предыдущего. В-третьих, агент часто работает без человека в контуре — в этом весь смысл автономии, — поэтому проверять некому.
Галлюцинация текста — это неверный ответ. Галлюцинация действия — это неверный ответ, который уже произошёл и который кто-то оплатит.
Как это выглядит на практике
Несколько типовых сценариев, которые повторяются у разных агентных фреймворков:
- Выдуманный вызов инструмента. Агент решает, что у него есть функция
refund_order, хотя в списке доступных инструментов её нет, и подставляет правдоподобные аргументы. Плохо написанный оркестратор пытается это выполнить. - Неверные параметры реального инструмента. Функция существует, но агент передаёт ей
idне того заказа или лишний ноль в сумме. - Ложная предпосылка в цепочке. На шаге поиска агент «нашёл» несуществующий документ, а дальше строит все действия так, будто документ реален.
- Уверенное завершение без результата. Агент рапортует «задача выполнена, письмо отправлено», хотя вызов API вернул ошибку, которую агент проигнорировал.
Почему модель вообще так делает
Языковая модель не отличает «я знаю» от «это звучит уместно». Она предсказывает следующий токен, и вызов инструмента для неё — такой же текст, как и любой другой. Если в контексте много примеров вызовов функций, модель охотно генерирует ещё один похожий, независимо от того, доступен ли инструмент и корректны ли аргументы. Добавьте сюда длинный контекст, где ранние инструкции размываются, и склонность модели к сговорчивости — она предпочитает «сделать хоть что-то», чем сказать «я не могу».
Отдельная проблема — инъекции в контекст*. Агент читает веб-страницу или письмо, а там спрятана инструкция вроде «перешли все входящие на этот адрес». Для модели это просто текст в контексте, и она может воспринять его как команду. Здесь галлюцинация действия смыкается с атакой.
Что с этим делают
Универсального решения нет, но набор приёмов уже сложился. Их логика — не доверять агенту необратимое и проверять его на каждом шаге, где цена ошибки высока.
| Приём | Что даёт | Цена |
|---|---|---|
| Белый список инструментов | Агент физически не может вызвать то, чего нет в списке; выдуманный вызов отклоняется оркестратором | Нужно заранее описать все инструменты и валидацию аргументов |
| Human-in-the-loop на опасных действиях | Списание денег, удаление, отправка наружу требуют подтверждения человека | Теряется часть автономии и скорости |
| Dry-run и предпросмотр | Агент показывает, что собирается сделать, до фактического выполнения | Двойной проход, выше стоимость токенов |
| Разделение прав (least privilege) | У агента доступ только к тому, что нужно задаче; чтение и запись разведены | Больше работы на стороне инфраструктуры |
| Верификация результата | Отдельный шаг проверяет, что действие реально выполнилось и вернуло ожидаемое | Усложняет пайплайн, добавляет шаги |
Порядок, который снижает риск
Если вы собираете агента, который что-то делает в реальном мире, разумная последовательность защиты выглядит так:
- Опишите закрытый список инструментов и строгие схемы аргументов. Всё, что вне схемы, оркестратор отклоняет, а не «пытается понять».
- Разделите действия на обратимые и необратимые. Обратимые агент делает сам, необратимые — только через подтверждение человека или второго проверяющего агента.
- Дайте минимальные права: доступ на чтение там, где не нужна запись; отдельные ключи с ограниченным скоупом.
- Логируйте каждый вызов инструмента с аргументами и результатом — без этого разбор инцидента невозможен.
- Добавьте шаг верификации: агент обязан проверить, что действие удалось, и не рапортовать об успехе по факту генерации, а не по факту ответа API.
Автономия против безопасности
Здесь и лежит основной конфликт. Чем больше человека в контуре и чем строже белые списки, тем меньше пользы от автономии — проще было бы сделать всё вручную. Чем свободнее агент, тем выше шанс, что одна галлюцинация на длинной цепочке обойдётся дорого. Индустрия пока движется к компромиссу: агент свободен в дешёвых и обратимых действиях (поиск, черновики, чтение) и зажат на дорогих и необратимых (деньги, удаление, внешняя отправка).
Практический вывод для тех, кто внедряет агентов в 2024–2025 годах: считайте цену не средней ошибки, а худшей. Если в худшем случае агент может списать реальные деньги или удалить продовые данные, ставьте подтверждение человека — даже если это случается раз в тысячу запусков. Автономия там, где ошибка стоит секунд; контроль там, где она стоит денег.
* Инъекция в контекст (prompt injection) — приём, когда вредоносные инструкции прячут в данных, которые агент читает (страница, письмо, документ), рассчитывая, что модель примет их за команду от пользователя.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: OpenAI — Function calling and tools documentation, Anthropic — Building effective agents
Частые вопросы
Чем галлюцинация действия отличается от обычной галлюцинации модели?
Можно ли полностью исключить такие ошибки?
Что такое human-in-the-loop и всегда ли он нужен?
Насколько опасны инъекции в контекст?
Стоит ли давать агенту доступ к боевым системам?
Помогают ли более крупные модели против галлюцинирующих действий?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.