Перейти к содержимому

Guardrails: ограничения и защита

Guardrails — механизмы, которые ограничивают поведение системы на входе, выходе и в момент вызова инструментов: фильтрация токсичности и персональных данных, защита от prompt injection, соблюдение политик, валидация структуры ответа.

Принципиальная разница с промптом: инструкция в промпте — просьба, guardrail — проверка в коде. Модель может проигнорировать просьбу, особенно если в неё попало содержимое из Retrieval или со страницы, которую читал агент.

ТочкаЧто проверяется
ВходКто обращается, что пришло в запросе, нет ли попытки переопределить инструкции
ВыходФормат ответа по схеме, отсутствие утечек, допустимость содержания
Вызов инструментаРазрешён ли инструмент, корректны ли аргументы, не выходит ли действие за пределы прав

Самая недооценённая точка — третья. Агент, которому разрешён shell или запись в API, может навредить корректным с виду ответом: текст валиден, действие — нет.

  • Prompt injection из внешних данных. Сайт, документ или тикет содержат фразу «игнорируй предыдущие инструкции» — и это не гипотеза, а типовой вектор атаки. Данные из Retrieval и инструментов всегда недоверенные.
  • Персональные данные и секреты. Маскирование на входе и на выходе, отдельно — перед записью в трассировку (см. Наблюдаемость).
  • Валидация структуры. Ответ, который парсит код, должен соответствовать схеме; иначе ошибка парсинга превращается в случайное действие.
  • Политики домена. Что агент не обсуждает, что не публикует, куда не пишет без согласования.
  • Ограничение прав по задаче. Аналитика — только чтение; публикация — только через подтверждение.
ИнструментНазначение
NVIDIA NeMo GuardrailsПрограммируемые rails с описанием правил
Guardrails AIВалидаторы и схемы для структурированного вывода
LLM GuardНабор проверок на входе и выходе
Lakera GuardЗащита от prompt injection и утечек
AWS Bedrock Guardrails, Azure AI Content SafetyОблачные фильтры в контуре провайдера

Выбор зависит от того, где проходит граница: собственный сервис требует своих проверок, облачный провайдер даёт часть фильтров из коробки.

Guardrails не заменяют авторизацию. Разделение простое:

  • Guardrails отвечают на вопрос «допустимо ли это содержание и действие по политике».
  • Права отвечают на вопрос «разрешено ли это субъекту в этой системе».

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

  • Что будет, если инструкции в промпте не сработают. Именно это и есть реальное поведение системы.
  • Проверяются ли аргументы инструментов. Разрешённый инструмент с неразрешёнными аргументами — типичная дыра.
  • Есть ли журнал блокировок. Сработавший guardrail — сигнал, который нужно видеть и разбирать.
  • Не блокирует ли фильтр нормальную работу. Слишком агрессивные проверки ломают сценарии и провоцируют их отключать.