Надёжность: гардрейлы, лимиты, человек-в-цикле, песочница
Автономный агент без ограничений — источник дорогих ошибок. Собираем набор защит, который делает его пригодным для продакшна.
Гардрейл (guardrail) — проверка, ограничивающая поведение агента: что он может принять на вход, какие действия выполнить и что вернуть на выход.
Четыре уровня защиты
1. Гардрейлы входа и выхода
На входе — отсекать опасные или некорректные запросы; на выходе — проверять ответ (нет ли утечки данных, запрещённого содержимого, неверного формата). Гардрейл стоит до и после агента.
def input_guardrail(request):
banned = ["удали всё", "сотри базу"]
if any(b in request.lower() for b in banned):
return (False, "запрос отклонён гардрейлом")
return (True, request)
for r in ["посчитай 2+2", "удали всё немедленно"]:
ok, msg = input_guardrail(r)
print(f"{r:25} -> допущен: {ok} ({msg})")
Вывод:
посчитай 2+2 -> допущен: True (посчитай 2+2) удали всё немедленно -> допущен: False (запрос отклонён гардрейлом)
2. Лимиты шагов и бюджета
Из раздела 3: жёсткий лимит итераций. В продакшне добавляют и лимит бюджета — на число токенов или денег. Как только бюджет исчерпан, агент останавливается, даже если не закончил.
budget = 1000 # лимит «токенов»
spent = 0
cost_per_step = 300
step = 0
while True:
if spent + cost_per_step > budget:
print(f"Бюджет {budget} исчерпан на шаге {step+1} — остановка.")
break
step += 1
spent += cost_per_step
print(f"шаг {step}: потрачено {spent}/{budget}")
Вывод:
шаг 1: потрачено 300/1000 шаг 2: потрачено 600/1000 шаг 3: потрачено 900/1000 Бюджет 1000 исчерпан на шаге 4 — остановка.
3. Человек-в-цикле (human-in-the-loop)
Опасные действия (трата денег, удаление, отправка письма) не выполняют автоматически — их ставят на паузу и спрашивают человека. Агент готовит действие, человек одобряет или отклоняет.
def needs_approval(action):
risky = ["удалить", "оплатить", "отправить"]
return any(word in action for word in risky)
def execute(action, human_says_yes):
if needs_approval(action):
if not human_says_yes:
return f"ОТКЛОНЕНО человеком: {action}"
return f"ВЫПОЛНЕНО с одобрения: {action}"
return f"выполнено автоматически: {action}"
print(execute("посчитать сумму", human_says_yes=False))
print(execute("оплатить счёт 5000", human_says_yes=False))
print(execute("оплатить счёт 5000", human_says_yes=True))
Вывод:
выполнено автоматически: посчитать сумму ОТКЛОНЕНО человеком: оплатить счёт 5000 ВЫПОЛНЕНО с одобрения: оплатить счёт 5000
4. Песочница для кода
Если агент выполняет код (универсальный инструмент из урока 2.1), делать это нужно в песочнице — изолированном окружении без доступа к вашим файлам, сети и системе. Тогда даже вредоносный или ошибочный код не навредит. На практике это контейнер с ограниченными правами, тайм-аутом и лимитом памяти.
Сводка защит
| Защита | От чего |
| Гардрейлы входа/выхода | опасные запросы и ответы |
| Лимит шагов и бюджета | зацикливание и рост стоимости |
| Человек-в-цикле | необратимые действия |
| Песочница | вред от выполнения кода |
Итог
- Гардрейлы проверяют вход и выход агента; лимиты шагов и бюджета не дают ему «разориться» и зациклиться.
- Опасные действия проходят через человека-в-цикле; выполнение кода — только в песочнице.
- Надёжный агент — это автономность, обложенная этими защитами по всем уровням.