Чат-бот отвечает текстом, и ему достаточно спрятать данные. Агент вызывает функции — и им нужны настоящий номер и настоящий адрес. Разбираем, что должен уметь шлюз между моделью и вашим кодом и где ломаются решения «на вечер».
Вставка переписки с клиентом в запрос к языковой модели — это обработка персональных данных (пункт 3 статьи 3 закона 152-ФЗ). Оператором при этом остаётесь вы: закон не делает исключения для случая «мы просто спросили у нейросети».
Отсюда три вопроса, которые встают перед любой компанией, использующей искусственный интеллект на реальных данных:
Обезличивание — прямо предусмотренный законом режим, который снимает третий вопрос целиком и ослабляет первые два: в модель уходит подмена, а не персональные данные. Что это такое и какие методы разрешены — в основной статье.
Дальше — про то, что отличает агента от чат-бота и почему на агенте обычное маскирование перестаёт работать.
Чат-бот отвечает текстом. Ему достаточно спрятать данные: он всё равно ничего не делает с ними, кроме ответа. Поэтому маскирование «звёздочками» для чат-бота работает.
ИИ-агент вызывает функции: оформить доставку, найти клиента в CRM, позвонить, выставить счёт. Эти функции живут в вашем коде, и им нужен настоящий номер, настоящий адрес, настоящая фамилия. Маскирование решает половину задачи — вторая половина в том, чтобы вернуть настоящее значение в момент вызова.
Первый очевидный подход — вырезать данные из запроса: заменить на «клиент», «телефон», «адрес». Он ломает сразу три вещи:
Есть и второй очевидный подход — вернуть значение поиском по тексту: найти подмену в строке и заменить на настоящую. Он разваливается на первом же склонении: модель напишет «Кузнецову», а вы искали «Кузнецов».
Первые два требования выглядят решаемыми за вечер. Ломаются они на русском языке:
Один заказ целиком, три точки, где решается, кому что показать:
Номер заказа при этом остаётся нетронутым: он не персональные данные, и маскировать его значило бы ломать то, что работает.
Если вы уже используете шлюз перед моделями, посмотрите, как это же самое выглядит в живом прогоне: что делает маскирование LiteLLM на русском чате и как подключить обезличивание одним параметром.
Такой шлюз технически реализует метод введения идентификаторов из приказа Роскомнадзора от 19.06.2025 № 140 — и попадает в его требования: ключ хранится отдельно от массива, не передаётся третьим лицам, исходные и обезличенные данные не хранятся совместно, каждое раскрытие учитывается. Разбор методов и требований — в статье «Как обезличить персональные данные».
И отдельно, чтобы не было иллюзий: шлюз закрывает техническую часть. Он не заменяет правовые основания обработки, не подаёт уведомления и не отвечает на запросы субъектов. Это работа оператора.
Мы говорим это прямо, потому что честный ответ «вам это не нужно» экономит и ваши деньги, и наше время.
Модель перестаёт понимать задачу и теряет связь между репликами, а в вызов инструмента уходит то, что она видела, — то есть вырезанное слово. Курьер едет по адресу «адрес».
Модель пишет в другой форме: «Кузнецов» в запросе и «Кузнецову» в ответе. Поиск по точному вхождению разваливается на первом же склонении, а с ним и возврат значения в аргумент.
Нет. Он закрывает техническую часть метода введения идентификаторов: замену, отдельное хранение ключа, запрет совместного хранения и учёт раскрытий. Правовые основания, уведомления и ответы на запросы субъектов остаются на операторе.
Когда данные и так не персональные, когда модель работает в вашем контуре (тогда вопрос в доступах, а не в обезличивании) и когда для цели достаточно агрегации — метод изменения состава или семантики проще.
Замена значений формато-сохраняющими подменами, ключ отдельно от данных, запрет совместного хранения, учёт каждого раскрытия. Работает в вашем контуре.