Перейти к содержанию

OpenAI

Рекламу в ChatGPT подбирает отдельная LLM с аукционом

7 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: OpenAI: модели и продукты →
Изображение: openai.com

Рекламой в ChatGPT управляет отдельная дообученная LLM, которая по ходу разговора сама вызывает инструменты рекламной системы. OpenAI описала этот стек 21 октября в инженерном посте OpenAI. Модель, которую в компании называют оркестратором, обращается к поиску кандидатов, фильтрам, оценке релевантности и аукциону, а работает всё это в сервисе, отделённом от генерации ответа.

Подробнее всего в посте разобраны три решения: рекламная сессия, которая помнит контекст между репликами и разговорами, оркестратор на вызовах инструментов и жёсткая граница между рекламой и ответом ChatGPT.

Почему не подошла классическая схема

Обычная рекламная система реагирует на отдельное событие. Пользователь ввёл поисковый запрос или открыл страницу, система получает запрос, достаёт кандидатов, ранжирует их, проводит аукцион и показывает победителя. В ChatGPT такого момента нет. Люди приходят с целью: спланировать поездку, выбрать софт для бизнеса, обставить квартиру, освоить хобби. И цель уточняется на протяжении нескольких реплик.

В OpenAI приводят пример из собственной команды. Разговор начинается с общего вопроса о беге и подготовке к забегу, а через несколько реплик доходит до кроссовок для тренировок. Коммерческий смысл беседы меняется с каждым новым условием, и система, которая среагировала бы на первое сообщение, могла бы ухватить совсем не то намерение.

Если превращать каждое сообщение в отдельный запрос, получается четыре риска, которые перечисляет OpenAI: цель пользователя упрощается до неверной, реклама запускается раньше, чем стала понятна реальная потребность, объявления мешают пользователю вместо того, чтобы помогать, а весь рекламный конвейер перезапускается при каждом изменении запроса, что создаёт шум и тратит деньги. Поэтому система держит сессию с состоянием: она длится, пока идёт подходящий для рекламы ход, и обновляет сведения по мере развития разговора. ChatGPT отправляет на рекламный сервер начальный контекст, а дальше рекламная система следует за диалогом сама.

Если пользователь включил персонализацию рекламы, оркестратор учитывает и доступные сведения из прошлых разговоров, не относящиеся к чувствительным темам. В августе OpenAI предупреждала пользователей, что на старте реклама не персонализирована и прошлые чаты и воспоминания для подбора не используются.

Отдельный сервис и пустой результат

Подбор рекламы идёт параллельно с обычной генерацией ответа. По словам OpenAI, это разные сервисы с разными моделями и разным кодом: основные серверы ChatGPT пишут ответ, а рекламная система независимо решает, есть ли уместная возможность для объявления, и если есть, готовит спонсорский блок через собственный процесс выдачи. Общей модели генерации контента у них нет.

У границы есть и инженерное следствие. ChatGPT никак не зависит от рекламного сервиса: если тот упал или тормозит, ответ выходит как обычно, и реклама не может ни положить продукт, ни задержать его. Время ответа модели плавает, и ждать рекламу ChatGPT не будет. Если ответ готов, а объявление ещё нет, запрос истекает по таймауту, и в этот ход объявления просто не будет. Отсюда одна из целей системы: работать как можно быстрее.

Пустой результат в OpenAI считают обычным успешным исходом. Объявление выдаётся, только если оно явно полезно и пользователю, и рекламодателю.

Что делает оркестратор

Самая трудная часть начинается с понимания намерения. Разговор поступает по частям, и оркестратору нужно отличать текущее намерение от устаревшего контекста, понимать отсылки к ранним сообщениям, замечать, когда пользователь рассуждает гипотетически, и не принимать каждое упоминание товара за желание его купить.

Сначала модель сжимает многоходовый разговор в короткие текстовые сводки и готовит из них один или несколько поисковых запросов. Несколько запросов нужны, чтобы не потерять разные стороны намерения: в разговоре о поездке могут жить отдельные потребности в транспорте, жилье и развлечениях. В посте разобрана такая цепочка: «Что посмотреть за два дня в Йосемити?», «Будет ли холодно на следующей неделе?», «Новые линейки [бренд]?». Пользователь сам не связал вопрос о бренде обуви с поездкой, но система может представить разговор двумя запросами вроде [обувь для похода] и [новые линейки [бренд] для путешествий]. И это может быть только первая попытка: оркестратор переписывает запросы, пока не найдёт в инвентаре то, что действительно ценно пользователю.

Запросы превращаются в эмбеддинги, числовые представления смысла, по которым удобно искать похожее. Индексов несколько, каждый настроен под свои ограничения. Например, индекс объявлений из товарных фидов учитывает положительные и отрицательные отзывы о товаре, а для рекламы без отзывов это не нужно. Поиск по всем индексам приближённый (ANN, approximate nearest neighbor): он быстро находит кандидатов, близких к лучшим, вместо точного перебора, и сохраняет большую часть релевантных. Пул на этом шаге намеренно широкий.

