pseudex
ИНТЕГРАЦИЯ · LITELLM

LiteLLM и персональные данные

LiteLLM — шлюз перед моделями. У него есть готовое маскирование персональных данных, и ниже — два живых прогона: сначала видит ли оно данные вообще, потом — что бывает, когда оно их всё-таки увидело.

Как устроен шлюз

ОДИН ВХОД, МНОГО ПРОВАЙДЕРОВ
ОДИН ВХОД
Совместим с OpenAI
Приложение шлёт /v1/chat/completions и не знает, кто за шлюзом.
МАРШРУТИЗАЦИЯ
Любой провайдер
OpenAI, Anthropic, локальные модели, свои шлюзы — одной конфигурацией.
КЛЮЧИ И БЮДЖЕТЫ
Лимиты на команду
Свои ключи, квоты и расход по каждому потребителю.
ГЕЙТРЕЙЛЫ
Проверки по дороге
Маскирование персональных данных — один из них, через Presidio.

ЭТАП 1 Видит ли оно персональные данные

ОДНО И ТО ЖЕ СООБЩЕНИЕ
здрасьте! это волков дмитрий, заказ 4471 привезти завтра? адрес манчжурская 12 кв 84, тел 89178347030, снилс 112-233-445 95

Ниже — то, что реально получила модель. Пять типов персональных данных: ФИО, адрес, телефон, СНИЛС и номер заказа рядом с адресом.

ИХ МАСКИРОВАНИЕ
язык по умолчанию
здрасьте! это волков дмитрий, заказ 4471 привезти завтра? <PERSON> манчжурская 12 кв 84, тел 89178347030, снилс 112-233-445 95
найдено типов ПД: 0 из 5
Единственное срабатывание — ложное: заменено слово «адрес». Сами данные ушли в модель как есть.
ФИО утеклоадрес утёктелефон утёкСНИЛС утёк
ИХ МАСКИРОВАНИЕ
настроено на русский
здрасьте! это волков дмитрий, заказ 4471 привезти завтра? адрес <PERSON> 12 кв 84, тел 89178347030, снилс 112-233-445 95
найдено типов ПД: 1 из 5
Поймана улица — и тоже как «человек». ФИО, телефон и СНИЛС остались открытыми.
ФИО утеклотелефон утёкСНИЛС утёкулица заменена
PSEUDEX
здрасьте! это цветков виталий, заказ 4471 привезти завтра? адрес лавандовая 65 кв 459, тел 89412828688, снилс 183-906-458 00
заменено типов ПД: 5 из 5
Подмены того же рода: имя именем, улица улицей, формат документа форматом. Настоящего — ничего.
ФИО замененоадрес заменёнтелефон заменёнСНИЛС заменённомер заказа сохранён

Прогон живого агента: детекция работает до модели, на её входе. Типы считаны по тому, что реально ушло в модель.

ЭТАП 2 Что бывает, когда данные всё-таки увидели

ЖИВОЙ АГЕНТ · НАСТОЯЩИЕ ИНСТРУМЕНТЫ

Дальше агент работает по-настоящему: ищет клиента в CRM и оформляет доставку. Инструмент проверяет адрес по зоне доставки — как настоящий API доставки. Шаги идут по порядку, сверху вниз.

ОНИ: УЛИЦА ЗАМЕНЕНА ПОДСТАНОВКОЙ
1
КЛИЕНТ НАПИСАЛ
привезти завтра, адрес манчжурская 12 кв 84
2
МОДЕЛЬ УВИДЕЛА
адрес <PERSON> 12 кв 84 → настоящего адреса у неё нет
3
МОДЕЛЬ ПОЛОЖИЛА В ВЫЗОВ
"address": "ул. Ленина 12, кв. 84"
Адрес, которого клиент не называл: модель заполнила подстановку правдоподобной улицей.
4
ИНСТРУМЕНТ ОТВЕТИЛ
{"ok": true, "delivery_id": "DL-D0CE25", "address": "ленина 12"}
Ошибки нет. Доставка создана по чужому адресу — такую ошибку не поймает ни мониторинг, ни проверяющий.
5
КЛИЕНТ ПОЛУЧИЛ
«Готово, <LOCATION>! Заказ 4471 оформлен: ул. Ленина 12…»
Подстановка доехала до человека прямо в тексте ответа.
МЫ: ТЕ ЖЕ ШАГИ, ТО ЖЕ СООБЩЕНИЕ
1
КЛИЕНТ НАПИСАЛ
привезти завтра, адрес манчжурская 12 кв 84
2
МОДЕЛЬ УВИДЕЛА
адрес лавандовая 65 кв 459 → настоящего адреса у неё тоже нет, но есть подмена того же рода
3
В ВЫЗОВ УШЛО
"address": "Манчжурская 12 кв 84"
Шлюз раскрыл аргумент перед инструментом: подстановка живёт только на стороне модели.
4
ИНСТРУМЕНТ ОТВЕТИЛ
{"ok": true, "delivery_id": "DL-34D959", "address": "манчжурская 12"}
Доставка по адресу, который назвал клиент.
5
КЛИЕНТ ПОЛУЧИЛ
«Готово! Доставка оформлена: заказ 4471, адрес Манчжурская 12, кв. 84…»
Ни подстановок, ни выдуманного адреса.

Разница не в том, что мы «лучше маскируем». Разница в том, что подстановка возвращается на своём месте — в аргумент вызова, а не в голову модели, где её придётся домысливать.

Как подключить

БЕЗ ГЕЙТРЕЙЛА И БЕЗ ВТОРОГО СЕРВИСА

Маскирование у нас — не отдельный сервис, а сам шлюз. LiteLLM ходит в наш прокси как в обычного провайдера: он OpenAI-совместимый.

model_list: - model_name: gpt-4o litellm_params: model: openai/gpt-4o api_base: http://pseudex:4000/v1 # наш прокси api_key: os.environ/PSEUDEX_TENANT_KEY
1
ПОДНЯТЬ КОНТЕЙНЕР
У себя, в своём контуре. Ключ к подменам остаётся у вас.
2
ВЗЯТЬ КЛЮЧ АРЕНДАТОРА
Выдаётся в кабинете и работает как обычный ключ провайдера.
3
ЗАМЕНИТЬ api_base
Гейтрейл маскирования выключить: он поставит подстановку, и вернуть её будет нечем.
4
ПРОВЕРИТЬ НА СВОЁМ ЧАТЕ
Тот же запрос: модель должна видеть подмену, инструмент — настоящее значение.
ПОПРОБОВАТЬ ПОЧЕМУ ЭТО СЛОЖНЕЕ ЧТО ИМЕННО НАХОДИМ
ПОДДЕРЖКА
Отвечаем сами, в рабочие часы по Москве. Настоящие значения клиентов присылать не нужно — они нам не видны, хватит токена из журнала и времени.
Telegram @pseudex_support_bot · быстрее всего Почта support@pseudex.ru · счета и предложения Предложение по продукту чего не хватает или что неудобно