Агент отправил письмо на адрес «email_hidden»

Начиналось всё с правильного желания. Ассистент работает с почтой, контактами, перепиской — значит, в логах и истории чата много личных данных. Мы сделали аккуратную вещь: перед сохранением истории все email-адреса заменялись маркером <email_hidden>. Приватность, гигиена, всё по учебнику.

Через какое-то время я прошу Элис: «Отправь коллеге письмо с итогами». Адрес я написал прямо в сообщении. Элис думает, собирает письмо и отчитывается: «Отправлено». Открываю «Отправленные». Получатель: <email_hidden>. Буквально, с угловыми скобками.

Сначала я решил, что модель «тупит» и надо переписать инструкцию. Переписал. Не помогло. Тогда я посмотрел не на ответ, а на то, что модель видела на входе. И всё встало на места: в истории чата, которую получает агент, моего адреса просто не было. Там стоял маркер. Модель честно взяла то, что ей дали, и подставила в поле «Кому».

Корень проблемы — мы спрятали данные не там. Маскировка стояла на истории, а история — это память исполнителя, источник правды, из которого агент собирает реальные действия. Скрывая адрес от логов, мы скрыли его и от того, кто должен отправить письмо.

Что доработали. Маскировку в чате по умолчанию отключили — она включается только явным флагом, когда это действительно нужно. Прятать данные теперь надо на выходе — там, где они показываются или уходят в журнал. А в памяти, по которой агент действует, данные остаются настоящими. Плюс отдельная проверка: заглушка не может уйти в адрес или текст внешнего действия.

Почему так, а не «научить модель распознавать маркер»? Потому что модель не может восстановить то, чего она не видела. Чинить надо поток данных, а не уговаривать нейросеть.

Урок: защищайте данные на выходе, а не в голове исполнителя. Иначе забота о приватности тихо ломает сам продукт — и ещё отчитывается об успехе.

У вас защита данных когда-нибудь ломала то, ради чего всё делалось?

#Элис #ЭлисAI #факапы

Агент отправил письмо на адрес «emailhidden» | Сетка — социальная сеть от hh.ru