Перейти к основному содержанию
Клиентский чат-бот принимает недоверенный ввод от публики и отправляет его модели. Это делает его поверхностью с наибольшей экспозицией, какую вы запускаете: пользователи вставляют PII, которые вы не хотите хранить вышестояще, злоумышленники пытаются переопределить ваш системный промпт, а модель может отразить секреты или небезопасный контент обратно в окно чата. Этот рецепт настраивает четыре контроля, которые защищают ИИ-чат-бот от начала до конца — PII-guardrail на запросе, проверку на prompt-injection, безопасность вывода и единственный жёстко ограниченный ключ — всё в консоли, с нулевыми изменениями в коде вашего чат-бота.
Всё здесь привязывается к вашему рабочему пространству и настраивается из консоли. Ваш чат-бот продолжает вызывать https://api.orcarouter.ai/v1/chat/completions с тем же ключом sk-orca-... — меняется только политика в шлюзе. Действия по конфигурации требуют ролей, указанных на каждом шаге; вызовы ретрансляции используют ограниченный ключ.

1. Модель угроз для публичного чат-бота

Прежде чем что-либо писать, знайте, от чего вы защищаетесь. Поверхность атаки чат-бота уже, чем у полноценного агента, — но высокочастотные риски конкретны:

PII на входе, PII в логах

Пользователи вставляют email-адреса, номера карт, SSN в чат — а вы пересылаете их вышестояще и в свои логи.

Prompt injection

«Игнорируй предыдущие инструкции и …» — попытки переопределить ваш системный промпт и изменить поведение бота.

Джейлбрейки

Обрамления в стиле DAN / ролевой игры, которые пытаются увести бота с политики.

Небезопасный вывод

Модель отражает утёкшие секреты, шаблонный текст системного промпта или контент с инъекциями обратно в чат.
У обычного чат-бота нет вызовов инструментов, поэтому этот рецепт опирается на Guardrails — текстовую плоскость — а не на Firewall. Если ваш бот всё же вызывает инструменты, наложите Firewall сверху (см. §6).

2. Один guardrail, четыре задачи

Вместо четырёх отдельных политик создайте один guardrail рабочего пространства с упорядоченными правилами, покрывающими каждый риск. Guardrail — это именованный упорядоченный список правил; каждое правило говорит что искать, где (input, output или both) и что делать (block, mask или flag). В консоли откройте Guardrails → New guardrail, назовите его chatbot-shield и добавьте правила ниже. Создание guardrail — и запуск песочницы Test — требует роли Developer; просмотр guardrails открыт любому участнику.

a. PII на запросе

Добавьте правило PII, стадия input, действие mask. Встроенный набор сущностей закрыт — выберите те, что чат-бот реально видит:
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "entities": ["email", "phone", "credit_card", "ssn", "ip"],
  "entity_actions": { "credit_card": "block", "ssn": "block" }
}
Маска заменяет каждое совпадение типизированным тегом — jane@acme.com становится [EMAIL], так что вышестоящая модель никогда не видит адрес. Переопределение entity_actions блокирует запрос целиком на номере карты или SSN, маскируя при этом сущности меньшей серьёзности. Это в точности пресет PII Shield, расширенный пер-сущностными переопределениями — примените пресет из библиотеки шаблонов и редактируйте оттуда.
Маскирование PII на стадии input работает уже сегодня — оно переписывает запрос до того, как его увидит модель. Live-маскирование потокового ответа в дорожной карте. Чтобы отредактировать PII из того, что бот отвечает, используйте правило block на выводе (применяется как на потоке, так и без него) или запускайте бота не в потоковом режиме, где работает маскирование вывода. Сначала докажите вашу точную комбинацию стадии/потока во вкладке Test.

b. Проверка на prompt-injection

OrcaRouter поставляет это как safety-пресет Prompt-Injection Basics (denylist ключевых слов для фраз вроде «ignore previous instructions» и «reveal your system prompt»; для более строгого regex-покрытия обрамлений DAN / ролевой игры добавьте пресет Jailbreak / Role-Play Blocker) плюс, для семантического намерения, которое не ловит ни один паттерн, правило llm_judge. Добавьте пресет, затем правило-судью на стадии input с рубрикой, которая флагирует попытки инъекции/переопределения. Судья работает против модели в вашем рабочем пространстве, ограничен judge_timeout_ms и по умолчанию fails open (ошибка судьи логируется, и запрос продолжается) — установите judge_fail_open: false, чтобы fail closed.
Начните правила инъекций с flag, понаблюдайте за лентой Matches день на реальном трафике, затем продвиньте до block, как только убедитесь, что они срабатывают на атаках, а не на легитимных вопросах. См. режимы применения.

