PII-маскирование
Вырезание персональных данных из запросов к моделям и восстановление их в ответах
PII-маскирование
Шлюз может автоматически вырезать персональные данные (ПДн) из запросов к моделям и восстанавливать оригиналы в ответах. Провайдер получает только обезличенный текст, а ваш клиент — полный ответ.
Режимы
Режим задаётся в настройках API-ключа в кабинете:
| Режим | Провайдеру | Клиенту |
|---|---|---|
off (по умолчанию) | запрос как есть | ответ как есть |
redact | плейсхолдеры вместо ПДн | ответ как есть (плейсхолдеры остаются) |
redact_restore | плейсхолдеры вместо ПДн | оригиналы восстановлены в ответе |
Любой запрос может переопределить режим ключа полем pii (апстриму оно не
пробрасывается):
curl https://api.nikagateway.ru/v1/chat/completions \
-H "Authorization: Bearer sk-tunnel-..." \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4-pro",
"pii": {"mode": "redact_restore"},
"messages": [
{"role": "user", "content": "Ответь на письмо от ivan.petrov@example.com, тел. +7 903 123-45-67"}
]
}'Что распознаётся
Встроенные детекторы (ориентированы на рунет):
- email;
- телефоны (+7 / 8...);
- банковские карты (с проверкой по алгоритму Луна);
- ИНН (10/12 цифр, контрольные суммы);
- паспорт РФ (серия и номер рядом со словом «паспорт»);
- СНИЛС (контрольная сумма);
- имена из словаря (опционально, задаётся в настройках ключа).
В настройках ключа можно отключить отдельные детекторы — по умолчанию включены все.
Как это работает
-
Перед отправкой провайдеру каждое найденное значение заменяется детерминированным плейсхолдером вида
[PII_EMAIL_1],[PII_PHONE_2]. Нумерация сквозная в рамках запроса, одинаковые значения получают один плейсхолдер:Ответь на письмо от [PII_EMAIL_1], тел. [PII_PHONE_1] -
Маскируются текстовые части
messages(включая content-блоки и аргументыtool_calls), у Anthropic — такжеsystem,tool_resultи строковые значенияinputвtool_use. -
Маппинг «плейсхолдер → оригинал» хранится в памяти запроса и в Redis (TTL 24 часа). В логи и журнал генераций он не записывается.
-
В режиме
redact_restoreплейсхолдеры в ответе (включая стриминг) заменяются на оригиналы перед отправкой клиенту.
Ответ в режиме redact_restore не отличается от обычного — модель работала с
плейсхолдерами, а вы видите реальные данные.
Ограничения
- Сырой SSE (нативный
POST /v1/messages): восстанавливаются только значения, не требующие JSON-экранирования при вставке в сериализованный поток — кириллица, цифры и обычный текст восстанавливаются; значения с кавычками, бэкслешами или переводами строк останутся плейсхолдерами. В нестриминг-ответах восстанавливается всё. - Маппинг живёт 24 часа: восстановить ответ после этого срока нельзя.
- PII-маскирование не влияет на стоимость: биллинг считается по фактическому
usageот провайдера.
Когда использовать
- Передаёте в промптах данные клиентов (тикеты, CRM-тексты, переписку);
- нужно соответствие требованиям к обработке ПДн при использовании зарубежных провайдеров;
- хотите исключить утечку ПДн в логи провайдера.
Дополнительно к маскированию на ключе можно отключить сохранение тел запросов и ответов в логах шлюза — см. Аутентификация.