Како смо изградили нови ChatGPT систем оглашавања за поверење корисника и релевантност
Аутори: Ритендра Дата и Картик Гопалратнам, чланови техничког тима
Традиционални системи за оглашавање направљени су да реагују на појединачне сигнале намере корисника. Корисник нешто тражи или прегледа на интернету, систем за оглашавање прима те упите и прегледе страница као догађаје, а затим на основу њих тражи одговарајуће огласе. Изградња технолошког система за оглашавање у ChatGPT‑у била је другачија: намера корисника развија се кроз разговоре и мења током више размена порука, а понекад нема погодног тренутка за оглашавање. Да бисмо подржали овај нови приступ, изградили смо наменски систем за испоруку огласа. Ова нова врста технолошког система за оглашавање заснива се на прилагођеном, накнадно обученом граничном великом језичком моделу (LLM). Он позива алате за проналажење огласа (издвајање најбољих опција), рангирање (предвиђање ангажовања корисника), релевантност (процену корисности огласа) и спровођење аукција ради коначног избора огласа и одређивања цене.
Наш систем за оглашавање прати нијансе променљивих циљева корисника захваљујући трима кључним пројектним одлукама: 1) увођењу сесија оглашавања које чувају стање, што значи да се информације памте кроз размене порука и више разговора, 2) ослањању на прилагођен, накнадно обучен велики језички модел (LLM), који помоћу архитектуре позива алатима тумачи контекст разговора и намеру у његовој основи, а затим ефикасно бира, рангира и испоручује огласе, и 3) извршавању избора огласа одвојено од генерисања ChatGPT одговора, у засебном сервису, како огласи не би утицали на одговоре и како би тон ChatGPT‑а остао неутралан. Наш накнадно обучен велики језички модел (LLM) управља целокупним током оглашавања и одређује који оглас треба приказати у ком тренутку, на основу текуће размене порука и историје разговора корисника. Иако је изградња оваквог система за оглашавање који се самостално унапређује некада трајала годинама, ChatGPT огласи су достигли темпо остваривања прихода од милијарду долара на годишњем нивоу за мање од 200 дана од покретања. Од покретања до данас, више од 100.000 оглашивача приказивало је огласе у ChatGPT‑у.
Уобичајени захтев за оглас најчешће почиње јасно дефинисаним догађајем. Корисник пошаље упит за претрагу или отвори веб-страницу, а систем за оглашавање прими захтев. Ова врста система је прилично једноставна: проналази потенцијалне кандидате за огласе, рангира их, спроводи аукцију како би одредио одговарајућу цену прилике за приказивање и приказује изабрани оглас кориснику. У ChatGPT‑у такав јасно одређен тренутак не настаје сам по себи.
Људи у разговор са ChatGPT‑ом улазе са циљевима, а не са упитом за претрагу на који очекују један одговор. Можда планирају путовање, бирају софтвер за своје предузеће, опремају дом или се упуштају у нови хоби. Све то се не дешава у једној размени порука. ChatGPT често успут помаже кориснику да разјасни шта му је важно.
На пример, наш инжењерски тим питао је ChatGPT како да тренира за трку: разговор почиње општим питањем о трчању. Неколико размена порука касније питају о патикама које би им помогле при тренингу. Комерцијални смисао разговора мења се са сваким новим условом, а овај персонализовани контекст развија се кроз више сесија. Систем који би реаговао већ на прву поруку могао би потпуно погрешно да протумачи намеру, чиме би потенцијално нарушио искуство корисника и ометао га.
Изградња нашег система за оглашавање захтевала је да превазиђемо архитектуру засновану на захтеву и одговору и да систем изградимо од нуле. Циљ је био да препознајемо потенцијалне економске прилике, а да поверење корисника и корист за њих остану приоритет.
Претварање сваке поруке у самосталан захтев, као у традиционалном систему за оглашавање, носило би неколико ризика у нашем разговорном окружењу: 1) погрешно тумачење циља корисника због претераног поједностављивања, 2) прерано покретање тока оглашавања, пре него што стварна потреба корисника постане јасна, 3) приказивање огласа који кориснику отежавају пут до циља уместо да му помажу и 4) неефикасно поновно покретање тока оглашавања при свакој промени захтева, што ствара сувишну обраду и непотребне трошкове. Уместо да се заснива на појединачним догађајима, систем за оглашавање, који обухвата проналажење, рангирање и испоруку огласа, одржава сесију са очуваним стањем. То значи да сесија оглашавања траје током размене порука која испуњава услове, памтећи и ажурирајући информације како се оне мењају. ChatGPT шаље почетни контекст захтева серверу за огласе. Систем за оглашавање прати развој разговора и прилагођава му се, уместо да се ослања на један поједностављен упит.
Избор огласа одвија се паралелно са уобичајеним генерисањем ChatGPT одговора, како ток оглашавања не би утицао на те одговоре. Огласи се филтрирају и бирају у засебном систему који обрађује разговор према сопственим условима прихватљивости, квалитета и испоруке. Ова важна граница у архитектури – различити сервиси који користе одвојене моделе и одвојен код – омогућава главним ChatGPT серверима да генеришу органски одговор. Истовремено, систем за оглашавање независно процењује да ли постоји прикладна прилика за оглашавање и, ако постоји, припрема спонзорисани садржај кроз засебан процес приказивања.
Оглашавање се одвија паралелно са генерисањем ChatGPT одговора.
Поред заштите корисничког искуства, ово раздвајање има и неке практичне последице. ChatGPT не зависи од система за оглашавање – ови сервиси ни на који начин нису испреплетени и не деле модел за генерисање садржаја. Зато, ако систем за приказивање огласа није доступан или ради споро, то не утиче на генерисање органског ChatGPT одговора. То значи да систем за оглашавање не може да обори или успори ChatGPT. Друга предност овог раздвајања јесте то што одржава веома висок праг корисности огласа. И када систем не врати ниједан оглас, то је уобичајен и успешан исход. Систем испоручује оглас само ако он доноси јасну корист и корисницима и оглашивачима.
Друга кључна компонента архитектуре нашег технолошког система за оглашавање јесте накнадно обучен велики језички модел (LLM), који тумачи разговоре и управља целокупним током оглашавања у агентској петљи. Он позива алате за основне функције система за оглашавање, од проналажења огласа, преко рангирања и аукције, до коначне испоруке. Овај велики језички модел (LLM) зовемо оркестратор.
Ток оглашавања почиње разумевањем намере корисника, чиме се покреће процес проналажења огласа – брзо и намерно широко прикупљање потенцијалних огласа који ће се касније филтрирати. Постепено примање разговора даје више информација за проналажење огласа, али и отежава тумачење, јер систем за оглашавање мора да разликује тренутну намеру од застарелог контекста. Оркестратор мора да протумачи упућивања на раније поруке, препозна када корисник говори хипотетички и избегне да свако помињање производа или услуге схвати као захтев за куповину.
Оркестратор огласа користи доступан разговор и контекст корисника, у више итерација тражи добре огласе и изнова одлучује када ће позвати који алат. Основни циљ је да за тај разговор и контекст пронађе најприкладнији оглас – онај који доноси велику корист и кориснику и оглашивачу. Ако корисник изабере персонализоване огласе, оркестратор узима у обзир и доступне неосетљиве информације о његовим ранијим разговорима како би пронашао огласе који му најбоље одговарају.
Оркестратор огласа у више итерација позива алате за испоруку огласа како би пронашао корисне огласе.
Како разговор напредује и оркестратор огласа добија свеже информације, може да покрене нови скуп позива алатима са ажурираним контекстом како би пронашао боље огласе и вратио их клијенту. Клијент затим може да употреби те нове огласе ако стигну на време.
Оркестратор је осмишљен тако да уравнотежи корист за кориснике и оглашиваче, при чему су корисници увек на првом месту.
Систем за оглашавање састоји се од појединачних алата, а оркестратор их позива у више итерација како би пронашао најбоље огласе за дати разговор. Укратко, оркестратор претвара разговоре у кратке текстуалне сажетке, који се затим претварају у семантичке векторске репрезентације — сачувана значења која систем за оглашавање лакше претражује. Помоћу њих проналази кандидате за огласе, филтрира их према условима за приказивање (на основу буџета, корисничких подешавања и других прелиминарних провера), процењује њихов квалитет и релевантност и коначно их рангира како би издвојио најкорисније прилике за приказивање на крају одговора у разговору. Зато сваки оглас мора да испуни високе критеријуме прихватљивости и релевантности да би могао да се прикаже.
Велики језички модел (LLM) у улози оркестратора најпре припрема један или више упита који представљају релевантну комерцијалну намеру. То може да обухвати преформулисање контекста разговора како би се комерцијалне могућности прошириле изван директних упита за претрагу, а затим и стварање семантичких репрезентација. При томе оркестратор своди разговор са више размена порука на сажету верзију за систем за проналажење огласа, што омогућава циљано проналажење огласа у нашој бази података.
Приказани огласи биће бољи и за кориснике и за оглашиваче ако се појављују само када систем темељно разуме намеру корисника. Више упита може да сачува различите аспекте намере. Разговор о планирању путовања, на пример, може да обухвати засебне потребе у вези са превозом, смештајем или активностима. Систем за проналажење огласа може да очува те разлике, уместо да цео разговор сведе на један дослован текстуални низ.
Као пример, погледајмо могући низ порука у разговору о обући за планинарење:
Шта би требало да обиђем током дводневног путовања у Јосемити?
Да ли ће бити хладно следеће недеље?
Нове [insert brand] производне линије?
Иако корисник није повезао питање о бренду обуће са путовањем у Јосемити, овај разговор би у нашем систему за оглашавање могао да буде представљен кроз два упита, као што су [обућа прикладна за путовање са пешачењем по природи] и [нове [бренд] производне линије погодне за путовање]. То може бити само први покушај; оркестратор је осмишљен тако да у више итерација дорађује ове репрезентације док у нашој понуди не пронађе огласе који су веома корисни кориснику.
Проналажење огласа је процес формирања намерно широког скупа могућих огласа. Кандидати могу да потичу из различитих стратегија проналажења, а касније да се надмећу под истим ограничењима приказивања. Градимо више индекса оптимизованих за различита ограничења система и производа. На пример, индекс за огласе из фида производа осмишљен је тако да при проналажењу најбољих могућих огласа узима у обзир позитивне или негативне рецензије производа. То није релевантно за друге огласе са којима рецензије можда нису повезане. Сваки индекс је оптимизован за неку варијанту приближне претраге најближих суседа (ANN), уз коришћење векторских репрезентација намере корисника. Ова ANN претрага је приближни алгоритам за проналажење огласа у великим семантичким индексима. То значи да се огласи проналазе веома брзо: алгоритам се приближава добром решењу уместо да тражи „право” решење, а притом задржава већину релевантних кандидата.
Систем за оглашавање током проналажења огласа користи преформулисане упите да створи семантичке векторске репрезентације и формира широк скуп кандидата за огласе.
Циљ филтрирања је да се из разматрања искључе сви кандидати за огласе који не испуњавају критеријуме за приказивање у погледу релевантности, понуда и буџета. У зависности од кандидата и конфигурације, провере при филтрирању могу да обухвате доступност огласног материјала и кампање (да ли су кампања или огласни материјали активни), циљање кампање (нпр. у којим локалитетима кампања сме да се спроводи), ограничења из правила (захтеве који одређују шта сме да се оглашава), расположивост буџета (да ли кампања још има средстава за трошење), темпо потрошње (да ли кампања треба да троши буџет сада или у неко друго доба дана), прикладност места приказивања (за које врсте разговора је овај оглас дозвољен) и уклањање дупликата на нивоу оглашивача и кампање (избор одговарајућег броја огласа по оглашивачу како би се предузећима обезбедило равноправно учешће).
Кандидати који прођу проверу услова прелазе у фазу оцењивања, у којој оркестратор позива алате различитих система за оцењивање. Они процењују факторе важне за приказивање, као што су семантичка релевантност (да ли оглас одговара циљу корисника?), предвиђено ангажовање (да ли је вероватно да ће оглас бити виђен, да ће корисник кликнути на њега и да ће довести до исхода који оглашивач жели?) и претходни учинак (да ли је оглас до сада остваривао добре резултате када је приказиван корисницима?). Оркестратор такође филтрира огласе пре аукције како би обезбедио њихову релевантност и безбедност. Ови системи сужавају избор на мањи скуп кандидата спремних за аукцију, али још не одређују који ће оглас на крају бити испоручен.
Оркестратор процењује припремљене кандидате у контексту разговора и бира оне који су довољно прикладни да уђу у завршну аукцију. Оркестратор не одлучује директно који ће оглас бити приказан, нити одређује цену. Он предлаже кандидате који одговарају контексту, а које затим процењује алат за аукцију.
Аукција примењује завршне механизме приказивања: пријем у аукцију (прелазак минималног прага релевантности и користи), темпо потрошње (равномерније трошење буџета за огласе), израчунавање понуда и параметара аукције, рангирање уз уважавање квалитета, одређивање цене и коначан избор.
После аукције оглас можда неће бити испоручен из два разлога, оба специфична за разговоре у ChatGPT‑у.
Оглас може деловати непримерено у разговору: Иако су модели за очување интегритета – модели који одлучују када је прикладно приказати оглас – проценили да је сам разговор безбедан за оглашавање, а оглас оцењен као усклађен са правилима, он понекад може деловати непримерено у контексту одређених разговора. Оркестратор спречава приказивање таквих огласа.
Захтев за оглас можда неће бити обрађен на време: Ако је ChatGPT модел спреман да одговори, али оглас још није спреман за приказивање, време за обраду захтева истиче и оглас се не испоручује. Зато је један од циљева система за оглашавање да ради што брже. Време одговора ChatGPT модела је променљиво, а ми не одлажемо одговоре у разговору да бисмо чекали учитавање огласа.
Ако су све наведене провере успешно завршене, шаљемо оглас корисничком интерфејсу на исцртавање. То сматрамо испоруком огласа са серверске стране, али оглас ипак можда нећемо приказати кориснику – и то је намерно тако осмишљено.
У производу заснованом на разговору као што је ChatGPT, испорука огласног материјала са сервера не гарантује да ће оглас бити приказан; он мора да стигне на време да би био укључен у текућу размену порука. Огласни материјал обухвата наслов, опис, одредишни линк и евентуални позив на акцију. Поред тога, систем за оглашавање враћа и увод који генерише модел – кратко, неутрално објашњење о томе како је оглас повезан са разговором. Одвајањем увода од огласног материјала чува се порука оглашивача, док тон ChatGPT‑а остаје неутралан.
Кориснички интерфејс ChatGPT‑а прима увод и огласни материјал као јединствен пакет. Ако пакет стигне пре него што је ChatGPT одговор у потпуности генерисан, интерфејс приказује оглас испод одговора, уз јасну ознаку да је реч о спонзорисаном садржају. Ако стигне прекасно, оглас се не приказује у тој размени порука. То је разлика између испоруке огласа са сервера и приказа огласа кориснику.
Избор победничког огласа и испорука су одвојени догађаји. Изабрани оглас сматра се испорученим тек када ChatGPT одобри и прикаже оглас и када испорука буде потврђена.
Наш технолошки систем за оглашавање користи стандардно бележење догађаја и токове обраде података, што има три главне предности: оглашивачи лакше повезују своје постојеће системе са нашим, могу да унапреде стратегије на основу података из извештаја, а наш тим може да уочи делове система које треба побољшати. Поред ових алата за извештавање и оптимизацију, користимо висококвалитетан модел за процену испоруке и обуку других модела за оглашавање, чиме стварамо снажан циклус самосталног унапређивања.
Детаљне анализе догађаја помажу нам да разумемо и унапредимо сваки део система за оглашавање засебно. Систем за обраду евиденција бележи и појединачне исходе, као што су:
Размена порука није испуњавала услове за оглашавање.
Сесија оглашавања је започета, али проналажење огласа није затражено.
Проналажење огласа није вратило ниједног кандидата.
Кандидати су пронађени, али допуна њихових података није успела или нису испунили услове.
Оглас је испоручен, а касније је корисник ступио у интеракцију са њим.
Ове детаљне анализе помажу нам да сваки део система за приказивање огласа унапредимо засебно. За унапређење препознавања прилика потребни су другачији подаци него за побољшање проналажења огласа, квалитета кандидата, учешћа у аукцији или поузданости испоруке.
Системи за испоруку, приказивање и квалитет прате различите делове животног циклуса. Обрада уз контроле приватности одређује шта сме да се користи за мерење и унапређење модела.
Идеја процене засноване на моделима јесте да наши најмоћнији модели, са најразвијенијим способностима резоновања, прате и оцењују резултате система, а затим унапређују накнадно обучен велики језички модел (LLM) тако што га обучавају за бољи рад. На пример, за оркестрацију или проналажење огласа можемо да користимо мање, ефикасније моделе или моделе са слабијим способностима резоновања ако наш најмоћнији модел прикупља повратне информације и обучава те мање моделе да што боље обављају своје задатке.
Прикупљамо повратне информације људи и поступамо по њима: кликове корисника и скривања огласа, одговоре на анкете за кориснике и директне коментаре оглашивача преко нашег Менаџера огласа. Током развоја, наш тим је доступан и за коментаре, па директно слушамо шта желе и корисници ChatGPT‑а и оглашивачи. Ове повратне информације утичу на наш правац развоја чак и више од запажања модела и један су од разлога што смо кроз брзе итерације успели да дођемо до исправних одлука о производу. Модел можда може да разуме намеру корисника и критички размишља како би испоручио нешто корисно, али осећај за добар укус обликују људи.
Пре годину дана нисмо имали систем за оглашавање, а овом облашћу бавило се само неколико људи. Сада имамо поуздан систем за оглашавање чији тренутни темпо остваривања прихода премашује милијарду долара на годишњем нивоу, а током оглашавања управља оркестратор заснован на великом језичком моделу (LLM). Codex је пресудно повећао нашу продуктивност и омогућио нам да изградимо систем од нуле и достигнемо ову важну прекретницу у обиму коришћења невиђеном брзином. Од самог почетка организовали смо тим и развојне процесе тако да користимо Codex за брзу изградњу и проширивање система. Увели смо заштитне механизме како би Codex могао поуздано и безбедно да испоручује код. Паралелно смо поставили додатке за повезивање Codex-а са инфраструктуром података како бисмо знатно скратили циклус од стицања увида до увођења побољшања у систем, укључујући нове функције производа, бољи квалитет и боље перформансе система.
Комбинација граница нашег система, заснованих на нашим принципима оглашавања, и оркестратора заснованог на великом језичком моделу (LLM) омогућава нам да оглашавање учинимо корисним, а да притом сваки разговор не третирамо као захтев за оглас. Убудуће ћемо наставити да експериментишемо са динамичнијим форматима огласа како бисмо повећали корист за кориснике, на пример тако што ћемо им омогућити да преко огласа директно разговарају са предузећима, као и корист за оглашиваче. Архитектура која се самостално унапређује, изграђена на OpenAI моделима уз непрекидне циклусе повратних информација, омогућиће нам да током времена још брже побољшавамо релевантност и персонализацију.



