Kako smo izgradili novi sistem oglasa za ChatGPT za povjerenje korisnika i relevantnost
Autori: Ritendra Datta i Karthik Gopalratnam, članovi tehničkog tima
Tradicionalni sistemi za oglašavanje osmišljeni su tako da reaguju na pojedinačne iskaze namjere korisnika. Korisnik nešto traži ili pregledava na internetu, sistem za oglase prima te upite i preglede stranica kao događaje, a zatim na osnovu njih traži odgovarajuće oglase. Izgradnja oglašivačke infrastrukture za ChatGPT bila je drugačija: namjera korisnika razvija se kroz razgovore i mijenja tokom više razmjena poruka, ponekad bez ijednog prikladnog trenutka za oglašavanje. Da bismo podržali ovu novu paradigmu, izgradili smo namjenski sistem za isporuku oglasa. Ova nova vrsta oglašivačke infrastrukture zasniva se na prilagođenom, naknadno treniranom graničnom LLM-u koji poziva alate za dohvatanje (pronalaženje najboljih opcija), rangiranje (predviđanje angažmana korisnika), relevantnost (procjenu korisnosti oglasa) i provođenje aukcija za konačni odabir oglasa i određivanje cijena.
Naš sistem za oglase uvažava nijanse promjenjivih ciljeva korisnika zahvaljujući trima ključnim odlukama u dizajnu: 1) uvođenju sesija oglašavanja koje čuvaju stanje, odnosno pamte informacije kroz razmjene poruka i više razgovora, 2) oslanjanju na prilagođen, naknadno treniran LLM koji kroz arhitekturu pozivanja alata tumači kontekst razgovora i namjeru koja stoji iza njega, a zatim efikasno bira, rangira i isporučuje oglase, i 3) provođenju procesa odabira oglasa odvojeno od generiranja odgovora ChatGPT‑a, u zasebnom servisu, kako oglasi ne bi utjecali na odgovore i kako bi ChatGPT zadržao neutralan ton. Naš naknadno treniran LLM koristimo za orkestraciju cijelog procesa oglašavanja, određujući pravi oglas za pravi trenutak na osnovu trenutne razmjene poruka i historije razgovora korisnika. Dok je za izgradnju ovakvog sistema za oglase koji se sam unapređuje nekada trebalo više godina, ChatGPT reklame dostigle su stopu prihoda od milijardu dolara godišnje za manje od 200 dana od pokretanja; od pokretanja do danas više od 100.000 oglašivača prikazivalo je oglase u ChatGPT‑u.
Uobičajeni zahtjev za oglašavanje obično počinje jasno definiranim događajem. Korisnik pošalje upit za pretragu ili otvori web-stranicu, a sistem za oglase primi zahtjev. Ova vrsta sistema prilično je jednostavna: dohvata moguće kandidate za oglase, rangira ih, provodi aukciju kako bi odredila odgovarajuću cijenu prilike za prikazivanje i prikazuje odabrani oglas korisniku. U ChatGPT‑u takav jasno određen trenutak ne nastaje prirodno.
Ljudi u razgovor s ChatGPT‑om dolaze s ciljevima, a ne s upitom za pretragu na koji očekuju jedan odgovor. Možda planiraju putovanje, biraju softver za svoje poslovanje, opremaju dom ili se počinju baviti novim hobijem. Sve se to ne odvija u jednoj razmjeni poruka. ChatGPT često tokom razgovora pomaže korisniku da razjasni šta mu je važno.
Naprimjer, naš inženjerski tim pitao je ChatGPT kako trenirati za utrku: razgovor počinje općim pitanjem o trčanju. Nekoliko razmjena poruka kasnije pitaju za obuću koja bi im pomogla pri treniranju. Komercijalno značenje razgovora mijenja se sa svakim novim uslovom, a ovaj personalizirani kontekst razvija se kroz više sesija. Sistem koji bi reagovao na prvu poruku mogao bi potpuno pogrešno protumačiti namjeru, narušiti korisničko iskustvo i ometati korisnika.
Izgradnja našeg sistema za oglase zahtijevala je da napustimo oglašivačku arhitekturu zasnovanu na zahtjevu i odgovoru te od nule izgradimo infrastrukturu koja prepoznaje moguće poslovne prilike, a pritom daje prednost povjerenju korisnika i koristi za njih.
Pretvaranje svake poruke u zaseban zahtjev, kao u tradicionalnom sistemu za oglase, u našem bi razgovornom okruženju nosilo nekoliko rizika: 1) pogrešno tumačenje cilja korisnika zbog pretjeranog pojednostavljivanja, 2) prerano pokretanje procesa oglašavanja, prije nego što stvarna potreba korisnika postane jasna, 3) prikazivanje oglasa koji ometaju korisnika na putu do cilja umjesto da mu pomažu i 4) neefikasno ponovno pokretanje procesa oglašavanja svaki put kada se zahtjev promijeni, čime nastaju šum i nepotrebni troškovi. Umjesto da se zasniva na pojedinačnim događajima, sistem za oglase (koji obuhvata dohvatanje, rangiranje i isporuku) održava sesiju koja čuva stanje. To znači da sesija oglašavanja traje tokom razmjene poruka koja ispunjava uslove, pamteći i ažurirajući informacije kako razgovor napreduje. ChatGPT šalje početni kontekst zahtjeva serveru za oglase. Sistem za oglase prati razvoj razgovora i prilagođava mu se, umjesto da se oslanja na jedan pojednostavljen upit.
Proces odabira oglasa odvija se paralelno s uobičajenim generiranjem odgovora ChatGPT‑a kako proces oglašavanja ne bi utjecao na njegove odgovore. Oglasi se filtriraju i biraju kroz zaseban sistem koji obrađuje razgovor prema vlastitim uslovima prihvatljivosti, kvaliteta i isporuke. Ova važna arhitektonska granica — različiti servisi koji koriste zasebne modele i zaseban kod — omogućava osnovnim serverima ChatGPT‑a da generiraju organski odgovor. Za to vrijeme sistem za oglase nezavisno procjenjuje postoji li prikladna prilika za oglašavanje i, ako postoji, priprema sponzorirani sadržaj kroz zaseban proces posluživanja.
Oglašavanje se odvija paralelno s generiranjem odgovora u ChatGPT‑u.
Osim što štiti korisničko iskustvo, ovo razdvajanje ima i neke praktične posljedice. ChatGPT ne zavisi od sistema za oglase — ovi servisi ni na koji način nisu isprepleteni i ne dijele model za generiranje sadržaja. Zato se organski odgovor ChatGPT‑a nastavlja generirati bez smetnji čak i ako sistem za posluživanje oglasa nije dostupan ili radi sporo. To znači da sistem za oglase ne može prekinuti ni usporiti rad ChatGPT‑a. Još jedna prednost ovog razdvajanja jeste to što kriteriji korisnosti oglasa ostaju vrlo visoki. Ishod bez oglasa sasvim je uobičajen i smatra se uspješnim. Sistem isporučuje oglas samo ako je jasno koristan i korisnicima i oglašivačima.
Druga ključna arhitektonska komponenta naše oglašivačke infrastrukture je naknadno treniran LLM koji tumači razgovore i vodi cijeli proces oglašavanja u agentskoj petlji — pozivajući alate za osnovne funkcije sistema za oglase, od dohvatanja i rangiranja do aukcije i, na kraju, isporuke. Ovaj LLM nazivamo orkestratorom.
Proces oglašavanja počinje razumijevanjem namjere korisnika kako bi se pokrenulo dohvatanje: brzo prikupljanje namjerno širokog izbora mogućih oglasa za kasnije filtriranje. Postepeno primanje razgovora donosi više informacija, ali i više nejasnoća pri dohvatanju jer sistem za oglase mora razlikovati trenutnu namjeru od konteksta koji više nije aktuelan. Orkestrator mora protumačiti upućivanja na ranije poruke, prepoznati kada korisnik govori hipotetički i izbjeći da svako spominjanje proizvoda ili usluge shvati kao zahtjev za kupovinu.
Orkestrator oglasa koristi dostupni razgovor i kontekst korisnika te kroz ponovljene pokušaje traži dobre oglase, svaki put odlučujući kada će pozvati koji alat. Osnovni cilj je pronaći najprikladniji oglas za taj razgovor i kontekst — oglas koji uravnotežuje veliku korist za korisnika i oglašivača. Ako korisnik odabere personalizaciju oglasa, orkestrator uzima u obzir i dostupne neosjetljive informacije o njegovim ranijim razgovorima kako bi pronašao oglase koji mu najbolje odgovaraju.
Orkestrator oglasa u ponovljenim koracima poziva alate za isporuku oglasa kako bi pronašao korisne oglase.
Kako razgovor napreduje i orkestrator oglasa dobija nove informacije, može pokrenuti novi niz poziva alata s ažuriranim kontekstom kako bi pronašao bolje oglase i vratio ih klijentskoj aplikaciji, koja ih zatim može upotrijebiti ako stignu na vrijeme.
Orkestrator je osmišljen da uravnoteži korist za korisnika i oglašivača, pri čemu su korisnici uvijek na prvom mjestu.
Sistem za oglase sastoji se od pojedinačnih alata koje orkestrator poziva u ponovljenim koracima kako bi pronašao najbolje oglase za razgovor. U osnovi, orkestrator pretvara razgovore u kratke tekstualne sažetke, koji se zatim pretvaraju u semantičke vektorske prikaze — pohranjena značenja koja sistem za oglase lakše pretražuje. Pomoću tih prikaza dohvata kandidate za oglase, filtrira ih prema uslovima za prikazivanje (na osnovu budžeta, korisničkih postavki i drugih preliminarnih provjera), procjenjuje njihov kvalitet i relevantnost te ih konačno rangira kako bi prepoznao vrijedne prilike za prikazivanje na kraju odgovora u razgovoru. Svaki oglas zato mora zadovoljiti visoke kriterije prihvatljivosti i relevantnosti da bi se mogao prikazati.
LLM orkestrator prvo priprema jedan ili više upita koji predstavljaju relevantnu komercijalnu namjeru. To može uključivati preformuliranje konteksta razgovora kako bi se komercijalne mogućnosti proširile izvan doslovnih upita za pretragu, a zatim i izradu semantičkih prikaza. Orkestrator pritom sažima višekoračni razgovor za sistem za dohvatanje, čime omogućava ciljano dohvatanje oglasa iz naše baze podataka.
Prikazivanje oglasa bit će korisnije i za korisnike i za oglašivače ako se oglasi pojavljuju samo kada se namjera korisnika temeljito razumije. Više upita može sačuvati različite aspekte namjere. Naprimjer, razgovor o planiranju putovanja može sadržavati zasebne potrebe vezane za prijevoz, smještaj ili aktivnosti. Sistem za dohvatanje može sačuvati te razlike umjesto da cijeli razgovor svede na jedan doslovni tekstualni niz.
Kao primjer, pogledajmo mogući slijed poruka u razgovoru o planinarskoj obući:
What should I cover on a two-day trip to Yosemite?
Will it be cold next week?
New [insert brand] product lines?
Iako korisnik nije povezao pitanje o brendu obuće s putovanjem u Yosemite, ovaj razgovor bi u našem sistemu za oglase mogao biti predstavljen s dva upita, poput [shoes appropriate for hiking trip] i [new [brand] product lines good for travel]. To može biti tek prvi pokušaj; orkestrator je osmišljen da postepeno dorađuje ove prikaze dok u našoj ponudi ne pronađe oglase koji su izuzetno korisni korisniku.
Dohvatanje je proces stvaranja namjerno širokog skupa oglasa za razmatranje. Kandidati mogu dolaziti iz različitih strategija dohvatanja, a kasnije se takmičiti pod istim ograničenjima posluživanja. Izrađujemo više indeksa optimiziranih za različita ograničenja sistema i proizvoda. Naprimjer, indeks oglasa iz kataloga proizvoda osmišljen je tako da pri dohvatanju najboljih mogućih oglasa uzima u obzir pozitivne ili negativne recenzije proizvoda. To nije relevantno za druge oglase uz koje možda nisu vezane recenzije. Svaki indeks optimiziran je za neku varijantu pretrage približno najbližih susjeda (ANN), uz upotrebu vektorskih prikaza namjere korisnika. Ova ANN pretraga je aproksimacijski algoritam za dohvatanje iz velikih semantičkih indeksa. To znači da se oglasi dohvataju vrlo brzo: algoritam se približava dobrom rješenju umjesto da traži „pravo“ rješenje, a pritom zadržava većinu relevantnih kandidata.
Sistem za oglase tokom dohvatanja koristi preformulirane upite za izradu semantičkih vektorskih prikaza i formiranje širokog skupa kandidata za oglase.
Cilj filtriranja je iz razmatranja ukloniti sve kandidate za oglase koji ne zadovoljavaju kriterije za prikazivanje u pogledu relevantnosti, ponuda i budžeta. Zavisno od kandidata i konfiguracije, provjere pri filtriranju mogu uključivati dostupnost oglasnog materijala i kampanje (jesu li kampanja ili oglasni materijali aktivni), ciljanje kampanje (npr. na kojim lokalnim tržištima smije djelovati), ograničenja prema pravilima (zahtjevi koji određuju šta se smije oglašavati), raspoloživost budžeta (ima li kampanja još sredstava za potrošnju), tempo potrošnje (treba li kampanja trošiti budžet sada ili u neko drugo doba dana), prikladnost za mjesto prikazivanja (u kojim se vrstama razgovora ovaj oglas smije prikazati) i uklanjanje duplikata na nivou oglašivača i kampanje (odabir odgovarajućeg broja oglasa po oglašivaču radi pravednog učešća svih preduzeća).
Kandidati koji prođu provjere uslova prelaze u fazu bodovanja, u kojoj orkestrator poziva alate različitih sistema za bodovanje. Oni procjenjuju faktore važne za posluživanje, kao što su semantička relevantnost (je li oglas relevantan za cilj korisnika?), predviđeni angažman (kolika je vjerovatnoća da će oglas biti pregledan, da će korisnik kliknuti na njega i ostvariti ishod koji oglašivač želi?) i prethodni rezultati (je li oglas do sada postizao dobre rezultate kada je prikazivan korisnicima?). Orkestrator također filtrira oglase prije aukcije kako bi osigurao njihovu relevantnost i sigurnost. Ovi sistemi sužavaju izbor na manji skup kandidata spremnih za aukciju, ali još ne određuju koji će oglas na kraju biti isporučen.
Orkestrator procjenjuje pripremljene kandidate u kontekstu razgovora i bira one koji su dovoljno prikladni za ulazak u završnu aukciju. Orkestrator ne odlučuje direktno koji će oglas biti poslužen niti određuje cijenu. On predlaže kandidate prikladne za dati kontekst, koje zatim procjenjuje alat za aukciju.
Aukcija primjenjuje završne mehanizme posluživanja, uključujući prijem na aukciju (ispunjavanje minimalnog praga relevantnosti i koristi), tempo potrošnje (ravnomjernije trošenje budžeta za oglase), izračun ponuda i parametara aukcije, rangiranje prilagođeno kvalitetu, određivanje cijene i konačni odabir.
Nakon aukcije, oglas može ostati neisporučen iz dva razloga, oba specifična za razgovorni format ChatGPT‑a.
Oglas može djelovati neprimjereno u razgovoru: Iako su modeli za integritet (modeli koji odlučuju kada je primjereno poslužiti oglas) procijenili da je razgovor siguran za prikazivanje oglasa, a sam oglas usklađen s pravilima, on ponekad ipak može djelovati neprimjereno u kontekstu određenih razgovora. Orkestrator sprečava prikazivanje takvih oglasa.
Zahtjev za oglas možda neće stići na vrijeme: Ako je model ChatGPT‑a spreman odgovoriti, a oglas još nije spreman za prikazivanje, istječe vrijeme čekanja na zahtjev i oglas se ne isporučuje. Zato je jedan od ciljeva sistema za oglase da radi što brže. Vrijeme odgovora modela ChatGPT‑a varira, a odgovore u razgovoru ne odgađamo radi čekanja da se oglasi učitaju.
Ako oglas prođe sve navedene provjere, šaljemo ga korisničkom interfejsu na prikazivanje. To smatramo serverskom isporukom oglasa, ali oglas se ipak možda neće prikazati korisniku — i to je namjerno tako osmišljeno.
U razgovornom proizvodu poput ChatGPT‑a, serverska isporuka oglasnog materijala ne garantuje da će oglas biti prikazan; on mora stići i na vrijeme da bi bio uključen u trenutnu razmjenu poruka. Oglasni materijal obuhvata naslov, opis, odredišni link i eventualni poziv na akciju. Sistem za oglase uz to vraća i uvodnu napomenu koju generira model — kratak, neutralan uvod koji objašnjava kako je oglas povezan s razgovorom. Odvajanjem uvodne napomene od oglasnog materijala čuva se poruka oglašivača, dok ton ChatGPT‑a ostaje neutralan.
Korisnički interfejs ChatGPT‑a prima uvodnu napomenu i oglasni materijal kao jedan paket. Ako paket stigne prije nego što je odgovor ChatGPT‑a u potpunosti generiran, interfejs prikazuje oglas ispod odgovora, jasno označen kao sponzorirani sadržaj. Ako stigne prekasno, oglas se ne prikazuje u toj razmjeni poruka. U tome je razlika između serverske isporuke oglasa i prikaza oglasa korisniku.
Odabir pobjednika i isporuka zasebni su događaji. Odabrani oglas smatra se isporučenim tek nakon što ChatGPT odobri i prikaže oglas te se isporuka potvrdi.
Naša oglašivačka infrastruktura koristi standardne sisteme bilježenja događaja i tokove obrade podataka, što donosi tri glavne prednosti: oglašivači mogu lakše povezati postojeće sisteme s našom infrastrukturom, mogu unaprijediti svoje strategije uz pomoć podataka iz izvještaja, a naš tim može prepoznati dijelove sistema koje treba poboljšati. Pored ovih alata za izvještavanje i optimizaciju, koristimo model visokog kvaliteta za procjenu isporuke i treniranje drugih modela za oglase, čime stvaramo snažnu petlju samounapređenja.
Detaljne analize događaja pomažu nam da razumijemo i zasebno unaprijedimo svaki dio sistema za oglase. Sistem za obradu zapisa bilježi i pojedinačne ishode, kao što su:
Razmjena poruka nije ispunjavala uslove za oglašavanje.
Sesija oglašavanja je pokrenuta, ali dohvatanje nije zatraženo.
Dohvatanje nije vratilo nijednog kandidata.
Kandidati su dohvaćeni, ali dopuna podacima nije uspjela ili nisu ispunili uslove.
Oglas je isporučen, a korisnik je kasnije stupio u interakciju s njim.
Ove detaljne analize pomažu nam da zasebno unaprijedimo svaki dio sistema za posluživanje oglasa. Za unapređenje prepoznavanja prilika potrebni su drugačiji podaci nego za unapređenje dohvatanja, kvaliteta kandidata, učešća na aukciji ili pouzdanosti isporuke.
Sistemi za isporuku, posluživanje i kvalitet prate različite dijelove životnog ciklusa. Obrada uz kontrole privatnosti određuje šta se smije koristiti za mjerenje i unapređenje modela.
Ideja procjene pomoću modela je da naši najsnažniji modeli, s najboljim sposobnostima rezonovanja, prate i ocjenjuju rezultate sistema, a zatim unapređuju naknadno treniran LLM dodatnim treniranjem za bolje rezultate. Naprimjer, za orkestraciju ili dohvatanje možemo koristiti manje, efikasnije modele ili modele sa slabijim sposobnostima rezonovanja ako naš najsnažniji model prikuplja povratne informacije i trenira te manje modele da što bolje obavljaju svoj posao.
Prikupljamo povratne informacije ljudi i postupamo prema njima — na osnovu klikova i skrivanja oglasa, anketa za korisnike te direktnih povratnih informacija oglašivača putem našeg Menadžera reklama. Tokom razvoja i naš tim stoji na raspolaganju za povratne informacije te direktno sluša šta žele i korisnici ChatGPT‑a i oglašivači. Ovaj izvor povratnih informacija usmjerava nas još više od opažanja modela i jedan je od razloga što smo kroz brze iteracije mogli doći do ispravnih odluka o proizvodu. Model možda može razumjeti namjeru korisnika i kritički razmišljati kako bi pružio nešto korisno, ali ljudi oblikuju osjećaj za ono što je primjereno.
Prije godinu dana nismo imali sistem za oglase, a samo je nekoliko ljudi razmišljalo o ovoj oblasti. Sada imamo robustan sistem za oglase koji ostvaruje prihod po stopi većoj od milijardu dolara godišnje, uz orkestrator zasnovan na LLM-u koji vodi proces oglašavanja. Codex je bio ključan za višestruko povećanje naše produktivnosti, što nam je omogućilo da izgradimo sistem od nule i dostignemo ovu važnu prekretnicu u korištenju neviđenom brzinom. Od samog početka organizirali smo tim i razvojne procese tako da koristimo Codex za brzu izgradnju i skaliranje sistema. Uspostavili smo zaštitne mehanizme kako bi Codex pouzdano i sigurno isporučivao kod. Paralelno smo postavili dodatke za podatkovnu infrastrukturu u Codexu kako bismo znatno skratili ciklus od prikupljanja uvida do uvođenja poboljšanja u sistem, uključujući nove funkcije proizvoda, poboljšanja kvaliteta i bolje performanse sistema.
Kombinacija granica našeg sistema (zasnovanih na našim principima oglašavanja) i orkestratora zasnovanog na LLM-u omogućava nam da oglašavanje učinimo korisnim, a da svaki razgovor ne tretiramo kao zahtjev za oglas. U budućnosti ćemo nastaviti eksperimentirati s dinamičnijim formatima oglasa kako bismo povećali korist za korisnike (npr. omogućili im da putem oglasa direktno razgovaraju s preduzećima) i za oglašivače. Arhitektura infrastrukture koja se sama unapređuje, zasnovana na modelima kompanije OpenAI i kontinuiranim petljama povratnih informacija, omogućit će nam da s vremenom još brže poboljšavamo relevantnost i personalizaciju.



