1. Два класса проверок
Каждое правило guardrail и каждая оценка firewall относятся к одному из двух классов.Встроенные / детерминированные проверки
Правила guardrail типа keyword denylist (keyword), регулярное выражение (regex),
детектирование PII (pii) и максимальная длина (max_chars) — это чистые
локальные строковые операции и операции с regex — никакого вызова модели, никакого
сетевого перехода, ничего, что может зависнуть. Оценка правил firewall (сопоставление
глобов имён инструментов, предикаты аргументов, область egress) — то же самое:
детерминированная и локальная.
На практике эти проверки добавляют пренебрежимую задержку вашему запросу.
Они безопасны для выполнения на горячем пути и именно из них состоят встроенные
шаблоны guardrail.
Продвинутые / семантические проверки
Правилаllm_judge, grounding и вендора external делегируют проверку модели
или вендору. Они стоят сетевой передачи. Три свойства ограничивают эту стоимость:
- Конкурентная диспетчеризация. Если ваша политика имеет несколько продвинутых правил, они диспетчеризуются параллельно — одна медленная проверка никогда не сериализуется за другой.
- Таймаут на правило. Каждое продвинутое правило имеет таймаут
(
judge_timeout_ms/grounding_timeout_ms/timeout_ms). Проверка grounding по умолчанию ~3 000 мс; judge использует настраиваемое значение (0 → дефолт движка). Правило ограничено — оно не может зависнуть бесконечно. - Fail-open по умолчанию. Когда правило таймаутит или его вендор возвращает
ошибку, событие записывается, но запрос продолжается. Установите
judge_fail_open: false(judge) илиfail_open: false(external) для перехода к fail-closed вместо этого.
2. Краткая сводка
| Тип проверки | Добавляет задержку? | Как ограничена |
|---|---|---|
Denylist keyword | Пренебрежимо — локальное строковое сканирование | Нет сети; таймаут не нужен |
regex | Пренебрежимо — локальное совпадение RE2 | Нет сети; таймаут не нужен |
Детектирование pii | Пренебрежимо — локальное сканирование regex/сущностей | Нет сети; таймаут не нужен |
max_chars | Пренебрежимо — подсчёт символов | Нет сети; таймаут не нужен |
| Оценка правил firewall | Пренебрежимо — сопоставление glob + предиката | Нет сети; таймаут не нужен |
llm_judge | Один ограниченный вызов модели | judge_timeout_ms; fail-open по умолчанию |
grounding | Один ограниченный вызов модели | grounding_timeout_ms (по умолчанию ~3 000 мс); fail-open по умолчанию |
Вендор external | Один ограниченный вызов вендора | timeout_ms; fail_open по умолчанию |
| Несколько продвинутых правил | Один ограниченный цикл (конкурентная диспетчеризация) | Худший случай = макс. одиночный таймаут, не сумма |
3. Где в жизненном цикле запроса выполняются проверки
Применение происходит не одновременно. Проверка входа и выхода добавляет время в разных местах:llm_judge, проверяющий на intent prompt injection)
добавляет ограниченный вызов модели перед запуском основного вызова модели.
Выходные guardrails выполняются после ответа модели. Встроенное выходное
правило добавляет пренебрежимые накладные расходы в хвосте. Продвинутое выходное
правило (например, grounding, проверяющее достоверность RAG) добавляет
ограниченный вызов после того, как у вас уже есть ответ модели.
Оценка правил Firewall детерминирована и происходит inline при маршрутизации
вызовов инструментов — пренебрежимо, как отмечено выше.
Заблокированный запрос не стоит токенов модели и не добавляет задержки
вышестоящего сервиса для блоков на входной стадии. Входной блок срабатывает
до тарификации и до вышестоящего вызова, так что вы не платите ни квотой,
ни временем вышестоящего перехода. Блок на выходной стадии возвращает
предварительно списанную квоту после отклонения ответа.
4. Как таймауты и fail-open ограничивают худший случай
Продвинутые правила имеют два регулятора: Таймаут — максимальное реальное время, которое разрешено для проверки. Запрос ждёт не более этого времени для этого правила. Конкурентная диспетчеризация означает, что это ограничение применяется на правило, а не на политику. Если у вас три правилаllm_judge каждое с таймаутом 2 000 мс, все три работают
одновременно и общее ожидание составляет ~2 000 мс, а не ~6 000 мс.
Fail-open vs fail-closed — что делать, когда правило не завершается вовремя
(или вендор возвращает ошибку):
| Настройка | Поведение при таймауте / ошибке |
|---|---|
fail_open: true (по умолчанию) | Записать событие; дать запросу продолжиться, как если бы проверка прошла |
fail_open: false | Трактовать таймаут / ошибку как блокировку; вернуть HTTP 400 guardrail_blocked |
5. Практические рекомендации
Держите горячие правила встроенными. Если ваша основная задача — PII, утечка учётных данных, длина промпта или keyword denylist — всё это встроенные правила. Они не добавляют измеримой задержки и должны быть вашим выбором по умолчанию для любой проверки, с которой может справиться сопоставление текста. Используйтеllm_judge и grounding там, где нужна семантика. Токсичность,
харассмент, детектирование оффтопика, intent prompt-инъекции и достоверность RAG —
это настоящие нечёткие понятия, которые надёжно не уловит ни один regex. Это
правильные случаи для продвинутого правила. Примите, что каждое добавляет
ограниченный дополнительный вызов модели.
Настройте таймауты под свой бюджет задержки. Если ваш сквозной целевой
показатель 1 000 мс, установите judge_timeout_ms: 800 (или меньше), чтобы
judge не мог потребить весь ваш бюджет. Дефолтный таймаут движка — безопасная
отправная точка; уменьшите его, если у вас жёсткие требования.
Для выходного grounding вызов модели уже сделан. Проверка grounding
выполняется после ответа вышестоящей модели — дополнительная задержка только в
хвосте, а не на критическом пути до первого токена. Это делает её малорисковым
местом для добавления семантического применения.
Несколько продвинутых правил? Распределите работу. Поскольку продвинутые
правила работают конкурентно, накладывание трёх правил llm_judge стоит примерно
столько же, как одно — наибольший индивидуальный таймаут определяет реальное время,
а не их количество. Используйте это для наслоения семантических проверок без
аддитивной стоимости.
Режимы применения
Fail-open vs fail-closed — полный справочник для настройки поведения
вашей политики при таймаутах и условиях ошибок.
Guardrails
Типы правил, поля judge, пороги grounding и полный справочник конфигурации
guardrail.
