Что нейросеть видит вместо имён и контактов
Мы устроили ассистента так, чтобы нейросеть не видела настоящих имён сотрудников и клиентов, их телефонов и почты. Сервер прячет их до отправки, а в готовый ответ возвращает только тем, кому их можно видеть.
Утечка данных — одно из главных опасений бизнеса, когда речь заходит про AI. В прошлой статье я писал, как сервер проверяет цифры в ответе, а обезличивание там заняло пару строк. Здесь подробно: что уходит в нейросеть, где проходит граница и как мы проверяем, что лишнее не уходит.
Что уходит в нейросеть
Вот что лежит в данных и что из этого видит нейросеть:
- Сотрудники → псевдонимы вида [EMPLOYEE_1]
- Клиенты в результатах расчёта → метки вида К-XXXXXXX
- Имя клиента или незнакомое имя в вопросе → [PERSON]
- Телефоны, почта, ссылки и номера в вопросе → [PHONE], [EMAIL], [URL], [ID]
- Контакты клиентов → не уходят совсем
- Вопрос и прошлый ход диалога → уже обезличенные
- База данных → доступа нет, только короткий результат расчёта, не больше 30 строк
Псевдоним работает как номерок в гардеробе. Нейросеть может написать «[EMPLOYEE_1] продал больше всех», но не знает, кто это. Настоящее имя сервер ставит уже в готовый ответ, беря его из справочника: рядом с псевдонимом ФИО не хранится нигде. Метка клиента одна и та же во всех диалогах, но расшифровать её может только сервер.
Где проходит граница
Слева сервер, он видит всё. Справа нейросеть: до неё доходят только обезличенный вопрос и обезличенный результат расчёта. Настоящие имена и контакты сервер возвращает уже в готовый ответ.
Контакты — только в готовом ответе
Руководителю, который разбирает клиентов, нужны их контакты. Тут было два требования сразу: руководитель видит всё, а нейросеть — ничего из этого.
Решили так: контакты клиентов в нейросеть не уходят вообще. Сервер подставляет их уже в готовый ответ, и только тем, у кого открыт доступ «CRM с персональными данными».
Нейросеть при этом видит только метку клиента, например К-XXXXXXX, без телефона и почты. Когда ответ готов, сервер по этой метке находит клиента и сам добавляет его контакты.
Доступ устроен блоками: у каждого пользователя свой набор открытых разделов. Нейросеть получает только те инструменты, которые открыты этому пользователю.
Как проверяем, что лишнее не уходит
Написать правило мало, нужно проверять, что оно работает. При каждом обновлении ассистента автотесты перехватывают всё, что сервер отправляет в нейросеть, и ищут там персональные данные двумя способами: по заранее заданным примерам, включая ФИО реального сотрудника, и по шаблонам — телефоны в любом формате, почта, паспортные данные, ссылки. Отдельные тесты проверяют, что контакты клиентов не попадают ни в нейросеть, ни в лог, а в ответе их видят только те, у кого есть доступ.
Если хоть одна такая проверка не пройдёт, обновление не установится: сервер откатится сам. Риск утечки персональных данных клиентов мы не принимаем даже как «небольшой остаточный».
И ещё одно правило: сырой текст вопросов мы не храним. В логе остаётся одна служебная строка на ответ: статус, время, число шагов. Ни вопроса, ни ответа, ни результатов расчёта там нет.
Границы обезличивания
Людей в вопросе сервер ищет по справочнику сотрудников, по списку имён и по словам, похожим на фамилию. Если в справочнике есть сотрудница Пупкина, то «Пупкиной» и «пупкиной» сервер узнает. Опечатку в последних буквах тоже простит, а в начале слова — нет: «Папкиной» станет просто [PERSON]. Утечки тут нет, но нейросеть не поймёт, о ком речь. Одно имя без фамилии на сотрудника не указывает никогда.
Если пользователь сам напишет в вопросе имя клиента или телефон, в ответе на их месте будет «(имя скрыто)»: такие метки сервер обратно не раскрывает.
Что взять себе
Если вы подключаете нейросеть к данным компании, вот что я бы сделал сразу:
- Не пускайте нейросеть в базу. Пусть она выбирает расчёт, а данные выдаёт ваш сервер — коротким результатом.
- Заменяйте имена и контакты до отправки. Сотрудники — псевдонимы, клиенты — метки, телефоны и почта — маски. Соответствие псевдонимов и имён пусть знает только ваш сервер.
- Возвращайте настоящие данные только в готовый ответ. И только тем, кому их можно видеть.
- Проверяйте автоматически, что уходит в нейросеть. Перехват всего исходящего и поиск персональных данных — при каждом обновлении, а не один раз на старте.
- Не храните сырой текст вопросов. В них может оказаться то, что не должно лежать в логах.
Итог
Чтобы отвечать на вопросы руководителя, нейросети не нужны настоящие имена. Всё, что касается людей, остаётся на сервере: он заменяет данные до отправки, возвращает их в готовый ответ и при каждом обновлении проверяет, что лишнее не утекло.