Як ми створили новий рекламний стек ChatGPT для довіри користувачів і релевантності
Автори: Рітендра Датта й Картік Гопалратнам, фахівці технічної команди
Традиційні рекламні системи створені для реагування на окремі прояви наміру користувача. Користувач щось шукає або переглядає в інтернеті, рекламна система отримує ці запити й перегляди сторінок як події та на їхній основі підбирає відповідні оголошення. Створення рекламного стека для ChatGPT вимагало іншого підходу: намір користувача розвивається в розмовах і змінюється протягом кількох обмінів репліками, іноді так і не створюючи доречного моменту для реклами. Для підтримки цієї нової парадигми ми створили спеціалізовану систему доставлення реклами. Цей новий тип рекламного стека ґрунтується на спеціально адаптованій післянавченій передовій LLM, яка викликає інструменти для пошуку (визначення найкращих варіантів), ранжування (прогнозування взаємодії користувачів), оцінювання релевантності (корисності оголошення) та проведення аукціонів для остаточного вибору оголошення й визначення ціни.
Наша рекламна система враховує нюанси мінливих цілей користувача завдяки трьом ключовим проєктним рішенням: 1) рекламним сеансам зі збереженням стану, тобто запам’ятовуванням інформації між обмінами репліками та між різними розмовами; 2) спеціально адаптованій післянавченій LLM, яка через архітектуру викликів інструментів інтерпретує контекст розмови та прихований за ним намір, а потім ефективно відбирає, ранжує й доставляє оголошення; 3) відбору реклами в окремому сервісі, незалежно від генерації відповідей ChatGPT, щоб реклама не впливала на відповіді, а тон ChatGPT залишався нейтральним. Ми використовуємо нашу післянавчену LLM для координації всього рекламного процесу: вона визначає, яке оголошення і коли доречно показати, з огляду як на поточну репліку користувача, так і на історію розмови. Раніше створення такої рекламної системи із самовдосконаленням з нуля займало роки, а ChatGPT Ads досягла темпу доходу в 1 млрд доларів у річному перерахунку менш ніж за 200 днів після запуску. Від запуску й донині рекламу в ChatGPT розмістили вже понад 100 000 рекламодавців.
Звичайний рекламний запит зазвичай починається з чітко визначеної події. Користувач надсилає пошуковий запит або відкриває вебсторінку, і рекламна система отримує запит. Така система доволі проста: вона знаходить потенційні оголошення-кандидати, ранжує їх, проводить аукціон, щоб визначити належну ціну розміщення, і показує вибране оголошення користувачу. У ChatGPT такий чітко визначений момент не виникає природним чином.
Люди приходять у розмову з ChatGPT з цілями, а не з пошуковим запитом, на який потрібна одна відповідь. Вони можуть планувати подорож, вибирати програмне забезпечення для бізнесу, облаштовувати житло чи опановувати нове хобі. Усе це не вкладається в один обмін репліками. Часто ChatGPT допомагає користувачу в процесі з’ясувати, що для нього важливо.
Наприклад, наша інженерна команда запитала ChatGPT, як підготуватися до забігу. Розмова почалася із загального питання про біг. Через кілька обмінів репліками команда запитала про взуття для тренувань. З кожною новою умовою комерційний зміст розмови змінюється, а цей персоналізований контекст розвивається протягом кількох сеансів. Система, що діяла б лише на основі першого повідомлення, могла б цілком хибно визначити намір, погіршивши користувацький досвід і заважаючи користувачу.
Щоб створити нашу рекламну систему, нам довелося вийти за межі рекламної архітектури «запит — відповідь» і побудувати стек з нуля. Він мав знаходити потенційні комерційні можливості, ставлячи на перше місце довіру й цінність для користувача.
Якби ми перетворювали кожне повідомлення на окремий запит, як у традиційній рекламній системі, це створило б кілька ризиків для нашого чату: 1) хибне розуміння мети користувача через надмірне спрощення; 2) передчасний запуск рекламного процесу, ще до з’ясування справжньої потреби користувача; 3) показ реклами, що заважає користувачу рухатися до мети, а не допомагає; 4) неефективний повторний запуск рекламного процесу щоразу, коли запит змінюється, що створює шум і зайві витрати. Замість того щоб будувати роботу навколо окремих подій, рекламна система (що охоплює пошук, ранжування й доставлення) підтримує сеанс зі збереженням стану. Це означає, що рекламний сеанс триває протягом обміну репліками, у якому дозволена реклама, запам’ятовуючи й оновлюючи інформацію в міру її зміни. ChatGPT надсилає початковий контекст запиту на рекламний сервер. Рекламна система відстежує розвиток діалогу й адаптується до нього, а не спирається на один спрощений запит.
Відбір реклами відбувається паралельно зі звичайною генерацією відповідей ChatGPT, щоб рекламний процес не впливав на них. Оголошення фільтрує й відбирає окрема система, яка опрацьовує розмову за власними обмеженнями щодо допустимості, якості та доставлення. Це важливе архітектурне розмежування — різні сервіси з окремими моделями й кодом — дає змогу основним серверам ChatGPT генерувати звичайну відповідь. Водночас рекламна система незалежно оцінює, чи є доречна можливість для реклами, і, якщо є, готує спонсороване розміщення через окремий процес показу.
Рекламний процес відбувається паралельно з формуванням відповіді ChatGPT.
Окрім захисту користувацького досвіду, таке розділення має й практичні наслідки. ChatGPT не залежить від рекламної системи: ці сервіси ніяк не переплетені й не використовують спільну модель генерації вмісту. Тож якщо система показу реклами недоступна або працює повільно, це не впливає на формування звичайної відповіді ChatGPT. Це означає, що рекламна система не може вивести ChatGPT з ладу чи сповільнити його роботу. Інша перевага такого розділення — дуже високі вимоги до корисності реклами. Відсутність реклами — це звичайний, успішний результат. Система доставляє оголошення, лише якщо воно явно корисне для користувачів і рекламодавців.
Інший ключовий архітектурний компонент нашого рекламного стека — післянавчена LLM, яка інтерпретує розмови та керує всім рекламним процесом в агентному циклі. Вона викликає інструменти для основних функцій рекламної системи: від пошуку й ранжування до аукціону та, зрештою, доставлення. Ми називаємо цю LLM оркестратором.
Рекламний процес починається з розуміння наміру користувача, щоб запустити пошук — швидке й навмисно широке збирання потенційних оголошень для подальшого відбору. Поступове надходження розмови збагачує дані для пошуку, але й додає неоднозначності, адже рекламна система має відрізняти поточний намір від застарілого контексту. Оркестратор має інтерпретувати відсилання до попередніх повідомлень, розпізнавати, коли користувач говорить гіпотетично, і не сприймати кожну згадку товару чи послуги як запит на купівлю.
Рекламний оркестратор використовує доступну розмову та контекст користувача, шукаючи вдалі оголошення ітеративно. Він щоразу вирішує, який інструмент і коли викликати, щоб знайти найдоречніше для цієї розмови й контексту оголошення — те, що поєднує високу цінність для користувача та рекламодавця. Якщо користувач вибирає персоналізацію реклами, оркестратор також враховує доступну нечутливу інформацію про його попередні розмови, щоб підібрати найвідповідніші оголошення.
Рекламний оркестратор ітеративно викликає інструменти доставлення реклами, щоб знайти цінні оголошення.
У міру розвитку розмови рекламний оркестратор отримує нові дані й може виконати нову серію викликів інструментів з оновленим контекстом, щоб знайти кращі оголошення та передати їх клієнту. Клієнт може використати ці нові оголошення, якщо вони надійдуть вчасно.
Оркестратор покликаний збалансувати цінність для користувачів і рекламодавців, завжди ставлячи користувачів на перше місце.
Рекламна система складається з окремих інструментів, які оркестратор викликає ітеративно, щоб знайти найкращі оголошення для розмови. У загальних рисах оркестратор перетворює розмови на короткі текстові підсумки, а ті — на семантичні векторні представлення (закодовані значення, які рекламній системі легше опрацьовувати). За цими представленнями він знаходить оголошення-кандидати, відсіює недопустимі варіанти (з огляду на бюджет, налаштування користувача та інші попередні перевірки), оцінює їхню якість і релевантність та виконує остаточне ранжування, щоб визначити найцінніші можливості для розміщення наприкінці відповіді в чаті. Отже, для допуску до розміщення кожне оголошення має відповідати суворим вимогам щодо допустимості й релевантності.
Спершу LLM-оркестратор готує один або кілька запитів, що відображають відповідний комерційний намір. Це може передбачати переформулювання контексту розмови, щоб розширити комерційні можливості за межі буквальних пошукових запитів, а потім — створення семантичних представлень. Для цього оркестратор стисло підсумовує розмову з кількох обмінів репліками для пошукової системи, що дає змогу цілеспрямовано знаходити оголошення в нашій базі даних.
Рекламні розміщення будуть кращими і для користувачів, і для рекламодавців, якщо з’являтимуться лише за умови глибокого розуміння наміру користувача. Кілька запитів дають змогу зберегти різні аспекти наміру. Наприклад, розмова про планування подорожі може містити окремі потреби щодо транспорту, проживання або дозвілля. Пошукова система може зберегти ці відмінності, а не стискати всю розмову до одного буквального рядка.
Для прикладу розгляньмо можливу послідовність реплік у розмові про взуття для походів:
What should I cover on a two-day trip to Yosemite?
Will it be cold next week?
New [insert brand] product lines?
Хоча користувач не пов’язав питання про бренд взуття з поїздкою до Йосеміті, у нашій рекламній системі ця розмова може бути представлена двома запитами, наприклад [shoes appropriate for hiking trip] і [new [brand] product lines good for travel]. Це може бути лише перша спроба: оркестратор спроєктовано так, щоб ітеративно уточнювати ці представлення, доки він не знайде в нашому рекламному інвентарі оголошення, справді цінні для користувача.
Пошук — це процес формування навмисно широкого набору варіантів оголошень. Кандидатів можна знаходити за різними пошуковими стратегіями, а згодом вони можуть конкурувати за однакових обмежень щодо показу. Ми створюємо кілька індексів, оптимізованих під різні системні й продуктові обмеження. Наприклад, індекс оголошень із товарного фіду враховує позитивні та негативні відгуки про товари під час пошуку найкращих оголошень. Для інших оголошень, з якими відгуки можуть бути не пов’язані, це не актуально. Кожен індекс оптимізовано для певного різновиду наближеного пошуку найближчих сусідів (ANN) з використанням векторних представлень наміру користувача. Пошук ANN — це наближений алгоритм пошуку у великих семантичних індексах. Він дає змогу дуже швидко знаходити оголошення, наближаючись до доброго рішення, а не шукаючи «єдине правильне», і водночас зберігати більшість релевантних кандидатів.
Під час пошуку оголошень рекламна система використовує переформульовані запити, щоб створити семантичні векторні представлення та сформувати широкий набір оголошень-кандидатів.
Мета фільтрування — виключити з розгляду всі оголошення-кандидати, що не відповідають вимогам до розміщення за релевантністю, ставками й бюджетом. Залежно від кандидата й конфігурації фільтрування може охоплювати перевірку доступності креативів і кампаній (чи активні кампанія або рекламні креативи), таргетингу кампанії (наприклад, у яких локалях її дозволено проводити), обмежень політик (вимог щодо того, що можна рекламувати), наявності бюджету (чи залишилися в кампанії кошти), темпу витрат (чи слід витрачати бюджет зараз або в інший час доби), сумісності розміщення (у яких типах розмов це оголошення допустиме), а також дедуплікацію на рівні рекламодавців і кампаній (вибір належної кількості оголошень від кожного рекламодавця для справедливої участі різних компаній).
Кандидати, що пройшли перевірки допустимості, переходять до етапу оцінювання. Тут оркестратор викликає інструменти різних систем оцінювання, які враховують такі чинники показу, як семантична релевантність (чи відповідає оголошення меті користувача?), прогнозована взаємодія (наскільки ймовірно, що оголошення переглянуть, натиснуть і виконають бажану для рекламодавця дію?) та попередня ефективність (чи давало оголошення добрі результати під час попередніх показів користувачам?). Перед аукціоном оркестратор також фільтрує оголошення, щоб забезпечити їхню релевантність і безпечність. Ці системи звужують вибір до меншого набору кандидатів, готових до аукціону, але ще не визначають, яке саме оголошення буде доставлено.
Оркестратор оцінює підготовлених кандидатів у контексті розмови та визначає, які з них достатньо доречні для участі у фінальному аукціоні. Оркестратор не вирішує безпосередньо, яке оголошення буде показано, і не встановлює ціну. Він висуває кандидатів, що відповідають контексту, для оцінювання інструментом аукціону.
Аукціон застосовує остаточні механізми показу: допуск до аукціону (проходження мінімального порога релевантності й цінності), регулювання темпу витрат (рівномірніше витрачання рекламного бюджету), розрахунок ставок і характеристик аукціону, ранжування з урахуванням якості, ціноутворення та остаточний вибір.
Після аукціону оголошення може не бути доставлене з двох причин, обидві з яких зумовлені розмовним форматом ChatGPT.
Оголошення може сприйматися як недоречне в чаті: хоча моделі контролю доброчесності (моделі, що визначають, коли доречно показувати рекламу) визнали розмову безпечною для розміщення реклами, а саме оголошення — таким, що відповідає політикам, у контексті певних розмов воно все ж може здаватися недоречним. Оркестратор блокує показ таких оголошень.
Рекламний запит може не встигнути вчасно: якщо модель ChatGPT уже готова відповісти, а оголошення ще не готове до розміщення, час очікування рекламного запиту спливає й оголошення не доставляється. Тому одна з цілей рекламної системи — працювати якомога швидше. Час відповіді моделі ChatGPT змінюється, і ми не затримуємо відповіді в чаті, очікуючи завантаження реклами.
Якщо всі перелічені перевірки пройдено, ми надсилаємо оголошення до клієнтської частини для відображення. Ми вважаємо це доставленням оголошення на боці сервера, але воно все ще може не бути показане користувачу — і так задумано.
У розмовному продукті на кшталт ChatGPT доставлення рекламного креативу на боці сервера не гарантує його показу: оголошення також має надійти вчасно, щоб потрапити до поточного обміну репліками. Рекламний креатив містить заголовок, опис, цільове посилання та заклик до дії, якщо він є. Крім того, рекламна система повертає згенеровану моделлю преамбулу — короткий нейтральний вступ, який пояснює, як оголошення пов’язане з розмовою. Відокремлення преамбули від креативу зберігає повідомлення рекламодавця й водночас нейтральний тон ChatGPT.
Клієнтська частина ChatGPT отримує преамбулу й рекламний креатив єдиним пакетом. Якщо пакет надходить до завершення генерації відповіді ChatGPT, клієнтська частина показує оголошення під відповіддю з чіткою позначкою спонсорованого вмісту. Якщо він надходить запізно, оголошення не показується в цьому обміні репліками. У цьому й полягає різниця між доставленням реклами на боці сервера та її показом користувачу.
Вибір переможця й доставлення — окремі події. Вибране оголошення вважається доставленим лише після того, як ChatGPT схвалить і покаже його, а доставлення буде підтверджено.
Наш рекламний стек використовує традиційні механізми журналювання та конвеєри даних. Це дає три основні переваги: рекламодавцям легше інтегрувати свої наявні системи з нашим стеком, вони можуть удосконалювати стратегії на основі звітних даних, а наша команда — знаходити, що варто поліпшити в системі. Крім цих інструментів звітності й оптимізації, ми застосовуємо високоякісну модель для оцінювання доставлення та навчання інших рекламних моделей, створюючи потужний цикл самовдосконалення.
Детальний розбір того, що відбулося, допомагає нам розуміти й удосконалювати кожну частину рекламної системи окремо. Система обробки журналів також фіксує докладні результати, зокрема:
Реклама була недопустима в цьому обміні репліками.
Рекламний сеанс розпочався, але запиту на пошук не було.
Пошук не знайшов кандидатів.
Кандидатів знайдено, але не вдалося завантажити їхні повні дані або вони не пройшли перевірку допустимості.
Оголошення було доставлено, і згодом користувач із ним взаємодіяв.
Такі докладні розбори допомагають нам удосконалювати кожну частину системи показу реклами окремо. Для вдосконалення виявлення рекламних можливостей потрібні інші дані, ніж для поліпшення пошуку, якості кандидатів, участі в аукціонах або надійності доставлення.
Системи доставлення, показу й контролю якості відстежують різні частини життєвого циклу. Обробка з дотриманням вимог конфіденційності визначає, які дані можна використовувати для вимірювання та вдосконалення моделей.
Ідея оцінювання за допомогою моделей полягає в тому, що наші найпотужніші моделі з найкращими здібностями до міркування спостерігають за результатами системи й оцінюють їх, а потім удосконалюють післянавчену LLM, навчаючи її працювати краще. Наприклад, для оркестрації чи пошуку ми можемо використовувати менші, ефективніші моделі або моделі з нижчим рівнем міркування, якщо наша найпотужніша модель збирає зворотний зв’язок і навчає цих малих виконавців працювати якнайкраще.
Ми збираємо й враховуємо зворотний зв’язок від людей: натискання та приховування оголошень користувачами, відповіді на опитування користувачів, а також прямі відгуки рекламодавців через Ads Manager. Під час розробки наша команда також відкрита до відгуків і безпосередньо дослухається до побажань як користувачів ChatGPT, так і рекламодавців. Це джерело зворотного зв’язку визначає наш напрям навіть більше, ніж спостереження моделі, і саме воно, зокрема, допомогло нам швидко знаходити правильні продуктові рішення через послідовні ітерації. Модель може розуміти намір користувача й критично мислити, щоб запропонувати щось цінне, але відчуття доречності формують люди.
Рік тому в нас не було рекламної системи, і лише кілька людей обмірковували це коло завдань. Тепер у нас є надійна рекламна система, що забезпечує понад 1 млрд доларів доходу в річному перерахунку, а рекламним процесом керує оркестратор на основі LLM. Codex суттєво примножив наші можливості: завдяки йому ми змогли з нуля розгорнути систему й досягти цього важливого масштабу використання з безпрецедентною швидкістю. Від самого початку ми організували команду й процеси розробки так, щоб використовувати Codex для швидкого створення та масштабування системи. Ми створили для Codex запобіжні механізми, які забезпечують надійний і безпечний випуск коду. Паралельно ми налаштували для Codex плагіни інфраструктури даних, щоб значно скоротити цикл від отримання аналітичних висновків до впровадження змін у систему: нових функцій продукту, підвищення якості й продуктивності.
Поєднання обмежень нашої системи (що ґрунтуються на наших рекламних принципах) та оркестратора на основі LLM дає змогу робити рекламу корисною, не сприймаючи кожну розмову як рекламний запит. Надалі ми продовжимо експериментувати з динамічнішими форматами реклами, щоб підвищувати її цінність для користувачів (наприклад, даючи їм змогу спілкуватися з компаніями безпосередньо через оголошення) та рекламодавців. Архітектура стека, здатна до самовдосконалення й побудована на моделях OpenAI з безперервними циклами зворотного зв’язку, дасть нам змогу дедалі швидше поліпшувати релевантність і персоналізацію.