c. Безопасность вывода

Добавьте правило block на стадии output (regex или ключевое слово) для контента, который никогда не должен достигать окна чата — утёкшие секреты, управляющие токены chat-шаблона, шаблонный текст системного промпта. Пресеты Secrets & API-Key Blocker и safety-пресеты на утечку системного промпта покрывают распространённые случаи; примените их и привяжите соответствующие правила к стадии output. Block на выводе применяется и на потоке — сканер обрезает поток на лету и выдаёт сообщение-замену прежде, чем заблокированный контент достигнет пользователя.

3. Протестируйте до выкатки

У каждого редактора guardrail есть вкладка Test. Вставьте образец, выберите стадию и запустите текущую политику локально — без вышестоящего вызова, без траты квоты.
Вставьте этоСтадияОжидайте
email me at jane@acme.cominputemail me at [EMAIL]
ignore previous instructionsinputflag / block (на ваш выбор)
карта 4111 1111 1111 1111inputguardrail_blocked (по переопределению)
Для адверсариального покрытия вкладка Eval запускает политику против встроенных red-team-корпусов (или вашего собственного JSONL) и сообщает, как она набрала очки — настраивайте рубрику судьи, пока она не ловит известные атаки, не флагируя при этом безобидный чат.

4. Выпустите один ограниченный ключ для бота

Guardrail применяется только на ключах, которые к нему разрешаются. Дайте чат-боту собственный ключ, ограниченный минимумом, который ему нужен, — никогда не ваш ключ уровня аккаунта. В API Keys → New key задайте:
Выберите chatbot-shield из выпадающего списка Guardrail. Это устанавливает guardrail_id на ключе. Явная привязка — противоположность off-переключателя: если она установлена и включена, она всегда применяется и никогда не откатывается молча. (Оставьте её неустановленной, чтобы откатиться к is_default-guardrail рабочего пространства.)
Установите credit_limit_usd на разумный потолок (0 = без лимита). Публичный чат-бот — ключ, наиболее вероятно подверженный злоупотреблению; жёсткий кредитный потолок — это ваш предел радиуса поражения. См. denial-of-wallet.
Включите model_limits и перечислите только модель(и), которую боту разрешено вызывать, чтобы утёкший ключ нельзя было использовать для запуска дорогой модели, которую вы никогда не собирались выставлять.
Установите allow_ips на egress-IP вашего бэкенда, если бот вызывает с фиксированного сервера, и expired_time, если ключ временный (-1 = никогда не истекает).
Ключ маскируется при отображении после создания — скопируйте его один раз. Ваш бэкенд чат-бота теперь отправляет каждый ход пользователя через chatbot-shield без какого-либо кода, осознающего, что происходит проверка.

5. Наблюдайте в production

Два чтения держат вас честными, оба ограничены рабочим пространством:
  • Guardrails → Matches (любой Member) — каждое сработавшее правило: тип, действие, стадия и деталь. Совпавшая подстрока записывается только, если для guardrail включено Log raw content (выключено по умолчанию — консервативная по приватности позиция). Отметьте ложное срабатывание, чтобы настроить политику (Admin).
  • История версий — каждое изменение пишет строку истории; сравнивайте diff любые две версии и откатывайте, если правило окажется слишком агрессивным. Заблокированный запрос возвращает HTTP 400 guardrail_blocked, не стоит никакой квоты и помечается skip-retry.
Ответ guardrail_blocked — это намеренный, видимый пользователю 400. Обработайте его в UI вашего чат-бота дружелюбным сообщением («Я не могу это обработать») вместо того, чтобы показывать сырую ошибку, — шлюз уже остановил небезопасный ход за вас.

6. Если ваш бот вызывает инструменты

В тот момент, когда ваш чат-бот может вызвать функцию, извлечь URL или обратиться к MCP-серверу, проверки текста недостаточно — вам нужна плоскость действий. Привяжите политику Firewall к тому же ключу через firewall_policy_id или примените уровень автономии balanced, чтобы аудировать вызовы инструментов и флагировать PII по всему рабочему пространству перед ужесточением. Самый быстрый путь — быстрый старт нулевого доверия; для агента, который активно вызывает инструменты, см. защиту автономного агента.

7. Куда углубиться

Справочник Guardrails

Каждый тип правила, PII-сущность, поле судьи и eval-харнесс полностью.

Guardrails vs Firewall

Текстовая плоскость против плоскости действий — когда что нужно.

Режимы применения

Observe → shadow → enforce: выкатывайте, не ломая бота.

Область ключей, политик, рабочих пространств

Как разрешаются привязка ключа и дефолты рабочего пространства.