Concevoir le système publicitaire de ChatGPT pour la confiance et la pertinence
Par Ritendra Datta et Karthik Gopalratnam, membres de l’équipe technique
Les systèmes publicitaires traditionnels sont conçus pour répondre à des unités distinctes d’intention utilisateur. Un utilisateur cherche ou consulte quelque chose en ligne, le système publicitaire reçoit ces requêtes et ces pages vues sous forme d’événements, puis il cherche des publicités correspondantes à partir de ces événements. Créer une pile publicitaire pour ChatGPT était différent : l’intention de l’utilisateur se développe au fil des conversations et évolue sur plusieurs échanges, parfois sans qu’un moment se prête à la publicité. Pour prendre en charge ce nouveau paradigme, nous avons créé un système de livraison publicitaire sur mesure. Ce nouveau type de pile publicitaire repose sur un LLM de pointe personnalisé et affiné qui appelle des outils pour la récupération (repérer les meilleures options), le classement (prédire l’engagement des utilisateurs), la pertinence (évaluer l’utilité de la publicité) et l’exécution d’enchères pour la sélection finale et la tarification.
Notre système publicitaire tient compte des nuances des objectifs évolutifs des utilisateurs grâce à trois choix de conception clés : 1) des sessions publicitaires avec état, qui conservent l’information entre les échanges d’une conversation et entre plusieurs conversations; 2) un LLM personnalisé et affiné, doté d’une architecture d’appels d’outils pour interpréter le contexte et l’intention sous-jacente d’une conversation, puis sélectionner, classer et livrer efficacement les publicités; 3) un processus de sélection publicitaire distinct de la génération des réponses de ChatGPT, exécuté dans son propre service, pour éviter que les publicités influencent les réponses et préserver la neutralité de ChatGPT. Nous utilisons notre LLM affiné pour orchestrer tout le processus publicitaire et déterminer la bonne publicité à présenter au bon moment, selon l’échange en cours et l’historique des conversations de l’utilisateur. Alors que bâtir un tel système publicitaire autoaméliorant prenait autrefois des années, Publicités ChatGPT a atteint un milliard de dollars de revenus en rythme annualisé moins de 200 jours après son lancement. À ce jour, plus de 100 000 annonceurs ont diffusé des publicités sur ChatGPT depuis le lancement.
Une demande publicitaire classique commence généralement par un événement bien défini. Un utilisateur soumet une requête de recherche ou ouvre une page Web, et le système publicitaire reçoit une demande. Ce type de système est assez simple : il récupère des publicités candidates, les classe, lance une enchère pour fixer le prix approprié de l’occasion, puis montre la publicité retenue à l’utilisateur. ChatGPT ne produit pas naturellement un moment aussi précis.
Dans une conversation avec ChatGPT, les gens arrivent avec des objectifs plutôt qu’avec une requête de recherche à réponse unique. Ils peuvent vouloir planifier un voyage, choisir un logiciel pour leur entreprise, meubler une maison ou s’initier à un nouveau loisir. Tout cela ne se fait pas en un seul échange. ChatGPT aide souvent l’utilisateur à clarifier ce qui compte au fil de la conversation.
Par exemple, notre équipe d’ingénierie a demandé à ChatGPT comment s’entraîner pour une course : la conversation commence par une question générale sur la course à pied. Plusieurs échanges plus tard, l’équipe pose une question sur les chaussures adaptées à l’entraînement. Le sens commercial de la conversation change à chaque nouvelle contrainte, et ce contexte personnalisé évolue sur plusieurs sessions. Un système qui agirait dès le premier message pourrait se tromper complètement sur l’intention, au risque de dégrader l’expérience utilisateur et de gêner son parcours.
Pour créer notre système publicitaire, nous avons dû dépasser l’architecture publicitaire requête-réponse et bâtir une pile à partir de zéro, afin de repérer des occasions économiques tout en donnant la priorité à la confiance et à la valeur pour l’utilisateur.
Transformer chaque message en demande autonome, comme dans un système publicitaire traditionnel, aurait présenté plusieurs risques dans notre contexte conversationnel : 1) mal interpréter l’objectif de l’utilisateur en le simplifiant trop; 2) lancer le processus publicitaire trop tôt, avant que le besoin réel soit clair; 3) montrer des publicités qui gênent le parcours utilisateur au lieu de l’appuyer; 4) relancer inutilement le processus publicitaire à chaque modification de la demande, créant du bruit et des coûts superflus. Plutôt que de reposer sur des événements individuels, le système publicitaire (récupération, classement et livraison) maintient une session avec état. La session publicitaire dure ainsi tout au long d’un échange admissible, en mémorisant et en actualisant l’information à mesure qu’elle évolue. ChatGPT envoie le contexte initial de la demande au serveur publicitaire. Le système publicitaire suit l’évolution de la conversation et s’y adapte plutôt que de s’appuyer sur une seule requête simplifiée.
Le processus de sélection publicitaire s’exécute en parallèle de la génération normale des réponses de ChatGPT pour que le processus publicitaire n’influence pas ses réponses. Les publicités sont filtrées et sélectionnées par un système distinct qui traite la conversation selon ses propres contraintes d’admissibilité, de qualité et de livraison. Cette séparation architecturale importante — des services différents utilisant des modèles et du code distincts — laisse les serveurs principaux de ChatGPT générer la réponse organique. Pendant ce temps, le système publicitaire évalue indépendamment s’il existe une occasion publicitaire appropriée et, le cas échéant, prépare un placement commandité par un processus de diffusion distinct.
La publicité fonctionne en parallèle du parcours de réponse de ChatGPT.
En plus de protéger l’expérience utilisateur, cette séparation a des conséquences pratiques. ChatGPT ne dépend aucunement du système publicitaire : les services ne sont nullement imbriqués et ne partagent pas de modèle de génération de contenu. Ainsi, si le système de diffusion publicitaire est indisponible ou lent, la réponse organique de ChatGPT reste inchangée. Le système publicitaire ne peut donc ni interrompre ni ralentir le fonctionnement de ChatGPT. Cette séparation permet aussi de maintenir des exigences très élevées quant à la valeur des publicités. Ne renvoyer aucune publicité est un résultat normal et réussi. Le système ne livre une publicité que si elle est clairement avantageuse pour les utilisateurs et les annonceurs.
L’autre composant architectural clé de notre pile publicitaire est le LLM affiné qui interprète les conversations et exécute tout le processus publicitaire dans une boucle agentique : il appelle des outils pour les fonctions centrales du système publicitaire, de la récupération au classement, puis à l’enchère et, enfin, à la livraison. Nous appelons ce LLM l’orchestrateur.
La première étape du processus publicitaire consiste à comprendre l’intention de l’utilisateur pour amorcer la récupération, une collecte rapide et délibérément large de publicités potentielles à filtrer ensuite. Recevoir la conversation progressivement rend la récupération plus riche, mais aussi plus ambiguë, car le système publicitaire doit distinguer l’intention actuelle du contexte périmé. L’orchestrateur doit interpréter les références aux messages précédents, reconnaître quand un utilisateur parle de façon hypothétique et éviter de traiter chaque mention d’un produit ou d’un service comme une demande d’achat.
L’orchestrateur publicitaire utilise la conversation et le contexte utilisateur disponibles, procède par itérations pour trouver de bonnes publicités et choisit à chaque étape quel outil appeler et quand. Son objectif est de trouver la publicité la plus appropriée à cette conversation et à ce contexte, celle qui équilibre une valeur élevée pour l’utilisateur et pour l’annonceur. Si l’utilisateur choisit de personnaliser les publicités, l’orchestrateur tient aussi compte des renseignements non sensibles disponibles sur ses conversations passées pour trouver les publicités les mieux adaptées.
L’orchestrateur publicitaire appelle de façon itérative les outils de livraison publicitaire pour trouver des publicités utiles.
À mesure que la conversation avance et que l’orchestrateur publicitaire reçoit de nouveaux renseignements, il peut lancer une nouvelle série d’appels d’outils avec le contexte actualisé pour trouver de meilleures publicités et les renvoyer au client, qui peut les utiliser si elles arrivent à temps.
L’orchestrateur est conçu pour équilibrer la valeur pour l’utilisateur et celle pour l’annonceur, en donnant toujours la priorité aux utilisateurs.
Le système publicitaire se compose d’outils distincts que l’orchestrateur appelle de façon itérative pour trouver les meilleures publicités pour une conversation. Dans les grandes lignes, l’orchestrateur transforme les conversations en courts résumés textuels, ensuite convertis en plongements sémantiques (des significations stockées que le système publicitaire peut parcourir plus facilement). Il récupère des publicités candidates à l’aide de ces plongements, les filtre selon leur admissibilité (budget, paramètres utilisateur et autres vérifications préliminaires), évalue leur qualité et leur pertinence, puis les classe une dernière fois pour repérer les occasions de placement à forte valeur à la fin d’une réponse. Chaque publicité doit donc satisfaire à des exigences élevées d’admissibilité et de pertinence pour pouvoir être placée.
Le LLM orchestrateur prépare d’abord une ou plusieurs requêtes représentant l’intention commerciale pertinente. Il peut notamment reformuler le contexte de la conversation pour élargir les possibilités commerciales au-delà des requêtes de recherche directes, puis créer des représentations sémantiques. L’orchestrateur condense alors une conversation à plusieurs échanges en un résumé destiné au système de récupération, afin d’extraire des publicités de notre base de données de façon ciblée.
Les placements publicitaires seront meilleurs pour les utilisateurs comme pour les annonceurs s’ils n’apparaissent que lorsque l’intention de l’utilisateur est bien comprise. Plusieurs requêtes peuvent préserver différents aspects de l’intention. Une conversation sur la planification d’un voyage, par exemple, peut contenir des besoins distincts liés au transport, à l’hébergement ou aux activités. Le système de récupération peut préserver ces distinctions plutôt que de condenser toute la conversation en une seule chaîne de texte littérale.
Prenons comme exemple une conversation possible sur les chaussures de randonnée :
Que devrais-je visiter pendant un séjour de deux jours à Yosemite?
Fera-t-il froid la semaine prochaine?
De nouvelles gammes de produits [insérer la marque]?
Même si l’utilisateur n’a pas relié sa question sur la marque de chaussures au voyage à Yosemite, cette conversation pourrait être représentée dans notre système publicitaire par deux requêtes, comme [shoes appropriate for hiking trip] et [new [brand] product lines good for travel]. Il peut ne s’agir que de la première tentative : l’orchestrateur est conçu pour affiner ces représentations par itérations jusqu’à ce qu’il trouve dans notre inventaire des publicités très utiles à l’utilisateur.
La récupération consiste à créer un ensemble délibérément large de publicités possibles. Les candidates peuvent provenir de différentes stratégies de récupération, puis être mises en concurrence selon les mêmes contraintes de diffusion. Nous créons plusieurs index optimisés pour différentes contraintes du système et du produit. Par exemple, l’index des publicités issues de flux de produits est conçu pour tenir compte des avis positifs ou négatifs sur les produits lorsqu’il récupère les meilleures publicités possibles. Ce facteur n’est pas pertinent pour d’autres publicités auxquelles aucun avis n’est associé. Chaque index est optimisé pour une variante de recherche approximative des plus proches voisins (ANN), à l’aide de plongements représentant l’intention de l’utilisateur. Cette recherche ANN est un algorithme d’approximation permettant la récupération dans de vastes index sémantiques. Les publicités sont ainsi récupérées très rapidement, en s’approchant d’une bonne solution plutôt qu’en cherchant « la bonne » solution, tout en conservant la plupart des candidates pertinentes.
Le système publicitaire utilise des requêtes reformulées pour créer des plongements sémantiques pendant la récupération et produire un vaste ensemble de publicités candidates.
Le filtrage vise à écarter toutes les publicités candidates qui ne répondent pas aux exigences de placement en matière de pertinence, d’offres et de budget. Selon la candidate et la configuration, les vérifications peuvent porter sur la disponibilité du contenu publicitaire et de la campagne (sont-ils actifs?), le ciblage de la campagne (p. ex., les régions où elle peut être diffusée), les restrictions des politiques (les exigences de conformité concernant ce qui peut être annoncé), le budget disponible (reste-t-il des fonds à dépenser?), la cadence des dépenses (la campagne devrait-elle dépenser maintenant ou à un autre moment de la journée?), la compatibilité du placement (les types de conversations auxquels la publicité est admissible) et la déduplication par annonceur et par campagne (choisir un nombre approprié de publicités par annonceur pour assurer une participation équitable des entreprises).
Les candidates qui passent les vérifications d’admissibilité passent à une phase de notation. L’orchestrateur appelle alors divers systèmes de notation pour évaluer des critères de diffusion : pertinence sémantique (la publicité correspond-elle à l’objectif de l’utilisateur?), engagement prédit (est-elle susceptible d’être vue, de recevoir des clics et de mener au résultat souhaité par l’annonceur?), rendement historique (a-t-elle donné de bons résultats auprès des utilisateurs jusqu’ici?). L’orchestrateur filtre aussi les publicités pour en assurer la pertinence et la sécurité avant l’enchère. Ces systèmes réduisent l’ensemble à un plus petit groupe de candidates prêtes pour l’enchère, mais ne déterminent toujours pas la publicité qui sera livrée.
L’orchestrateur évalue les candidates préparées dans le contexte de la conversation et choisit celles qui sont suffisamment appropriées pour participer à l’enchère finale. L’orchestrateur ne décide pas directement quelle publicité sera diffusée et n’en fixe pas le prix. Il propose des candidates adaptées au contexte que l’outil d’enchère évaluera.
L’enchère applique les mécanismes finaux de diffusion : admission à l’enchère (franchissement d’un seuil minimal de pertinence et de valeur), cadence des dépenses (répartition plus uniforme du budget publicitaire), calcul des offres et des caractéristiques d’enchère, classement ajusté selon la qualité, tarification et sélection finale.
Après l’enchère, deux situations peuvent empêcher la livraison d’une publicité, toutes deux propres au contexte conversationnel de ChatGPT.
La publicité peut sembler inappropriée dans la conversation : même si les modèles d’intégrité (qui déterminent quand il est approprié de diffuser une publicité) ont jugé la conversation sûre pour un placement publicitaire, et que la publicité a été jugée conforme aux politiques, elle peut parfois sembler inappropriée dans le contexte de certaines conversations. L’orchestrateur empêche l’affichage de ces publicités.
La demande publicitaire peut ne pas aboutir à temps : si le modèle ChatGPT est prêt à répondre, mais que la publicité n’est pas encore prête à être placée, la demande publicitaire expire et la publicité n’est pas livrée. L’un des objectifs du système publicitaire est donc de fonctionner aussi vite que possible. Le temps de réponse du modèle ChatGPT est variable, et nous ne retardons pas les réponses pour attendre le chargement des publicités.
Si toutes les vérifications ci-dessus sont réussies, nous envoyons la publicité à l’interface pour son affichage. Nous considérons cela comme une livraison publicitaire côté serveur, mais il reste possible que la publicité ne soit pas montrée à l’utilisateur, et c’est voulu.
Dans un produit conversationnel comme ChatGPT, la livraison d’un contenu publicitaire côté serveur ne garantit pas son affichage : la publicité doit aussi arriver à temps pour être incluse dans l’échange en cours. Le contenu publicitaire comprend le titre, la description, le lien de destination et tout appel à l’action. Le système publicitaire renvoie aussi un préambule généré par un modèle : une courte introduction neutre expliquant le lien entre la publicité et la conversation. Séparer le préambule du contenu publicitaire préserve le message de l’annonceur tout en maintenant la neutralité de ChatGPT.
L’interface de ChatGPT reçoit le préambule et le contenu publicitaire ensemble. Si cet ensemble arrive avant que la réponse de ChatGPT soit entièrement générée, l’interface affiche la publicité sous la réponse de ChatGPT, clairement identifiée comme commanditée. S’il arrive trop tard, la publicité n’est pas affichée pour cet échange. C’est la différence entre une livraison publicitaire côté serveur et une impression publicitaire visible par l’utilisateur.
La sélection du gagnant et la livraison sont des événements distincts. Une publicité sélectionnée n’est considérée comme livrée qu’une fois que ChatGPT a approuvé et affiché le placement et que la livraison a été confirmée.
Notre pile publicitaire utilise des pipelines classiques de journalisation et de données, avec trois grands avantages : les annonceurs peuvent plus facilement intégrer leurs systèmes existants à notre pile, ils peuvent améliorer leurs stratégies grâce aux données des rapports, et notre équipe peut repérer les aspects du système à améliorer. En plus de ces outils de rapport et d’optimisation, nous déployons un modèle de grande qualité pour évaluer notre livraison et entraîner d’autres modèles publicitaires, créant ainsi une puissante boucle d’autoamélioration.
Des analyses détaillées des événements nous aident à comprendre et à améliorer chaque partie du système publicitaire séparément. Le système de traitement des journaux consigne aussi des résultats précis, comme les suivants :
L’échange n’était pas admissible à la publicité.
Une session publicitaire a démarré, mais aucune récupération n’a été demandée.
La récupération n’a renvoyé aucune candidate.
Des candidates ont été récupérées, mais ont échoué à l’hydratation ou aux vérifications d’admissibilité.
Une publicité a été livrée, puis a suscité une interaction.
Ces analyses détaillées nous aident à améliorer chaque partie du système de diffusion publicitaire séparément. Améliorer la détection des occasions exige des données différentes de celles nécessaires pour améliorer la récupération, la qualité des candidates, la participation aux enchères ou la fiabilité de la livraison.
Les systèmes de livraison, de diffusion et de qualité observent chacun une partie différente du cycle de vie. Le traitement encadré par des contrôles de confidentialité détermine ce qui peut servir à la mesure et à l’amélioration des modèles.
L’évaluation par modèles repose sur l’idée que nos modèles les plus puissants, dotés des meilleures capacités de raisonnement, observent et jugent les résultats du système, puis améliorent le LLM affiné en l’entraînant à mieux fonctionner. Par exemple, nous pouvons utiliser des modèles plus petits et plus efficaces, ou aux capacités de raisonnement moindres, pour l’orchestration ou la récupération si notre modèle le plus puissant recueille de la rétroaction et entraîne ces petits exécutants à faire le meilleur travail possible.
Nous recueillons et utilisons la rétroaction humaine (clics et masquages des utilisateurs), ainsi que les réponses aux sondages destinés aux utilisateurs et les commentaires directs des annonceurs dans notre Gestionnaire de publicités. Notre équipe reste aussi disponible pour recevoir des commentaires pendant le développement et écoute directement les besoins des utilisateurs de ChatGPT et des annonceurs. Cette source de rétroaction oriente notre travail encore plus que les observations du modèle et nous a aidés à arriver rapidement, par itérations, aux bonnes décisions produit. Le modèle peut comprendre l’intention de l’utilisateur et faire preuve d’esprit critique pour offrir quelque chose d’utile, mais ce sont les gens qui façonnent le goût.
Il y a un an, nous n’avions aucun système publicitaire et seules quelques personnes réfléchissaient à ces enjeux. Aujourd’hui, notre système publicitaire robuste génère plus d’un milliard de dollars de revenus en rythme annualisé, avec un orchestrateur fondé sur un LLM qui exécute le processus publicitaire. Codex a été un levier fondamental qui nous a permis de bâtir notre système et d’atteindre ce jalon majeur d’utilisation à une vitesse sans précédent. Dès le départ, nous avons organisé l’équipe et les flux de développement pour utiliser Codex afin de créer et de faire évoluer rapidement le système. Nous avons mis en place des garde-fous pour que Codex livre du code de façon fiable et sécuritaire. En parallèle, nous avons créé des modules d’extension d’infrastructure de données pour Codex afin de raccourcir considérablement le cycle entre la collecte d’enseignements et l’intégration d’améliorations au système : nouvelles fonctionnalités, meilleure qualité et performances accrues.
La combinaison des limites de notre système (fondées sur nos principes publicitaires) et de notre orchestrateur fondé sur un LLM nous permet de rendre la publicité utile sans traiter chaque conversation comme une demande publicitaire. Nous continuerons d’expérimenter des formats publicitaires plus dynamiques pour accroître la valeur pour les utilisateurs (p. ex., leur permettre de parler directement aux entreprises par l’entremise des publicités) et pour les annonceurs. L’architecture autoaméliorante de la pile, bâtie sur les modèles OpenAI avec des boucles de rétroaction continues, accélérera notre capacité à améliorer la pertinence et la personnalisation au fil du temps.



