
Всем привет! Меня зовут Анастасия Шмалько, я лидер команды «AI-Персонализация контента» в Сбере. Сегодня я расскажу о том, как с помощью LLM и машинного обучения мы персонализируем рекламные SMS для корпоративных клиентов.
Наша цель — создание долгосрочных доверительных отношений с клиентом. Мы показываем, что сообщения от банка адресованы именно ему, они учитывают его потребности и помогают развивать его бизнес. С помощью индивидуального подхода в коммуникациях мы укрепляем эмоциональную связь и повышаем уровень доверия к банку. Создаём текст в формате и тональности, наиболее близкой этому человеку, опираясь на его профиль, интересы, предпочтения и отклики.
Зачем нужна персонализация?
Сразу начну с примера:

Слева — SMS с универсальным текстом «для всех». А справа — два текста с персонализацией по двум параметрам клиента: полу и поколению.
В маркетинге есть «теория поколений»: в зависимости от года рождения людей относят к разным поколениям — X, Y (миллениалы) и Z . Считается, что для них характерно разное восприятие информации. Это обусловлено влиянием исторических, социальных и технологических событий. Проще говоря, у людей разных поколений разные ценности.
На иллюстрации выше женщина относится к поколению Z, а мужчина — к поколению X. Хорошо видно различие в обращении и тональности сообщений: с поколением Z мы общаемся неформально и на «ты», а с поколением X тон подчёркнуто уважительный, акцент на надёжность продукта.
Если бегло посмотреть на все три SMS, то может показаться, что между ними нет особой разницы. Везде говорится про привлекательную ставку и что не надо посещать офис банка для оформления. Так стоит ли вообще заморачиваться с персонализацией? Быстрый ответ — «Да!». Примеры выше взяты из нашего эксперимента, который мы провели в прошлом году. В А/В-тесте контрольная группа клиентов получала стандартный текст, написанный человеком, а целевая — персонализированные тексты, всего шесть штук: два пола и три поколения в различных сочетаниях. И самое интересное для нас то, что персонализированные тексты сгенерированы с помощью GigaChat. Клиенты целевой группы, которые получали персонализированные SMS, показали бОльшую конверсию в сделку и принесли нам сотни миллионов рублей дополнительного дохода. И этот эффект можно масштабировать.
На сегодняшний день качество генераций GigaChat получается не хуже, чем когда пишет человек, но добились мы этого далеко не сразу.
Путь к «идеальному» ИИ
Начинали мы примерно в середине 2024 года. Сначала опробовали модель «из коробки»: подавали на вход стандартный текст SMS и просили его персонализировать, например, по полу человека. Но получали только различие окончаний в обращении к клиенту: уважаемый, уважаемая.
Тогда спросили GigaChat:
—Ты знаешь, как персонализировать SMS под мужчин и под женщин? Знаешь, в чём различия их восприятия?
— Да, знаю. Женщины более эмоциональные, поэтому для них текст должен быть соответствующим, ярким, с использованием метафор и эпитетов. А для мужчин текст должен быть чётким и лаконичным.
— Отлично, приведи примеры.
И вот примеры, которые мы заслужили:

И ведь не поспоришь: для женщин — красочно и эмоционально, для мужчин — кратко и чётко. Теперь «Привет, мужик!» — локальный мем нашей команды ☺
Очевидно, что требуется найти подход к LLM и подробнее описать запрос для получения нужного результата.
Этап первый. Prompt-engineering
Для начала мы решили подробно описать в промпте правила редакционной политики: не использовать даты прописью, деепричастия, абстракции, клише и т. д. — всего около 30 правил, дать модели расширенные инструкции по персонализации. Для этого создали базу знаний по шести параметрам: три параметра личности клиента — пол, поколение и психотип, и три параметра бизнеса — стадия развития, отрасль и организационно-правовая форма.
Помимо этого, в запросе передавались: информация о продукте, его преимущества, ключевое сообщение. В конце промпта в качестве рефлексии ещё раз предлагали модели убедиться, что в созданном тексте есть ключевая информация о продукте — чтобы не потерять основной посыл за всеми инструкциями. Далее всё это подавали в GigaChat (на тот момент самую продвинутую модель из линейки — GigaChat Pro).
Вот пример:

