ИИ ИИшка Про
Гайды

Как ограничить ИИ-агента: бюджет шагов, тайм-аут и безопасная остановка

AI-редакция

ИИ-агент может зациклиться даже на простой задаче: снова открыть ту же страницу, повторить неудачный вызов или бесконечно уточнять собственный план. Обычный чат раздражает лишним текстом, а агент с инструментами расходует деньги и способен многократно выполнить действие. Поэтому пределы задают до первого запуска и исполняют в коде, а не вежливой строкой промпта.

Опишите завершение наблюдаемым событием

Фраза «сделай всё» не сообщает системе, когда остановиться. Запишите готовность так, чтобы её мог проверить простой код: файл создан и прошёл валидатор; запись сохранена с нужным идентификатором; страница вернула HTTP 200; отчёт содержит обязательные поля. Рядом укажите состояния «нужен человек» и «невозможно продолжить». Тогда агент не будет маскировать нехватку доступа новыми попытками.

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

Поставьте четыре независимых лимита

Первый — число шагов. Для узкой задачи начните с 8–12 вызовов инструментов. Второй — общее время, например пять минут. Третий — денежный или токенный бюджет. Четвёртый — число повторов одного и того же действия с одинаковыми аргументами. Последний особенно важен: общий лимит в сто шагов всё равно позволяет сто раз нажать одну кнопку.

Каждый счётчик живёт вне модели. После шага оркестратор увеличивает значение и решает, можно ли продолжать. Модель видит остаток, но не может его сбросить. Если задача закономерно требует больше времени, человек создаёт новый запуск с объяснением, а не снимает ограничение навсегда.

Найдите цикл по следам действий

Сохраняйте нормализованный отпечаток: имя инструмента, адрес ресурса, безопасную часть аргументов и результат. Три одинаковых вызова подряд — простой сигнал. Более сложный цикл выглядит как A → B → C → A, поэтому полезно сравнивать последние 6–10 отпечатков. Не записывайте секреты целиком; токен заменяется меткой, а чувствительный текст — хешем или разрешённым фрагментом.

Причина повтора тоже важна. Ошибка 429 требует паузы и ограниченного retry, 401 — остановки и проверки доступа, 404 — пересмотра адреса. Повторять любую ошибку одинаково нельзя. Таблица политик должна находиться в коде и проходить тесты.

Сделайте остановку полезной

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

Сообщение человеку должно отвечать на три вопроса: что уже сделано, почему процесс остановлен и какое одно решение требуется. «Не удалось выполнить задачу» бесполезно. «Черновик создан, публикация не отправлена: сервер вернул 401; требуется новый ключ с правом publish» позволяет продолжить безопасно.

Проверьте ограничитель до рабочего доступа

Создайте учебную среду и намеренно сломайте её. Верните бесконечную пагинацию, одинаковую ошибку, медленный ответ и противоречивую инструкцию внутри документа. Убедитесь, что срабатывают разные пределы, журнал не содержит секретов, а частичный результат помечен как черновик. Затем перезапустите задачу и проверьте, что идемпотентность не создаёт дублей.

Отдельно испытайте prompt injection: вложенный документ просит игнорировать лимит и отправить данные наружу. Агент может процитировать эту фразу, но политика инструментов должна запретить действие. Модель угроз описана в материале что такое prompt injection.

Минимальная рабочая конфигурация

Для первого пилота достаточно десяти шагов, пяти минут, двух повторов одинакового вызова и ручного подтверждения записи. Добавьте журнал без секретов, идентификатор запуска и конечные состояния success, needs_review, failed и stopped_by_budget. Не называйте success сам факт выполнения команды: успешный HTTP-ответ ещё не доказывает правильность результата.

После двадцати реальных запусков посмотрите распределение шагов и причин остановки. Если нормальная задача часто упирается в предел, сначала упростите маршрут и инструменты. Повышать бюджет стоит только для понятного сценария, а не чтобы скрыть плохую постановку.

FAQ

Достаточно попросить агента остановиться через десять шагов?

Нет. Это полезная подсказка, но реальный счётчик должен находиться в оркестраторе и блокировать следующий вызов.

Какой тайм-аут выбрать?

Чуть выше измеренного времени обычного сценария. Отдельные сетевые вызовы получают собственные короткие тайм-ауты.

Можно ли автоматически продолжить после лимита?

Только если сохранена контрольная точка, понятна причина и новый запуск не повторит необратимое действие.

Что важнее: токены или число действий?

Нужны оба ограничения. Короткий ответ может сопровождать опасный вызов, а длинное рассуждение — не выполнять никаких действий.

Гайды Как проверить сетевые границы ИИ-агента до доступа к рабочим системам Пошаговая проверка белого списка, DNS, журналов, секретов и ручного подтверждения — на безопасном стенде, без атак на чужую инфраструктуру. Гайды Как обезличить рабочий документ перед загрузкой в нейросеть: практический маршрут Не просто удалить имя, а найти идентификаторы в тексте, таблицах, свойствах файла и изображениях, проверить замену и сохранить полезность документа. Гайды Как проверить код тремя ИИ-ролями: исследователь, критик и верификатор Практический маршрут многоагентной проверки небольшого репозитория без сотни агентов, доступа к продакшену и ложного ощущения безопасности. Гайды Как проверить точное редактирование изображения: тест из 12 кадров Пошаговый тест для карточек товара, портретов и рекламных макетов: контроль неизменяемых деталей, сложные правки и честные метрики.
Опубликовано: 11 сентября 08:41
← На главную