Nika Gateway

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 цифр, контрольные суммы);
  • паспорт РФ (серия и номер рядом со словом «паспорт»);
  • СНИЛС (контрольная сумма);
  • имена из словаря (опционально, задаётся в настройках ключа).

В настройках ключа можно отключить отдельные детекторы — по умолчанию включены все.

Как это работает

  1. Перед отправкой провайдеру каждое найденное значение заменяется детерминированным плейсхолдером вида [PII_EMAIL_1], [PII_PHONE_2]. Нумерация сквозная в рамках запроса, одинаковые значения получают один плейсхолдер:

    Ответь на письмо от [PII_EMAIL_1], тел. [PII_PHONE_1]
  2. Маскируются текстовые части messages (включая content-блоки и аргументы tool_calls), у Anthropic — также system, tool_result и строковые значения input в tool_use.

  3. Маппинг «плейсхолдер → оригинал» хранится в памяти запроса и в Redis (TTL 24 часа). В логи и журнал генераций он не записывается.

  4. В режиме redact_restore плейсхолдеры в ответе (включая стриминг) заменяются на оригиналы перед отправкой клиенту.

Ответ в режиме redact_restore не отличается от обычного — модель работала с плейсхолдерами, а вы видите реальные данные.

Ограничения

  • Сырой SSE (нативный POST /v1/messages): восстанавливаются только значения, не требующие JSON-экранирования при вставке в сериализованный поток — кириллица, цифры и обычный текст восстанавливаются; значения с кавычками, бэкслешами или переводами строк останутся плейсхолдерами. В нестриминг-ответах восстанавливается всё.
  • Маппинг живёт 24 часа: восстановить ответ после этого срока нельзя.
  • PII-маскирование не влияет на стоимость: биллинг считается по фактическому usage от провайдера.

Когда использовать

  • Передаёте в промптах данные клиентов (тикеты, CRM-тексты, переписку);
  • нужно соответствие требованиям к обработке ПДн при использовании зарубежных провайдеров;
  • хотите исключить утечку ПДн в логи провайдера.

Дополнительно к маскированию на ключе можно отключить сохранение тел запросов и ответов в логах шлюза — см. Аутентификация.