Дальше идёт фильтрация. Проверяется, активны ли кампания и креативы, разрешены ли регион и тематика по правилам, остался ли бюджет и стоит ли тратить его именно сейчас или в другое время дня, подходит ли объявление к такому типу разговора. Число объявлений одного рекламодателя тоже ограничивается, чтобы разные компании участвовали на равных.

Выжившие кандидаты получают оценки от нескольких систем, которые оркестратор вызывает как инструменты: смысловая релевантность цели пользователя, прогноз вовлечённости (увидят ли объявление, кликнут ли, дойдёт ли до нужного рекламодателю действия) и история показов. Затем оркестратор выбирает, кто из кандидатов достаточно уместен для финального аукциона.

Победителя и цену модель не назначает. Она только выдвигает кандидатов, а аукцион применяет свою механику: порог допуска по релевантности и ценности, равномерное расходование бюджета, расчёт ставок, ранжирование с поправкой на качество, ценообразование и финальный выбор.

Пока разговор идёт, оркестратор может запустить новый набор вызовов с обновлённым контекстом и отправить клиенту объявления получше. Клиент возьмёт их, если они успеют.

От аукциона до показа

После аукциона объявление может отсеяться ещё двумя способами, и оба связаны с форматом чата. Первый: разговор признан безопасным для рекламы моделями целостности (они решают, когда показывать рекламу вообще уместно), объявление соответствует правилам, но в контексте конкретной беседы всё равно выглядит неуместно, и тогда оркестратор его блокирует. Второй - уже описанный таймаут.

Вместе с креативом (заголовок, описание, ссылка, призыв к действию) рекламная система возвращает преамбулу: короткое нейтральное вступление, которое генерирует модель и которое объясняет, как объявление связано с разговором. Преамбулу держат отдельно от креатива, чтобы сообщение рекламодателя не искажалось, а голос ChatGPT оставался нейтральным. Фронтенд получает их одним пакетом и, если пакет пришёл до конца генерации ответа, показывает объявление под ответом с пометкой о спонсорстве. С такой пометкой реклама выходит с 9 февраля, когда её включили для взрослых пользователей бесплатных тарифов в США. Платные тарифы рекламы не показывают, темы здоровья, психического здоровья и политики при запуске исключили.

Выбор победителя и доставка в OpenAI считаются разными событиями. Серверная доставка ещё не означает показ: доставкой объявление становится, только когда ChatGPT одобрил и отобразил блок, а доставка подтверждена. Логи при этом фиксируют, на каком шаге оборвался путь:

  • ход не подходил для рекламы;
  • рекламная сессия началась, но поиск не запрашивался;
  • поиск не вернул кандидатов;
  • кандидаты нашлись, но не прошли загрузку данных или проверку допуска;
  • объявление доставлено и потом получило взаимодействие.

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

Кто учит оркестратор

Год назад, по словам OpenAI, рекламной системы у компании не было, а задачей занимались несколько человек. Годовой темп выручки в 1 миллиард долларов реклама в ChatGPT набрала меньше чем за 200 дней после запуска, рекламодателей с тех пор было больше 100 000. Основным ускорителем в компании называют Codex: команда с самого начала строила процессы разработки вокруг него, сделала для него ограничения, чтобы код выкатывался надёжно и безопасно, и подключила плагины к инфраструктуре данных, чтобы быстрее проходить путь от наблюдения до улучшения в системе.

Оценивают работу стека сами модели. Самые сильные модели OpenAI с глубоким рассуждением смотрят на результаты, судят их и дообучают оркестратор. Благодаря этому для оркестрации и поиска можно брать модели поменьше и попроще: сильная модель собирает обратную связь и учит их работать как можно лучше.

Следующим шагом OpenAI называет более динамичные форматы, например возможность разговаривать с компанией прямо через объявление.

Человеческие сигналы, по словам команды, влияют на направление сильнее, чем оценки моделей: клики и скрытия объявлений, опросы пользователей и отзывы рекламодателей через Ads Manager, открытый для всех бизнесов в США 5 мая. «Модель может понимать намерения пользователя и критически думать, чтобы предложить что-то ценное, но вкус формируют люди», - пишут в OpenAI.

OpenAI

OpenAI выводит GPT-6 Astra и Codex в Google Cloud

Локальный Codex CLI можно подключить к платформе Gemini и гонять модели OpenAI, включая GPT-6 Astra, на инфраструктуре Google Cloud. Но пока только в закрытом превью для отдельных корпоративных клиентов. Вам приходилось менять облако ради доступа к нужной модели?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.