Настройка LLM-Shield: защита PII и маршрутизация к локальным LLM | AiManual
AiManual Logo Ai / Manual.
08 Янв 2026 Инструмент

LLM-Shield: как защитить персональные данные при работе с нейросетями

Пошаговая настройка LLM-Shield для маскировки персональных данных и перенаправления запросов к локальным LLM. Установка через Docker, сравнение с аналогами.

Ваши секреты утекают в облако. Пора поставить щит

Отправляете личный email в ChatGPT для генерации ответа? Заливаете медицинскую историю пациента в Claude для анализа? Поздравляю, вы только что подарили свои данные корпорации. Или данным своих клиентов. LLM-Shield — это прокси, который встает между вашим приложением и облачным API (вроде OpenAI) и делает две простые вещи: вычищает из запросов всю личную информацию и, если хочет, отправляет запрос не в облако, а к вашей локальной нейросети.

💡
PII (Personally Identifiable Information) — это любая информация, которая может идентифицировать человека: имя, email, номер паспорта, номер телефона, адрес, номер кредитки. То, что вы по закону не имеете права просто так отправлять на серверы в другой стране.

Что умеет этот щит? Маскировка и маршрутизация

Представьте его как очень умного и параноидального почтальона. Вы даете ему письмо для отправки. Он сначала зачеркивает в нем все имена и адреса, заменяя их на безобидные метки вроде [PERSON_1]. Потом смотрит на адрес получателя. Если это облако OpenAI — отправляет туда уже очищенное письмо. А если вы настроили маршрут на локальную LLM (скажем, запущенную через Ollama), то поворачивает и несет письмо к вашему домашнему серверу.

  • Маскировка PII на лету: Использует движок Microsoft Presidio для обнаружения чувствительных данных на 24 языках. Находит и маскирует.
  • Умная маршрутизация: Отправляет запросы либо в указанное облачное API (OpenAI, Anthropic), либо на локальный эндпоинт с вашей LLM.
  • Совместимость с OpenAI API: Ваше приложение думает, что общается с OpenAI. А на самом деле говорит с LLM-Shield. Никаких изменений в коде.
  • Docker-first подход: Запускается одной командой. Конфигурация через переменные окружения или YAML-файл.

1Берем щит в руки: установка за 60 секунд

Если у вас стоит Docker, то все просто. Клонируем репозиторий с GitHub (ссылка будет ниже), заходим в папку и запускаем docker-compose. В теории. На практике нужно сначала настроить конфиг. Создайте файл config.yaml. Вот его скелет:

Не копируйте этот YAML слепо. Вам нужно указать реальные API-ключи и адреса ваших моделей. Иначе запросы будут лететь в никуда или вы получите ошибки авторизации.

В конфиге вы определяете два ключевых момента: какие сущности маскировать (номера телефонов, emails) и куда отправлять запросы по умолчанию. Можно задать сложные правила: если в промпте есть слово "медицинский", отправлять на локальную модель с медицинским финетюнингом, а все остальное — в GPT-4.

2Настраиваем дозорного: что и как маскировать

Presidio — мощный, но не всесильный. Он может не распознать кастомный формат номера договора вашей компании. Для этого в LLM-Shield есть возможность добавить свои паттерны для поиска через регулярные выражения. Откройте конфиг и найдите раздел anonymizer. Там вы увидите список сущностей по умолчанию: CREDIT_CARD, EMAIL_ADDRESS, PERSON. Добавьте свою сущность MY_CONTRACT_NUMBER с регуляркой, которая его находит.

💡
Маскировка бывает двух видов: анонимизация (замена на метку типа [EMAIL]) и псевдонимизация (замена на реалистичный, но фейковый email). LLM-Shield использует первый подход — это безопаснее, но может сломать контекст, если модель должна понимать, что это за сущность.

3Прокладываем тропы: маршрутизация запросов

Здесь начинается магия. В конфиге есть раздел routers. Вы можете создать несколько правил. Базовое правило: все запросы идут на адрес вашей локальной LLM, которая поддерживает OpenAI-совместимый API. Это может быть LM Studio, llama.cpp сервер или даже ваш кастомный сервис.

