Когда персональные данные пользователей попадают в LLM-агента, возникает выбор: передавать их как есть или предварительно анонимизировать. Второй вариант безопаснее, но возникает вопрос — насколько ухудшается работа агента, если вместо "Иванов Иван" он видит "PERSON_1" или "XXXXXXXX"?
Мы протестировали это на миниатюрном банковском агенте с использованием Hivetrace Dataclean. В него отправили по 102 синтетических запроса в трёх вариантах: чистые данные, маскировка и псевдонимизация. Оценка проводилась с помощью DeepEval (LLM-as-a-judge). Результаты — ниже.
Цель исследования
Ранее мы рассказывали об инструменте для анонимизации данных, сделав акцент на продукте и метриках NER-моделей. В этой статье — фокус на влиянии анонимизации на работу LLM-агентов.
Чтобы получить сопоставимые данные, мы замерили эффективность агента в числовых значениях. Для этого понадобились: датасет с вымышленными запросами, простой агент и система оценки его ответов.
Методология
Сравнение проводилось по трём типам входных данных:
- Чистые
- Замаскированные: замена на "XXX…X" той же длины
- Псевдонимизированные: замена на PERSON_1, PHONE_1 и т.п.
Псевдонимизация (3) исключает совпадение с реальными данными и позволяет делать множественные подстановки. В отличие от шаблонных имён (например, "Иванов Иван"), она не создаёт риска утечки и не требует управления списком имён. Однако она делает имена нереалистичными, что теоретически может усложнить задачу агенту.
Чистые данные сгенерированы с помощью Qwen 3.5-Plus. Эта модель выбрана из-за доступного бесплатного лимита и удобного CLI. Мы попросили её создать 100 неосторожных запросов с персональными данными: именами, телефонами, номерами карт, CVC, адресами, паролями. Получили 102 — использовали все.
Пример исходного запроса:
Добрый день! Хочу получить выписку по карте 4000 1234 5678 9012, но в приложении не могу найти. Можете отправить на адрес petrov.ivan@yandex.ru?
Агент — минималистичный банковский помощник на базе gpt-4.1. Он отвечает только по пяти темам:
- Получение справок и выписок по счёту
- Помощь пострадавшим от мошеннических действий
- Консультации по переводам и проблемам с ними
- Запросы на страхование недвижимости
- Запросы на выдачу кредита
В качестве провокации включены запросы на страхование карт, а не недвижимости.
Пример ответа (на замаскированный запрос):
{"request": "Добрый день! Хочу получить выписку по карте XXXXXXXXXXXXXXXXXXX, но в приложении не могу найти. Можете отправить на адрес XXXXXXXXXXX@XXXXXXXXX?","response": "Для оформления выписки уточните, пожалуйста:\n1. За какой период нужна выписка (например, последний месяц, 2023 год и т.д.)?\n2. Хотите получить выписку только по этой карте или по всем счетам?\n3. Ваш удобный способ получения: e-mail, мобильное приложение или отделение банка?\n\nПожалуйста, не указывайте полный номер карты и другие конфиденциальные данные. Жду ваш ответ!"}
Оценка результатов
Для оценки использовали подход LLM-as-a-judge с инструментом DeepEval. Оценивались:
- Правильность определения темы запроса
- Качество рекомендаций
Выбран метод GEval, который возвращает оценку в диапазоне [0, 1].
Параметры оценки:
- Модель: default из OpenAI
- Температура: 0
- Критерии: совпадение темы и полезность совета
Каждый тестовый случай проходил 20 оценок, результаты усреднены, чтобы снизить влияние случайных галлюцинаций.
Результаты
Количество запросов: 102
Количество оценок на каждый тип: 20
Результаты:
- Чистые данные: высокая стабильность и качество ответов
- Маскировка: заметное падение оценок, увеличение стандартного отклонения
- Псевдонимизация: минимальное влияние на качество, близко к чистым данным
Маскировка превращает данные в бессмысленный набор символов, что затрудняет понимание контекста. Псевдонимизация же сохраняет подсказку о типе данных (например, PERSON или PHONE), что помогает LLM.
Ограничения
- Диалог — однораундовый (вопрос-ответ), а не многоходовый
- Персональные данные не используются для реального решения задачи
- Запросы синтетические, могут содержать больше данных, чем в реальности
- Псевдонимизация сохраняет тип данных, что может смягчать влияние на LLM
- Маскировка использовала только символ "X"; влияние других символов не изучалось
Для улучшения методологии можно использовать ConversationalTestCase из DeepEval и анализировать более длинные, реалистичные диалоги.
Вывод: псевдонимизация почти не влияет на работу LLM-агента, тогда как маскировка вызывает значимое падение качества. Сохранение типов данных помогает модели сохранять контекстное понимание.