Выводы на первом этапе:
Основная информация о продукте из блока рефлексии действительно не терялась и помогала сосредоточить внимание на ключевой информации.
Несмотря на большое контекстное окно модели, большинство инструкций из промпта игнорировалось.
Правила редакционной политики нарушались, персонализация была слабой или отсутствовала.
Проблема loss-in-the-middle — игнорирование инструкций в середине промпта — оказалась свойственна всем передовым моделям: ChatGPT-4O, O1, Gemini и др.
Самый главный вывод: важно снизить когнитивную нагрузку на LLM в рамках одного запроса, автоматизировать проверку текстов на соответствие внутренним стандартам и поработать над структурой промпта.
Этап второй. Добавляем классические инструменты NLP
Огромный промпт из первого подхода мы разделили на две части: сначала создавали SMS без персонализации, а при втором обращении к GigaChat адаптировали его под выбранные параметры. Самым важным на этом этапе было добавление классических инструментов NLP в конвейер генерации текстов.
Каждое правило редакционной политики мы выделили в отдельный пункт, например, отсутствие деепричастий, двух глаголов подряд и т. д., и реализовали их проверки с помощью морфологического анализатора PyMorphy. Сложные проверки, например, отсутствие абстракций, клише и т. д., выполняли автоматически с помощью обращения к GigaChat с отлаженными промптами. Если проверка не выполнялась, то запускался цикл перегенерации.

Выводы на втором этапе:
Снизили когнитивную нагрузку на GigaChat, формализовали правила и проверки, а с помощью циклов перегенерации добились их соблюдения.
Но персонализация по‑прежнему была слабовата. Модели сложно давалось понимание инструкций в формате: «Текст должен быть с акцентом на практическую значимость продукта, подчеркни удобство для сотрудников и т. п.».
Этап третий. Всё упрощаем

Начали всячески упрощать схему:
Убрали из промпта правила редакционный политики. Добиваемся их соблюдения в цикле проверок и перегенераций. Их наличие в промпте иногда носит эффект «НЕ думай о слонах»: модель начинает о них думать, то есть может игнорировать ограничение.
Проанализировали эталонные SMS, написанные редакторами, сократили инструкции по персонализации до отдельных фраз и терминов. Теперь мы не пишем: «Текст должен быть таким-то», а просим GigaChat использовать в тексте конкретные слова и выражения, которые релевантны выбранному поколению, отрасли и т. д.
В результате мы стали быстрее и с меньшим затратами токенов получать в большинстве случаев персонализированные SMS. Исключение из промпта правил редакционной политики практически не повлияло на их соблюдение в сгенерированном тексте.
Наборы терминов для персональных параметров позволяют более явно объяснить, что мы ждём от нейросети, поэтому большинство сгенерированных текстов обладает признаками персонализации.
Кстати, в этом подходе стало заметно преимущество GigaChat Max над GigaChat Pro: версия Max точнее следует инструкциям по добавлению тех или иных терминов в сообщение.
Над чем мы ещё работаем и что считаем перспективным: силами наших редакторов собрали набор эталонных персонализированных SMS и на его основе проводим дообучение на LoRa-адаптере.
Что пока не сработало?
Вот несколько идей, которые в нашей практике оказались неудачными:
Автоматическая оптимизация промптов DSPy. Практика хороша для коротких промптов, но не подходит для длинных подробных подсказок.
Агентные системы. Расходуют очень много токенов, в автономном режиме часто уходят «не в ту сторону». После нескольких попыток на Langchain и Autogen отложили это направление до лучших времён.
Задание экспертной роли и дополнительные ухищрения. Например: «Ты опытный редактор, который пишет стилистически выверенные SMS», с уловками типа: «Я дам тебе $1 млн чаевых за правильный ответ», «твой ответ важен для моей карьеры» и т. д. Всё это на качество не повлияло.
One/Few shot. При добавлении в промпт примеров SMS языковые модели не улавливают понятие «скопировать удачную стилистику из примера». При этом иногда подтягивает факты из этих примеров, создавая SMS с ложной информацией.
Планы
Раньше, когда персонализацию не использовали, все клиенты получали в SMS одинаковый текст. Сейчас мы делим адресатов на группы, выбираем для них параметры персонализации и готовим для каждой группы свой текст. А в будущем планируем перейти к индивидуальным текстам для каждого клиента.
Заключение
Добиться от LLM хорошего качества генерации можно, но эта задача сложнее, чем может показаться на первый взгляд. Надо модели помогать дополнительными инструментами. Однако в ближайшие год-два, я думаю, точно не стоит говорить о том, что LLM будет генерировать тексты лучше человека, поэтому наша цель — сделать не хуже. Зато преимущество искусственного интеллекта в том, что он работает очень быстро и круглосуточно, без отпуска и выходных.
Команда проекта: Смирнова Людмила, Шмалько Анастасия, Акимов Дмитрий, Тращенков Сергей, Шумов Александр, Калашникова Светлана.
Спасибо команде редакторов: Васильковой Полине, Лебединской Валерии, Дмитриевой Дарье, Комнатной Светлане за бесценную экспертизу в написании рекламных SMS. Также благодарим коллег из Центра бизнес-поддержки за помощь с тестированием и подбором промптов: Кашкову Екатерину, Тищенко Ирину. Благодарим Уренёва Данила и методологов Лаборатории Нейронаук и поведения человека за методологическую поддержку.