Как мы создали новую рекламную систему ChatGPT: доверие пользователей и релевантность рекламы
Авторы: Ритендра Датта и Картик Гопалратнам, сотрудники технической команды
Традиционные рекламные системы реагируют на отдельные проявления намерения пользователя. Пользователь что-то ищет или просматривает в интернете, рекламная система получает эти запросы и просмотры страниц как события и на их основе подбирает объявления. Создание рекламной системы для ChatGPT требовало другого подхода: намерение пользователя формируется в ходе диалогов и меняется от реплики к реплике, а подходящий момент для рекламы иногда так и не наступает. Для этой новой парадигмы мы разработали специализированную систему доставки рекламы. В основе рекламной системы нового типа лежит специализированная постобученная передовая LLM. Она вызывает инструменты для поиска (выявления лучших вариантов), ранжирования (прогнозирования вовлеченности пользователя), оценки релевантности (полезности объявления) и проведения аукционов для окончательного выбора рекламы и определения цены.
Наша рекламная система учитывает нюансы меняющихся целей пользователя благодаря трем ключевым проектным решениям: 1) рекламным сессиям с сохранением состояния — информация запоминается между репликами одного разговора и между разными разговорами; 2) специализированной LLM, прошедшей постобучение, которая через вызовы инструментов интерпретирует контекст разговора и стоящие за ним намерения пользователя, а затем эффективно подбирает, ранжирует и доставляет объявления; 3) отбору рекламы в отдельном сервисе, независимо от генерации ответов ChatGPT, чтобы реклама не влияла на ответы и ChatGPT сохранял нейтральный тон. Наша LLM, прошедшая постобучение, управляет всем рекламным процессом, определяя, какое объявление и когда показать, с учетом как текущей реплики пользователя, так и истории разговора. Раньше создание такой самоулучшающейся рекламной системы с нуля занимало годы. Однако ChatGPT Реклама достигла уровня выручки в 1 млрд долларов США в пересчете на год менее чем за 200 дней после запуска, а к настоящему моменту рекламу в ChatGPT разместили уже более 100 000 рекламодателей.
В обычных системах рекламный запрос, как правило, начинается с четко определенного события. Пользователь вводит поисковый запрос или открывает веб-страницу, и рекламная система получает запрос. Такая система устроена довольно просто: она находит потенциальные объявления, ранжирует их, проводит аукцион для определения подходящей цены размещения и показывает выбранное объявление пользователю. В ChatGPT такой однозначный момент сам по себе не возникает.
Люди приходят в ChatGPT с целями, а не с поисковым запросом, предполагающим единственный ответ. Они могут планировать поездку, выбирать программы для бизнеса, обставлять дом или осваивать новое хобби. Все это не решается за один обмен репликами. Часто ChatGPT по ходу диалога помогает пользователю понять, что для него важно.
Например, наша инженерная команда спросила ChatGPT, как подготовиться к забегу: диалог начался с общего вопроса о беге. Через несколько реплик участники спросили об обуви для тренировок. С каждым новым условием коммерческий смысл диалога меняется, а этот персонализированный контекст продолжает развиваться в последующих сессиях. Если бы система действовала по первому сообщению, она могла бы совершенно неверно определить намерение, ухудшив пользовательский опыт и создав помехи.
Поэтому нам пришлось выйти за рамки рекламной архитектуры «запрос — ответ» и создать систему с нуля: она должна находить потенциальные коммерческие возможности, сохраняя приоритет доверия и пользы для пользователя.
Если бы мы превращали каждое сообщение в отдельный запрос, как традиционные рекламные системы, в чате возникло бы несколько рисков: 1) чрезмерно упростить и неверно понять цель пользователя; 2) запустить рекламный процесс слишком рано, когда реальная потребность еще не ясна; 3) показать рекламу, которая мешает пользователю двигаться к цели, а не помогает; 4) неэффективно перезапускать рекламный процесс при каждом изменении запроса, создавая шум и лишние расходы. Вместо опоры на отдельные события рекламная система, включающая поиск, ранжирование и доставку, поддерживает сессию с сохранением состояния. Рекламная сессия длится на протяжении обмена репликами, допускающего рекламу, запоминая и обновляя информацию по мере ее изменения. ChatGPT передает исходный контекст запроса рекламному серверу. Рекламная система следит за развитием диалога и адаптируется к нему, а не опирается на единственный упрощенный запрос.
Отбор рекламы идет параллельно с обычной генерацией ответа ChatGPT, чтобы рекламный процесс не влиял на ответы. Объявления фильтрует и отбирает отдельная система, которая получает содержание разговора и работает в рамках собственных условий допуска рекламы, требований к качеству и ограничений на доставку. Эта важная архитектурная граница — разные сервисы с отдельными моделями и кодом — позволяет основным серверам ChatGPT заниматься генерацией обычного ответа. В то же время рекламная система независимо оценивает, есть ли подходящая возможность для рекламы, и, если да, готовит рекламное размещение в рамках отдельного процесса показа.
Рекламный процесс идет параллельно с формированием ответа ChatGPT.
Помимо защиты пользовательского опыта, такое разделение имеет ряд практических преимуществ. ChatGPT не зависит от рекламной системы: сервисы никак не связаны друг с другом и используют разные модели для генерации контента. Поэтому, если система показа рекламы недоступна или работает медленно, это никак не влияет на формирование обычного ответа ChatGPT. Это означает, что рекламная система не может вызвать сбой или замедлить работу ChatGPT. Еще одно преимущество такого разделения — возможность поддерживать высокие требования к полезности рекламы. Отсутствие рекламы — нормальный, успешный результат. Система выдает объявление, только если оно явно полезно и пользователю, и рекламодателю.
Еще один ключевой компонент архитектуры нашей рекламной системы — LLM, прошедшая постобучение. Она интерпретирует разговоры и управляет всем рекламным процессом в агентном цикле. Она вызывает инструменты для выполнения основных функций системы: от поиска объявлений до ранжирования, аукциона и, наконец, доставки. Мы называем эту LLM оркестратором.
Рекламный процесс начинается с определения намерения пользователя, чтобы запустить поиск — быстро собрать заведомо широкий набор потенциальных объявлений для последующей фильтрации. Постепенное поступление сообщений дает больше информации для поиска, но добавляет неоднозначности: рекламной системе нужно понимать текущие намерения пользователя и не путать их с тем, что обсуждалось ранее и уже потеряло актуальность. Оркестратор должен понимать отсылки к предыдущим сообщениям, распознавать гипотетические рассуждения пользователя и не воспринимать каждое упоминание товара или услуги как желание что-то купить.
Рекламный оркестратор использует доступные данные разговора и сведения о пользователе, последовательно подбирая подходящие объявления и каждый раз решая, какой инструмент вызвать и когда. Основная цель — найти наиболее подходящее объявление для этого разговора и контекста, сочетающее высокую ценность для пользователя и рекламодателя. Если пользователь включает персонализацию рекламы, оркестратор также учитывает доступную информацию о его прошлых разговорах, не относящуюся к чувствительным данным, чтобы точнее подбирать объявления.
Рекламный оркестратор итеративно вызывает инструменты доставки рекламы, чтобы найти полезные объявления.
По мере развития разговора рекламный оркестратор получает новую информацию и может снова вызвать инструменты с обновленным контекстом, чтобы найти более подходящие объявления и передать их клиентскому приложению. Оно сможет использовать новые объявления, если они поступят вовремя.
Оркестратор устроен так, чтобы сочетать ценность для пользователя и рекламодателя, всегда ставя интересы пользователя на первое место.
Рекламная система состоит из отдельных инструментов, которые оркестратор вызывает итеративно, подбирая лучшие объявления для диалога. В общих чертах процесс выглядит так: оркестратор составляет краткие текстовые резюме диалогов, которые затем преобразуются в семантические эмбеддинги — представления смысла, удобные для поиска в рекламной системе. По этим эмбеддингам он находит объявления-кандидаты, проверяет их допустимость с учетом бюджета, настроек пользователя и других предварительных условий, оценивает качество и релевантность, а затем проводит итоговое ранжирование, чтобы выбрать наиболее ценные варианты для размещения в конце ответа в чате. Таким образом, для допуска к размещению каждое объявление должно соответствовать высоким требованиям к допустимости и релевантности.
Сначала LLM-оркестратор готовит один или несколько запросов, отражающих соответствующее коммерческое намерение. Для этого оркестратор может переформулировать контекст диалога, расширяя круг коммерческих возможностей за пределы буквальных поисковых запросов, а затем создать семантические представления. Он сводит диалог из нескольких реплик к краткому резюме для поисковой системы, чтобы целенаправленно искать объявления в нашей базе данных.
Реклама будет полезнее и пользователям, и рекламодателям, если показывать ее только при глубоком понимании намерений пользователя. Несколько запросов позволяют сохранить разные аспекты этих намерений. Например, в разговоре о планировании поездки могут возникать отдельные потребности, связанные с транспортом, жильем или досугом. Поисковая система может сохранить эти различия, а не сводить весь разговор к одной буквальной строке запроса.
Рассмотрим в качестве примера последовательность сообщений в разговоре об обуви для походов:
Что стоит посмотреть за два дня в Йосемити?
На следующей неделе будет холодно?
Какие новые линейки товаров выпускает [название бренда]?
Хотя пользователь не связал вопрос об обувном бренде с поездкой в Йосемити, наша рекламная система может представить этот разговор двумя запросами, например [обувь для похода] и [новые линейки товаров бренда [бренд] для путешествий]. Это может быть лишь первой попыткой: оркестратор способен уточнять эти представления, пока не найдет среди доступных объявлений те, что особенно полезны пользователю.
На этапе поиска формируется заведомо широкий набор вариантов рекламы. Кандидаты могут быть найдены с помощью разных поисковых стратегий, а затем конкурировать в рамках общих ограничений показа. Мы создаем несколько индексов, оптимизированных под разные системные и продуктовые ограничения. Например, индекс объявлений из товарных фидов учитывает положительные и отрицательные отзывы о товарах при поиске лучших вариантов. Для других объявлений, у которых может не быть отзывов, это неактуально. Каждый индекс оптимизирован под определенный вариант приближенного поиска ближайших соседей (ANN) с использованием эмбеддингов, представляющих намерение пользователя. ANN — это приближенный алгоритм поиска по большим семантическим индексам. Он позволяет очень быстро находить объявления, приближаясь к хорошему решению, а не разыскивая «единственно верное», и при этом сохраняет большинство релевантных кандидатов.
В процессе поиска рекламная система преобразует переформулированные запросы в семантические эмбеддинги и формирует широкий набор объявлений-кандидатов.
Цель фильтрации — исключить из рассмотрения все объявления-кандидаты, не соответствующие требованиям к размещению по релевантности, ставкам и бюджету. В зависимости от кандидата и конфигурации фильтрация может включать проверку доступности креативов и кампаний (активны ли они), таргетинга кампании (например, в каких регионах и языковых средах она разрешена), ограничений рекламной политики (требований к тому, что можно рекламировать), наличия бюджета (остались ли у кампании средства), скорости расходования бюджета (нужно ли тратить бюджет сейчас или в другое время суток), совместимости с местом размещения (для каких разговоров подходит объявление) и устранение дублей на уровне рекламодателя и кампании (выбор подходящего числа объявлений от каждого рекламодателя для справедливого участия разных компаний).
Кандидаты, прошедшие проверку допустимости, переходят на этап оценки. Оркестратор вызывает инструменты различных оценочных систем, чтобы учесть факторы показа: семантическую релевантность (соответствует ли объявление цели пользователя?), прогноз вовлеченности (насколько вероятны просмотр, клик и нужное рекламодателю действие?) и прошлые результаты (насколько эффективным было объявление при предыдущих показах?). Перед аукционом оркестратор также фильтрует объявления по релевантности и безопасности. Эти системы сокращают набор кандидатов до небольшой группы, готовой к аукциону, но еще не определяют, какое объявление будет доставлено.
Оркестратор оценивает подготовленные объявления-кандидаты в контексте разговора и выбирает те, которые подходят для участия в финальном аукционе. Сам оркестратор не решает, какое объявление будет показано, и не устанавливает цену. Он передает соответствующие контексту объявления инструменту аукциона для оценки.
На аукционе применяются финальные механизмы показа: допуск к торгам (преодоление минимального порога релевантности и ценности), регулирование скорости расходования бюджета (более равномерное расходование рекламного бюджета), расчет ставок и аукционных признаков, ранжирование с учетом качества, определение цены и окончательный выбор.
После аукциона объявление может не дойти до показа по двум причинам, связанным с форматом общения в ChatGPT.
Объявление может оказаться неуместным в чате: даже если модели контроля безопасности, определяющие допустимость показа рекламы, сочли разговор подходящим для размещения, а само объявление соответствует правилам, в контексте некоторых разговоров оно все же может выглядеть неуместно. Оркестратор блокирует показ таких объявлений.
Рекламный запрос может не завершиться вовремя: если модель ChatGPT уже готова ответить, а объявление еще не готово к размещению, время ожидания рекламного запроса истекает и объявление не доставляется. Поэтому одна из целей рекламной системы — работать как можно быстрее. Время ответа модели ChatGPT меняется, и мы не задерживаем ответы в чате ради загрузки рекламы.
Если все перечисленные проверки пройдены, мы отправляем объявление в клиентское приложение для отображения. Мы считаем это доставкой объявления со стороны сервера, но пользователь все еще может не увидеть рекламу — и так задумано.
В диалоговом продукте вроде ChatGPT доставка рекламного креатива с сервера не гарантирует показ: объявление должно поступить вовремя, чтобы попасть в текущий обмен репликами. Рекламный креатив содержит заголовок, описание, целевую ссылку и, при наличии, призыв к действию. Кроме того, рекламная система возвращает созданную моделью преамбулу — короткое нейтральное вступление, объясняющее связь объявления с диалогом. Отделение преамбулы от креатива позволяет сохранить сообщение рекламодателя и одновременно нейтральный тон ChatGPT.
Клиентское приложение ChatGPT получает вступление и рекламный креатив одним пакетом. Если пакет поступает до завершения генерации ответа ChatGPT, приложение показывает объявление под ответом, явно помечая его как рекламу. Если пакет приходит слишком поздно, на этом ходу объявление не показывается. В этом разница между доставкой объявления с сервера и фактическим показом пользователю.
Выбор победителя и доставка — разные события. Выбранное объявление считается доставленным, только когда ChatGPT одобрит и отобразит его, а доставка будет подтверждена.
В нашей рекламной системе используются традиционные механизмы журналирования и конвейеры обработки данных. Это дает три основных преимущества: рекламодателям проще интегрировать свои системы с нашей, данные отчетов помогают им улучшать стратегии, а нашей команде — находить возможности для совершенствования системы. Помимо инструментов отчетности и оптимизации, мы используем высококачественную модель для оценки доставки объявлений и обучения других рекламных моделей, создавая эффективный цикл самоулучшения.
Подробный разбор событий помогает нам понимать и улучшать каждый компонент рекламной системы по отдельности. Система обработки журналов также фиксирует конкретные исходы, например:
Обмен репликами не подходил для показа рекламы.
Рекламная сессия началась, но поиск не был запрошен.
Поиск не нашел кандидатов.
Кандидаты были найдены, но не прошли этап загрузки полных данных или проверку допустимости.
Объявление было доставлено, и позднее пользователь взаимодействовал с ним.
Такая детализация помогает нам улучшать каждый компонент системы показа рекламы по отдельности. Чтобы лучше определять подходящие моменты для рекламы, нужны иные данные, чем для совершенствования поиска, качества кандидатов, участия в аукционах или надежности доставки.
Системы доставки, показа и контроля качества отслеживают разные этапы жизненного цикла. Обработка с учетом требований конфиденциальности определяет, какие данные можно использовать для измерений и улучшения моделей.
Идея оценки с помощью моделей заключается в том, что наши самые мощные модели с наиболее развитыми способностями к рассуждениям наблюдают за результатами системы и оценивают их, а затем дополнительно обучают LLM, уже прошедшую постобучение, чтобы улучшить ее работу. Например, для оркестрации или поиска можно использовать более компактные и эффективные модели либо модели с меньшими возможностями рассуждений, если самая мощная модель собирает обратную связь и обучает эти небольшие модели работать наилучшим образом.
Мы собираем и учитываем обратную связь от людей: клики и скрытия объявлений пользователями, ответы на опросы и прямые отзывы рекламодателей через «Менеджер рекламы». В процессе разработки наша команда также открыта для обратной связи и напрямую прислушивается к пожеланиям пользователей ChatGPT и рекламодателей. Эта обратная связь влияет на направление нашей работы даже сильнее, чем оценки модели, и во многом помогла нам быстро прийти к верным продуктовым решениям. Модель может понимать намерение пользователя и мыслить критически, чтобы предложить что-то полезное, но чувство меры и вкуса задают люди.
Год назад у нас не было рекламной системы, и лишь несколько человек обдумывали задачи в этой области. Теперь у нас есть надежная рекламная система с текущей выручкой свыше 1 млрд долларов США в пересчете на год и оркестратором на базе LLM, управляющим рекламным процессом. Codex многократно повысил нашу эффективность, позволив создать систему с нуля и добиться столь масштабного использования с беспрецедентной скоростью. С самого начала мы организовали команду и процессы разработки так, чтобы быстро создавать и масштабировать систему с помощью Codex. Мы создали защитные механизмы, позволяющие Codex надежно и безопасно выпускать код. Параллельно мы подключили к Codex плагины инфраструктуры данных, чтобы существенно сократить путь от получения аналитических выводов до внедрения улучшений: новых продуктовых функций, повышения качества и производительности системы.
Сочетание ограничений нашей системы, основанных на наших принципах рекламы, и оркестратора на базе LLM позволяет делать рекламу полезной, не превращая каждый разговор в рекламный запрос. В дальнейшем мы продолжим экспериментировать с более динамичными рекламными форматами (например, позволяющими пользователям общаться с компаниями напрямую через объявления), чтобы повышать ценность рекламы для пользователей и рекламодателей. Самоулучшающаяся архитектура системы, построенная на моделях OpenAI с непрерывными циклами обратной связи, позволит нам все быстрее совершенствовать релевантность и персонализацию.



