Как мы прячем от нейросети телефоны и имена ваших клиентов
Посетители пишут боту на вашем сайте имена, телефоны и почту. Ответ формирует языковая модель GPT, её серверы стоят за рубежом. Расскажу, как Sevora убирает персональные данные из сообщения до отправки в модель, почему мы выключаем чат при сбое, где ошиблись и что спросить у подрядчика, который ставит вам ИИ-бота.
Откуда вопрос
Посетитель пишет в чат учебного центра или клиники: «Здравствуйте, меня зовут Анна, телефон +7 912 345-67-89, можно записаться на субботу?»
Отвечать на такие сообщения боту помогает языковая модель. Сильные модели вроде GPT работают на серверах за пределами России. Отправите сообщение как есть, и вместе с вопросом за рубеж уйдут имя и телефон Анны.
Мы хотели, чтобы модель получала такой текст: «Здравствуйте, меня зовут [PERSON_1], телефон [PHONE_1], можно записаться на субботу?» На вопрос модель ответит, а кто его задал, не узнает.
Оговорка: я не юрист, и статья не заменяет юридическую консультацию. Обезличивание сокращает объём данных, которые уходят за рубеж. Политику обработки персональных данных на сайте и согласие посетителя оно не заменяет.
Путь сообщения
- Посетитель пишет в виджет, сообщение приходит на наш сервер в России.
- Сервер находит в тексте персональные данные и ставит вместо них метки:
[PHONE_1],[EMAIL_1],[PERSON_1]. - В модель уходит текст с метками.
- Модель отвечает с теми же метками.
- Сервер подставляет настоящие данные обратно, посетитель читает обычный ответ.
- Разговор и заявка остаются в базе в России. На следующее сообщение сервер снова отправляет в модель историю только с метками.
На шестом пункте подрядчики ошибаются чаще всего. Первое сообщение замаскировать легко. Утечка случается позже: бот отправляет в модель новый вопрос вместе со всей историей, а в истории лежит телефон из первого сообщения.
Что мы прячем и как
Телефоны, почту, ники и ссылки в Telegram мы ищем шаблонами. У таких данных понятная структура, и шаблон находит их надёжнее нейросети.
Имена шаблоном не найти. В фразе «Добрый день, это Ольга Сергеевна из бухгалтерии» нет слов-подсказок. Имена ищет отдельная модель распознавания. Она работает на нашем сервере в России и ничего не отправляет в OpenAI.
У этой модели есть слабость: она принимает за людей названия компаний, похожие на фамилии. Допустим, ваша компания называется «Иванов и партнёры». Если бот не увидит слово «Иванов», он начнёт путаться в ответах. Поэтому для каждого клиента мы ведём список слов, которые не трогаем: название компании, бренды, имя бота.
Почему при сбое бот молчит
Сервис распознавания имён работает отдельно и может упасть, как любой сервер. Мы выбирали из двух вариантов. Первый: на время сбоя прятать телефоны и почту, а имена пропускать. Второй: не отвечать.
Мы выбрали второй. Пока распознавание не работает, посетитель видит «Сервис временно недоступен, попробуйте через пару минут». Мы получаем оповещение и поднимаем сервис.
Для вас это минус: несколько минут бот молчит. Пропущенному посетителю менеджер может перезвонить, если тот оставил контакт. Имя, которое ушло за рубеж, назад уже не забрать.
Где мы ошиблись
Фильтр ошибается двумя способами. Первый вы ждёте: пропустил телефон. Второй заметить труднее: фильтр спрятал обычное слово и испортил вопрос.
Второй ошибкой отметились мы. Правило для фраз вида «я Иванов» срабатывало на любое слово после «я». Модель получала вот что:
| Посетитель написал | Модель получила |
|---|---|
| Здравствуйте, я хочу узнать цену | Здравствуйте, [PERSON_1] узнать цену |
| Я не нашёл статус заявки | [PERSON_1] нашёл статус заявки |
Во второй строке из вопроса пропало «не», и смысл перевернулся. Модель нередко угадывала смысл по контексту. Поиск по базе знаний не угадывал: он получал испорченный запрос, и бот отвечал хуже.
Наши тесты проверяли «я Иванов», то есть тот случай, ради которого мы писали правило. Ошибку мы нашли, когда прогнали через фильтр обычные фразы посетителей. Мы переписали правило: теперь оно прячет после «я» только слова, похожие на имя. Тесты проверяют обе стороны: «я Иван» фильтр прячет, «я не нашёл» оставляет.
Если выбираете бота, спросите подрядчика, что он прячет. И отдельно спросите, как он проверяет, что фильтр не портит обычные вопросы.
Чего фильтр не ловит
Сейчас наш фильтр не прячет:
- даты рождения;
- сведения о здоровье и диагнозы;
- адреса без слов-подсказок («живу на Ленина, 5»);
- номера документов без слов «паспорт», «ИНН», «СНИЛС»;
- имена, в которых модель не уверена: редкие, написанные с маленькой буквы или латиницей.
Поэтому мы советуем не просить такие данные в чате. Для записи боту хватит имени и телефона, подробности уточнит ваш администратор. Список того, что фильтр прячет и что пропускает, мы держим актуальным на странице «Персональные данные». Если код что-то не умеет, сайт об этом так и пишет.
Что спросить у подрядчика
Эти вопросы стоит задать до подключения, к Sevora или к любому другому сервису:
- В какой стране стоят серверы, где хранятся разговоры и заявки?
- Какая модель формирует ответы и где она работает?
- Что уходит в модель: исходный текст или обезличенный? Как вы это проверите?
- Что делает бот, если обезличивание сломалось: молчит или отправляет текст как есть?
- Что фильтр не ловит? Ответ «ловим всё» должен вас насторожить.
- Сколько хранятся разговоры и заявки и как их удалить?
Как у нас сейчас
- Разговоры, заявки и контакты мы храним на серверах в России.
- В модель GPT уходит только текст с метками.
- Если распознавание имён не работает, бот не отвечает.
- Разговоры мы удаляем через 180 дней после последнего сообщения, пустые разговоры через 30 дней, заявки через год.
- В уведомление о заявке в Telegram мы не кладём имя и телефон, там только сигнал и ссылка в кабинет.
Юридические подробности собраны на странице «Персональные данные».
Никита Балыкин, Sevora. Опубликовано 25 октября 2026.