1. Сценарий фильтра чувствительных слов ai
Правилоkeyword — простейшее правило в движке: вы даёте ему список
терминов, и шлюз сопоставляет любой из них с текстом на стадии.
Сопоставление — подстрока без учёта регистра — BadWord,
badword и BADWORD все совпадают, и термин совпадает, даже когда он
встроен в более длинное слово (так что class также совпадает с
classic). Каждый термин трактуется как литеральная строка, а не
паттерн; вы не экранируете regex-метасимволы.
Сохраните правило один раз в консоли, привяжите guardrail к любому
API-ключу (или сделайте его default’ом рабочего пространства), и каждый
вызов на этом ключе проверяется без изменения SDK и без передеплоя.
Политика живёт в шлюзе, а не в вашем приложении — ваше приложение
продолжает вызывать /v1/chat/completions ровно как раньше.
2. Создайте правило в консоли
Каждый шаг здесь — действие консоли под вашей собственной сессией. Создание и редактирование guardrails требует Developer+ в рабочем пространстве. Только финальный вызов/v1/* использует relay-ключ
sk-orca-....
Создайте guardrail
В консоли откройте Guardrails и нажмите New guardrail.
Назовите его (≤ 64 символов), например
banned-terms.Добавьте правило keyword
Добавьте одно правило:
- Тип: Keyword denylist (
keyword) - Стадия: Both (запрос и ответ)
- Действие: Block
- Keywords: ваши запрещённые термины, по одному на строку
Протестируйте
Откройте вкладку Test, вставьте образец, содержащий запрещённый
термин, выберите стадию и прогоните политику локально — без
вышестоящего вызова, без квоты (см.
§5).
Привяжите ключ
Отредактируйте API-ключ и выберите
banned-terms из выпадающего
списка Guardrail (устанавливает guardrail_id на ключе) или
пометьте guardrail default’ом рабочего пространства. См.
Привязка к ключу и
Default аккаунта.3. Выберите действие
Правило keyword выбирает одно действие на правило:Block — отклонить вызов
Block — отклонить вызов
Любое совпадение отклоняет запрос с HTTP 400
guardrail_blocked.
Заблокированный запрос не стоит квоты — блокировка на стадии
input срабатывает до тарификации; блокировка на стадии output
возвращает предварительно списанную квоту — и помечается
skip-retry. Используйте для терминов, которые никогда не должны
пройти ни в одном направлении. См.
ошибку guardrail_blocked.Mask — отредактировать термин
Mask — отредактировать термин
Каждое совпадение заменяется на месте тегом редактирования, и запрос
продолжается с очищенным текстом — вышестоящая модель никогда не
видит исходный термин. См. Действия.
Flag — только наблюдение
Flag — только наблюдение
Записывает совпадение и ничего не меняет в трафике. Используйте, чтобы
измерить, как часто термин появляется, прежде чем переключиться на
применение.
Spotlight — обернуть как недоверенные данные (input)
Spotlight — обернуть как недоверенные данные (input)
Оборачивает совпавший текст в разделители (например,
⟦UNTRUSTED⟧…⟦/UNTRUSTED⟧), чтобы модель трактовала его как
данные, не инструкции — защита от prompt-инъекции на стадии
input. Текст всё равно доходит до модели, лишь огороженный. См.
Действия.Стадия важна.
input сканирует запрос вызывающей стороны, output
сканирует ответ модели, both сканирует каждую сторону независимо.
Запрещённый термин, который печатают ваши пользователи, и тот, который
может выдать модель — разные проблемы — выбирайте подходящую стадию(и).
См. Правила стадии input и
Правила стадии output.4. Покрытие стриминга
Действие, которое вы выбираете, взаимодействует с тем, стримится ли ответ:| Действие | Нестриминг | Стриминг |
|---|---|---|
block (output) | Применяется | Применяется — сканер режет поток |
mask (output) | Применяется | Пока нет — решение block соблюдается, замаскированный текст не пересылается (дорожная карта) |
5. Протестируйте перед привязкой
Докажите, что правило делает то, что вы ожидаете, прежде чем на него укажет любой ключ. Откройте вкладку Test внутри редактора, вставьте образец, выберите стадию и запустите:6. Отправьте запрос
Используя ключ, привязанный кbanned-terms, вызовите OrcaRouter ровно
как раньше — без новых заголовков, без изменения SDK:
guardrail_blocked
до того, как он вообще дойдёт до модели. Смените действие на mask, и
термин вместо этого редактируется на месте перед пересылкой.
7. Посмотрите, что сработало
Каждое сработавшее правило записывает совпадение — тип правила, действие, стадию и строку-деталь (для правил keyword — сколько терминов совпало) — всплывающее в ленте Matches рабочего пространства. Если безобидный термин продолжает совпадать (запись denylist, которая является подстрокой распространённого слова), пометьте его ложным срабатыванием из ленты Matches и ужесточите запись. См. Настройку ложных срабатываний.8. Куда двигаться дальше
Regex-детекторы
Сопоставляйте структурированные паттерны — SKU, номера заказов,
форматы — когда литерального denylist недостаточно.
Защита бренда
Пресеты ненормативной лексики, упоминаний конкурентов и детской
безопасности, построенные на правилах keyword.
Действия
Чем block, mask и flag отличаются и когда использовать каждое.
Справочник Guardrails
Полный движок — каждый тип правила, поле и маршрут.
llm_judge выполняет
семантическую проверку моделью рабочего пространства.