pii покрывает распространённые сущности — email,
телефон, кредитная карта, SSN, IBAN, JWT, облачные ключи. Но ваши
чувствительные данные — ваши: ID сотрудников, внутренние номера дел,
референсы клиентских аккаунтов, формат заказа партнёра.
Пользовательская сущность PII позволяет научить то же маскирующее
правило распознавать эти формы, так что шлюз редактирует их до того, как
модель — или любой нижестоящий инструмент — их вообще увидит.
Эта страница покрывает одну вещь, которую пользовательские сущности
добавляют к правилу детекции PII:
ваши собственные детекторы. Полный движок — каждый тип правила, стадия и
маршрут — см. в справочнике Guardrails.
Каждый шаг здесь — действие консоли на хостед-шлюзе
(
api.orcarouter.ai). Вы создаёте guardrail под собственной сессией;
только финальный вызов /v1/* использует relay-ключ sk-orca-....
Создание и редактирование guardrails требует Developer+ в рабочем
пространстве.1. Когда вам нужен guardrail с пользовательским детектором PII для LLM
Набор встроенных сущностей закрыт и разделяется движком, валидатором и конструктором правил. Это правильный инструмент для стандартных идентификаторов. Тянитесь к пользовательской сущности, когда данные, которые вы хотите редактировать, имеют предсказуемую форму, которую не покрывает ни одна встроенная:Внутренние идентификаторы
ID сотрудников (
EMP482915), номера дел, референсы тикетов,
внутренние SKU — что угодно с фиксированным префиксом и набором цифр.Номера аккаунтов и заказов
Референсы клиентских аккаунтов или формат заказа партнёра, который
никогда не должен дойти до сторонней модели дословно.
Числа с контрольной суммой
Числа, похожие на карты или членские, проходящие проверку Luhn —
добавьте контрольную сумму, чтобы срезать ложные срабатывания на
похожих наборах цифр.
Доменно-специфичные коды
Номера полисов, ID претензий, серийники устройств — любой токен,
который ваша отрасль трактует как чувствительный, но общие детекторы
не знают.
pii. Она детектирует совпадения и применяет
действие правила — mask, block или flag — ровно как делает
встроенная сущность.
2. Анатомия пользовательской сущности
Пользовательская сущность — это три маленьких поля плюс опциональный тег маски. Вы добавляете их в редакторе правилаpii под Custom
entities:
| Поле | Обязательно | Что делает |
|---|---|---|
name | да | Стабильный ID, например employee_id. Строчные ASCII / цифры / _, должно начинаться с буквы. Попадает в ленту Matches и журналы аудита. |
pattern | да | Регулярное выражение Go RE2 (линейное время, без обратных ссылок). Должно компилироваться. |
checksum | нет | luhn валидирует каждое совпадение алгоритмом Луна. Принимаются только "" (нет) или "luhn". |
mask_with | нет | Дословная замена при действии mask. По умолчанию [<UPPERCASE_NAME>]. |
Опциональная контрольная сумма Luhn
Многие идентификаторы «в форме чисел» — платёжные карты, некоторые членские и номера аккаунтов — несут контрольную цифру Luhn (mod-10). Голый regex вроде\d{16} совпадает с любым набором из 16 цифр,
включая номера телефонов, временные метки и суммы заказов. Установка
checksum: "luhn" заставляет детектор срабатывать только, когда
совпавшие цифры также проходят проверку Luhn, так что похожие наборы
проскальзывают чисто, и ваша частота ложных срабатываний остаётся
низкой. Оставьте его пустым для токенов без контрольной суммы вроде ID
сотрудника.
Ваш собственный тег маски
При действииmask встроенный email рендерится как [EMAIL].
Пользовательская сущность рендерится как [<UPPERCASE_NAME>] по
умолчанию — совпадение employee_id становится [EMPLOYEE_ID].
Установите mask_with, чтобы переопределить это дословно (например,
<id> или ***), когда вы хотите конкретный токен замены в тексте,
который получает модель. См.
Форматы маскирования для
правил рендеринга по типам сущностей.
3. Один конкретный пример
Предположим, ваши промпты несут ID сотрудников в формеEMP, за которой
следуют шесть цифр, и вы хотите замаскировать их на стадии input,
чтобы вышестоящая модель никогда не видела реальный ID. Добавьте одну
пользовательскую сущность к правилу pii:
/v1/chat/completions ровно как раньше — шлюз маскирует запрос перед
пересылкой, без изменения SDK.
Маскирование выполняется на обеих стадиях: правило input редактирует
запрос до того, как модель его увидит, а правило output редактирует
ответ модели — включая стриминговые ответы, где сканер переписывает
совпадения in-band. Действия block применяются на обеих стадиях тоже.
Чтобы шлюзовать ответы модели, см.
Правила стадии output.
Пример с контрольной суммой
Для членского номера, похожего на карту, добавьте проверку Luhn, чтобы наборы из 16 цифр, которые не являются валидными номерами, не совпадали:4. Лимиты и валидация
Конструктор правил валидирует каждую пользовательскую сущность при сохранении — плохой детектор никогда не доходит до горячего пути.До 25 пользовательских сущностей на правило
До 25 пользовательских сущностей на правило
Каждая пользовательская сущность — это regex-скан по всему тексту,
так что лимит на правило — 25. Лимит держит горячий путь
линейным; скомпилированные паттерны кэшируются между запросами.
Нужно больше форм? Разбейте их по нескольким правилам
pii в том же
guardrail.Паттерн должен компилироваться
Паттерн должен компилироваться
pattern — это регулярное выражение Go RE2 — линейное время, без
обратных ссылок. Валидатор отклоняет паттерн, который не
компилируется, с названной нарушающей сущностью в ошибке.checksum — закрытый набор
checksum — закрытый набор
Принимаются только
"" (нет проверки) и "luhn". Всё остальное —
"sha256", "mod10", даже "LUHN" — отклоняется при сохранении.Имена уникальны и корректны
Имена уникальны и корректны
name должно начинаться с буквы и использовать только строчные
ASCII, цифры и подчёркивания. Две пользовательские сущности в одном
правиле не могут делить имя.5. Переопределения действия по сущности
Пользовательская сущность участвует в той же картеentity_actions, что
и встроенная сущность. Одно правило pii может маскировать
большинство вещей, но блокировать на высокочувствительном
пользовательском детекторе — сошлитесь на сущность по её name:
entity_actions должны ссылаться на встроенную сущность,
включённую на правиле, или на name пользовательской сущности; значения
должны быть block, mask, flag или annotate. Валидатор отклоняет
всё остальное.
6. Куда двигаться дальше
PII Shield
Единственное маскирующее правило, на которое наслаиваются
пользовательские сущности — набор встроенных детекторов и
типизированные теги маски.
Форматы маскирования
Как каждая сущность рендерится при действии mask и как
mask_with
это переопределяет.Regex-детекторы
Когда простое правило
regex подходит лучше, чем типизированная
сущность PII.Настройка ложных срабатываний
Используйте ленту Matches и контрольную сумму, чтобы настроить
точность.
