Эфир 18.11 · Поток 318 ноября в 19:00 МСК — бесплатный практический эфир по ИИ-агентам · Живой Поток 3 стартует 23.11Эфир 18 ноября →Поток 3 (23.11)
Безопасность и правоРазбор · На радарХабр: NLP→ оригинал

Presidio и LiteLLM прячут ПДн от внешней LLM: тест трёх конфигураций на 20 текстах

Отправлять в облачную LLM письма клиентов с ФИО, телефонами и адресами — риск, который не закрыть одним «мы не храним логи». Автор разбора на Хабре показывает, как настроить Microsoft Presidio для русского языка, добавить свои правила и встроить маскирование в прокси LiteLLM. Имена заменяются метками до запроса и возвращаются после ответа. Тест на 20 вымышленных текстах показал, что адрес иногда остаётся открытым частично.

AI-обработка оригинала Хабр: NLP; редакция Hamidun News
Presidio и LiteLLM прячут ПДн от внешней LLM: тест трёх конфигураций на 20 текстах
Источник: Хабр: NLP. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникХабр: NLP ↗
Главный редактор
Ключевой факт #1Русскому нужна отдельная NLP-модель и свои распознаватели
Ключевой факт #2Номера договоров, ИНН и СНИЛС ловятся собственными regex-правилами
Адрес проверяйте отдельночасть может остаться в открытом виде

Знакомая ситуация: в компании хотят прогнать через GPT или Claude обращения клиентов, а в них фамилии, телефоны, почта и адреса. Юристы морщатся, безопасники просят «что-нибудь сделать». Самое простое решение — не отправлять ПДн вообще: заменить их метками, дождаться ответа и подставить значения обратно. Именно эту схему на Хабре разобрали на базе Presidio и LiteLLM.

Важная оговорка: у нас есть только анонс статьи, а не весь текст. Поэтому ниже то, что автор заявляет прямо, плюс общая механика инструментов, которая известна по их документации.

Как это работает на простом примере

Presidio — open-source библиотека Microsoft для поиска и обезличивания персональных данных. Она состоит из двух частей. Analyzer находит в тексте сущности: имена, телефоны, e-mail, номера карт. Anonymizer заменяет найденное по выбранному правилу: удаляет, маскирует или подставляет метку.

Представьте запрос: «Иван Петров просит перезвонить по номеру +7 900 123-45-67». В модель уходит «<PERSON_1> просит перезвонить по номеру <PHONE_1>». Модель отвечает, используя те же метки, а прокси подставляет настоящие значения обратно. Внешний провайдер реальных данных не видит, а пользователь получает связный ответ.

LiteLLM здесь играет роль прокси между вашим приложением и провайдерами моделей. У него есть интеграция с Presidio в виде guardrail: маскирование и обратная подстановка встраиваются в единую точку, и код каждого сервиса переписывать не нужно.

Где начинаются сложности с русским

Из коробки Presidio заточена под английский. Для русского нужно подключить подходящую языковую модель, например из spaCy, и проверить, что она вообще находит имена в падежах. «Ивану Петрову», «у Ивана Петрова» и «Петрова И. А.» для модели разные задачи.

Дальше нужны собственные правила. Presidio позволяет добавлять свои распознаватели на регулярных выражениях, контекстных словах и списках. Для российских реалий это номера договоров, ИНН, СНИЛС, внутренние идентификаторы клиентов. Готового распознавателя под такие данные, скорее всего, нет, и писать его придётся самим. Автор отдельно разбирает эту настройку.

Что показал тест

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

Причина типична для адресов. Это составная сущность из города, улицы, дома и квартиры. Модель уверенно помечает город или регион, а улицу с номером дома пропускает или режет посередине. Для утечки хватает и фрагмента: «ул. Лесная, 12» в сочетании с другими данными уже указывает на человека.

Что делать на практике

  • Не считайте маскирование «включил и забыл». Соберите собственный тестовый набор русских текстов с типичными для вас данными и измеряйте долю пропусков до запуска в продакшен.
  • Адреса, номера документов и внутренние идентификаторы закрывайте отдельными правилами. Стандартной NER-модели для них мало.
  • Решите, что важнее: пропустить лишнее или замаскировать слишком много. Для данных клиентов лучше терпеть ложные срабатывания, чем утечки.
  • Храните соответствие меток и значений только на стороне прокси и только на время запроса.

Ограничения

Выборка в 20 вымышленных текстов мала, чтобы судить о реальной точности на живом потоке. Реальные письма длиннее, с опечатками, сокращениями и смешением языков. Метки в тексте могут влиять на ответ модели: она теряет контекст вроде пола или национальности, и качество на некоторых задачах падает.

Итог такой: связка Presidio и LiteLLM — рабочий и недорогой способ снизить риск при использовании внешних LLM. Но гарантией она не служит, пока вы не проверили её на своих данных и не закрыли дыры вроде частично открытых адресов. Для команд, которые уже ходят в облачные модели с клиентскими текстами, это стоит прочитать в оригинале и повторить на собственном наборе.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: как это работает на простом примере?

Presidio — open-source библиотека Microsoft для поиска и обезличивания персональных данных. Она состоит из двух частей. Analyzer находит в тексте сущности: имена, телефоны, e-mail, номера карт. Anonymizer заменяет найденное по выбранному правилу: удаляет, маскирует или подставляет метку. Представьте запрос: «Иван Петров просит перезвонить по номеру +7 900 123-45-67». В модель уходит «<PERSON_1> просит перезвонить по номеру <PHONE_1>».

Что известно по теме: где начинаются сложности с русским?

Из коробки Presidio заточена под английский. Для русского нужно подключить подходящую языковую модель, например из spaCy, и проверить, что она вообще находит имена в падежах. «Ивану Петрову», «у Ивана Петрова» и «Петрова И. А.» для модели разные задачи. Дальше нужны собственные правила. Presidio позволяет добавлять свои распознаватели на регулярных выражениях, контекстных словах и списках. Для российских реалий это номера договоров, ИНН, СНИЛС, внутренние идентификаторы клиентов.

Что известно по теме: что показал тест?

Автор сравнил три конфигурации на 20 вымышленных текстах. Подробные цифры в анонсе не приводятся, но один вывод назван прямо: в некоторых случаях часть адреса остаётся открытой. Причина типична для адресов. Это составная сущность из города, улицы, дома и квартиры. Модель уверенно помечает город или регион, а улицу с номером дома пропускает или режет посередине. Для утечки хватает и фрагмента: «ул. Лесная, 12» в сочетании с другими данными уже указывает на человека.

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Единое AI-пространство · Nomad

Протестируйте новые LLM и мультимодальные модели в одном окне

Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.

Открыть Nomad AI →Автономный Nomad Agent
Что вы думаете?
Загружаем комментарии…