Альтернатива: отправить все в облако, но только после маскировки. Это снижает риски утечки, но не избавляет от зависимости от API и счетов. Третий, самый хитрый сценарий — гибридный. Простые запросы (привет, как дела?) идут на маленькую локальную модель для экономии. Сложные аналитические — в GPT-4. Похоже на логику LLMRouter, но здесь акцент на приватность.

Живой пример: от raw данных к безопасному промпту

Ваше приложение формирует такой запрос: "Пациент Иван Сидоров (email: ivan@mail.ru, тел. +7-999-123-45-67) жалуется на головную боль. Напишите для него рекомендации".

LLM-Shield получает этот промпт, прогоняет через Presidio и преобразует его в: "Пациент [PERSON_1] (email: [EMAIL_ADDRESS_1], тел. [PHONE_NUMBER_1]) жалуется на головную боль. Напишите для него рекомендации".

Эта обезличенная строка уже летит дальше — в облако или к вашей локальной модели. Ответ от модели приходит обратно в LLM-Shield. И здесь есть важный момент: щит НЕ производит обратную замену меток на исходные данные. Ответ клиенту придет тоже обезличенным. Если вам нужно восстановить исходные имена (например, для вставки в готовый документ), это ложится на ваше приложение. LLM-Shield лишь логирует соответствие меток и оригинальных значений, чтобы вы могли сделать замену на своей стороне.

С чем его едят? Сравнение с аналогами

ИнструментЗащита PIIМаршрутизацияСложность
LLM-ShieldДа (Presidio)Да (облако/локально)Средняя (Docker)
Прямой вызов OpenAI APIНетНетНизкая
Самописный прокси с regex-заменамиОграниченнаяВозможнаВысокая
PlexMCPНет (другая задача)Да (к инструментам)Средняя

Главный конкурент — это ваше собственное решение, написанное за неделю. Но Presidio — это целый фреймворк от Microsoft, который учитывает контекст. Простой regex найдет номер телефона в тексте, но может пропустить его, если он написан с пробелами или скобками. Presidio справится. Платить за эту готовность приходится ресурсами — контейнер с Presidio не самый легкий.

Кому срочно нужен этот щит?

Если вы попадаете хотя бы в одну категорию, берите LLM-Shield на вооружение.

  • Стартапы в финтехе или медицине: У вас по определению конфиденциальные данные клиентов. Отправлять их в облако OpenAI без обработки — прямой путь к штрафам от регуляторов.
  • Корпоративные разработчики: Внутренние инструменты для анализа переписки, поддержки клиентов. HR-отдел хочет использовать LLM для сортировки резюме? Только через щит.
  • Энтузиасты локальных LLM: Вы уже собрали мощную станцию и запустили несколько моделей через Ollama. Теперь нужно незаметно перенаправить на них запросы от приложений, заточенных под OpenAI API.
  • Все, кто боится блокировок: Если API OpenAI вдруг станет недоступен в вашем регионе, вы можете быстро переключить маршрутизацию на локальную модель или альтернативное облако. Без переписывания кода.

LLM-Shield — не панацея. Он не шифрует данные, не защищает от утечек на стороне вашего приложения и не делает аудит того, что делает с данными локальная модель. Это инструмент для снижения рисков, а не их полного устранения.

Финал: брать или не брать?

LLM-Shield решает очень конкретную проблему элегантно и в духе времени: контейнер, открытый код, совместимость с де-факто стандартом (OpenAI API). Его главный плюс — он позволяет вам использовать всю экосистему инструментов, заточенных под этот API (от AI-агентов до библиотек), не жертвуя приватностью и не привязываясь к одному вендору.

Минусы тоже есть. Нагрузка на CPU от Presidio, необходимость тонкой настройки правил маскировки под свои данные, дополнительное звено в цепи, которое может сломаться. Но если вы работаете с персональными данными, эти минусы — просто цена входа в легальное поле.

Совет на прощание: начните с гибридного режима. Направляйте в облако только то, что не содержит PII, а все чувствительное обрабатывайте локально с помощью мощных открытых моделей, например, из нашего обзора. Так вы и приватность соблюдете, и не потеряете в качестве ответов на сложные вопросы. А счет от OpenAI приятно удивит.