Cómo creamos el novedoso sistema de anuncios de ChatGPT para generar confianza y relevancia
Por Ritendra Datta y Karthik Gopalratnam, miembros del equipo técnico
Los sistemas publicitarios tradicionales están diseñados para responder a señales puntuales de la intención del usuario. Un usuario busca o ve algo en línea, el sistema de anuncios recibe esas consultas y visitas a páginas como eventos, y busca anuncios que coincidan con ellos. Crear una infraestructura publicitaria para ChatGPT fue diferente: la intención del usuario se desarrolla a lo largo de las conversaciones y cambia durante sus distintos turnos, a veces sin que surja un momento adecuado para la publicidad. Para dar soporte a este nuevo paradigma, creamos un sistema de entrega de anuncios a medida. Este nuevo tipo de infraestructura publicitaria se basa en un LLM de vanguardia personalizado y posentrenado que llama a herramientas para la recuperación (identificar las mejores opciones), la clasificación (predecir la interacción del usuario), la relevancia (evaluar la utilidad del anuncio) y la ejecución de subastas para la selección final del anuncio y la fijación de su precio.
Nuestro sistema de anuncios se adapta a los matices de los objetivos cambiantes del usuario gracias a tres decisiones clave de diseño: 1) implementar sesiones de anuncios con estado, que recuerdan información entre turnos de una conversación y entre distintas conversaciones; 2) usar un LLM personalizado y posentrenado con una arquitectura de llamadas a herramientas para interpretar el contexto y la intención subyacente de una conversación, y luego seleccionar, clasificar y entregar anuncios de manera eficaz; y 3) ejecutar la selección de anuncios por separado de la generación de respuestas de ChatGPT, en un servicio propio, para evitar que los anuncios influyan en las respuestas y mantener la neutralidad de la voz de ChatGPT. Usamos nuestro LLM posentrenado para orquestar todo el flujo de anuncios y determinar cuál mostrar y en qué momento, según el turno actual del usuario y su historial de conversaciones. Aunque antes se necesitaban años para poner en marcha un sistema de anuncios con capacidad de automejora como este, ChatGPT Anuncios alcanzó un ritmo anualizado de ingresos de 1000 millones de dólares en menos de 200 días desde su lanzamiento. Desde entonces, más de 100 000 anunciantes han publicado anuncios en ChatGPT.
Una solicitud publicitaria convencional suele comenzar con un evento bien definido. Un usuario envía una consulta de búsqueda o abre una página web, y el sistema de anuncios recibe una solicitud. Este tipo de sistema es bastante sencillo: recupera posibles anuncios candidatos, los clasifica, ejecuta una subasta para fijar un precio adecuado a la oportunidad y muestra al usuario el anuncio resultante. En ChatGPT no surge de forma natural un momento tan concreto.
En una conversación con ChatGPT, las personas llegan con objetivos, no con una consulta de búsqueda que se resuelve con una sola respuesta. Quizás estén planificando un viaje, eligiendo software para su empresa, amueblando una casa o aprendiendo un nuevo pasatiempo. Todo esto no sucede en un solo turno de la conversación. A menudo, ChatGPT ayuda al usuario a aclarar qué es importante a medida que avanza.
Por ejemplo, nuestro equipo de ingeniería le preguntó a ChatGPT cómo entrenar para una carrera: la conversación comienza con una pregunta general sobre correr. Varios turnos después, preguntan sobre calzado para entrenar. El sentido comercial de la conversación cambia con cada nueva condición, y este contexto personalizado evoluciona a lo largo de varias sesiones. Un sistema que actuara a partir del primer mensaje podría recuperar anuncios para una intención totalmente equivocada, lo que podría empeorar la experiencia del usuario y entorpecerla.
Crear nuestro sistema de anuncios nos exigió ir más allá de la arquitectura publicitaria de solicitud-respuesta y construir una infraestructura desde cero para encontrar posibles oportunidades económicas sin dejar de priorizar la confianza del usuario y el valor que recibe.
Convertir cada mensaje en una solicitud independiente, como en un sistema de anuncios tradicional, habría planteado varios riesgos en nuestro caso de uso del chat: 1) interpretar mal el objetivo del usuario por simplificarlo demasiado; 2) iniciar el flujo publicitario antes de que su necesidad real esté clara; 3) mostrar anuncios que obstaculicen su experiencia en lugar de acompañarla; y 4) volver a ejecutar de forma ineficiente el flujo de anuncios cada vez que cambie la solicitud, generando ruido y gastos innecesarios. En lugar de basarse en eventos individuales, el sistema de anuncios (compuesto por recuperación, clasificación y entrega) mantiene una sesión con estado. Esto significa que la sesión de anuncios permanece activa durante todo un turno elegible, recordando y actualizando la información a medida que evoluciona. ChatGPT envía el contexto inicial de la solicitud al servidor de anuncios. El sistema de anuncios sigue el intercambio y se adapta a su evolución, en lugar de depender de una única consulta simplificada.
El proceso de selección de anuncios se ejecuta en paralelo a la generación normal de respuestas de ChatGPT para garantizar que el flujo publicitario no influya en ellas. Los anuncios se filtran y seleccionan mediante un sistema independiente que procesa la conversación bajo sus propias restricciones de elegibilidad, calidad y entrega. Esta importante separación arquitectónica —servicios distintos que usan modelos y código independientes— permite que los servidores centrales de ChatGPT se encarguen de generar la respuesta orgánica. Mientras tanto, el sistema de anuncios evalúa por su cuenta si existe una oportunidad publicitaria adecuada y, de ser así, prepara un anuncio patrocinado mediante un proceso de publicación independiente.
La publicidad se ejecuta en paralelo a la ruta de respuesta de ChatGPT.
Además de proteger la experiencia del usuario, esta separación tiene algunas consecuencias prácticas. ChatGPT no depende del sistema de anuncios: los servicios no están interconectados de ninguna manera ni comparten un modelo de generación de contenido. Así, si el sistema de publicación de anuncios no está disponible o funciona con lentitud, la respuesta orgánica de ChatGPT no se ve afectada. Esto significa que el sistema de anuncios no puede interrumpir ni retrasar el funcionamiento de ChatGPT. La otra ventaja de esta separación es que mantiene un nivel de exigencia muy alto para que los anuncios aporten valor. No devolver ningún anuncio es un resultado normal y satisfactorio. El sistema solo entrega un anuncio si beneficia claramente a los usuarios y a los anunciantes.
El otro componente arquitectónico clave de nuestra infraestructura publicitaria es el LLM posentrenado que interpreta las conversaciones y ejecuta todo el flujo de anuncios en un ciclo agéntico: llama a herramientas para acceder a las funciones centrales del sistema de anuncios, desde la recuperación y la clasificación hasta la subasta y, finalmente, la entrega. A este LLM lo llamamos orquestador.
La primera parte de un flujo de anuncios consiste en entender la intención del usuario para iniciar el proceso de recuperación: una búsqueda rápida y deliberadamente amplia de posibles anuncios que luego se filtrarán. Recibir la conversación de forma incremental plantea un problema de recuperación más rico, pero también más ambiguo, porque el sistema de anuncios debe distinguir la intención actual del contexto que ya perdió vigencia. El orquestador debe interpretar las referencias a mensajes anteriores, reconocer cuándo un usuario habla de forma hipotética y evitar tratar cada mención de un producto o servicio como una solicitud de compra.
El orquestador de anuncios usa la conversación y el contexto del usuario disponibles, y realiza iteraciones para encontrar buenos anuncios. En cada paso, decide cuándo llamar a cada herramienta con el objetivo de encontrar el anuncio más adecuado para esa conversación y ese contexto: uno que equilibre un alto valor para el usuario y para el anunciante. Si el usuario elige personalizar los anuncios, el orquestador también considera la información no sensible disponible sobre sus conversaciones anteriores para encontrar los anuncios más adecuados.
El orquestador de anuncios llama de forma iterativa a herramientas de entrega para encontrar anuncios que aporten valor.
A medida que avanza la conversación y el orquestador de anuncios recibe información más reciente, puede ejecutar una nueva serie de llamadas a herramientas con el contexto actualizado para encontrar mejores anuncios y devolverlos al cliente, que podrá usarlos si llegan a tiempo.
El orquestador está diseñado para equilibrar el valor para el usuario y para el anunciante, siempre dando prioridad a los usuarios.
El sistema de anuncios consta de herramientas individuales, y el orquestador las llama de forma iterativa para encontrar los mejores anuncios para una conversación. En términos generales, el orquestador convierte las conversaciones en breves resúmenes de texto que luego se transforman en embeddings semánticos (significados almacenados que un sistema de anuncios puede examinar con mayor facilidad). Con esos embeddings recupera anuncios candidatos, los filtra según su elegibilidad (en función del presupuesto, la configuración del usuario y otras verificaciones preliminares), evalúa su calidad y relevancia, y realiza una clasificación final para identificar oportunidades de alto valor para mostrar anuncios al final de una respuesta del chat. Por lo tanto, cada anuncio debe cumplir criterios estrictos de elegibilidad y relevancia para poder mostrarse.
Primero, el LLM orquestador prepara una o más consultas que representan la intención comercial relevante. Esto puede incluir reformular el contexto de la conversación para ampliar las posibilidades comerciales más allá de las consultas de búsqueda con correspondencia uno a uno, y luego crear representaciones semánticas. En ellas, el orquestador condensa una conversación de varios turnos en una versión resumida para el sistema de recuperación, lo que permite recuperar anuncios de nuestra base de datos de forma focalizada.
Los anuncios serán mejores tanto para los usuarios como para los anunciantes si solo se muestran cuando existe una comprensión profunda de la intención del usuario. Usar varias consultas permite conservar distintos aspectos de la intención. Por ejemplo, una conversación sobre la planificación de un viaje puede incluir necesidades diferentes de transporte, alojamiento o actividades. El sistema de recuperación puede conservar estas distinciones en lugar de comprimir toda la conversación en una sola cadena de texto literal.
Como ejemplo, veamos una posible secuencia de conversación sobre calzado de senderismo:
¿Qué debería visitar en un viaje de dos días a Yosemite?
¿Hará frío la próxima semana?
¿Nuevas líneas de productos de [insertar marca]?
Aunque el usuario no haya vinculado la pregunta sobre la marca de calzado con el viaje a Yosemite, nuestro sistema de anuncios podría representar esta conversación mediante dos consultas, como [calzado adecuado para una excursión de senderismo] y [nuevas líneas de productos de [marca] adecuadas para viajar]. Este podría ser solo el primer intento; el orquestador está diseñado para iterar sobre estas representaciones hasta encontrar anuncios en nuestro inventario que aporten mucho valor al usuario.
La recuperación es el proceso de crear un conjunto deliberadamente amplio de opciones de anuncios. Los candidatos pueden provenir de distintas estrategias de recuperación y luego competir bajo las mismas restricciones de publicación. Creamos varios índices optimizados para distintas restricciones del sistema y del producto. Por ejemplo, el índice de anuncios de feeds de productos está diseñado para tener en cuenta las reseñas positivas o negativas al recuperar los mejores anuncios posibles. Esto no es relevante para otros anuncios que podrían no tener reseñas asociadas. Cada índice está optimizado para alguna variante de búsqueda aproximada de vecinos más cercanos (ANN), que usa embeddings que representan la intención del usuario. Esta búsqueda ANN es un algoritmo de aproximación para recuperar información en grandes índices semánticos. Esto permite obtener anuncios muy rápido, acercándose a una buena solución en lugar de buscar “la correcta”, sin dejar de conservar la mayoría de los candidatos relevantes.
El sistema de anuncios usa consultas reformuladas para crear embeddings semánticos durante el proceso de recuperación y generar un amplio conjunto de anuncios candidatos.
El objetivo del filtrado es descartar todos los anuncios candidatos que no cumplen los requisitos de relevancia, pujas y presupuesto para mostrarse. Según el candidato y la configuración, el filtrado puede verificar la disponibilidad de la campaña y las piezas publicitarias (si están activas), la segmentación de la campaña (por ejemplo, en qué regiones e idiomas puede operar), las restricciones de las políticas (requisitos sobre lo que se puede anunciar), la disponibilidad de presupuesto (si la campaña aún tiene presupuesto para gastar), el ritmo de gasto (si conviene gastar presupuesto ahora o en otro momento del día), la compatibilidad de la ubicación (en qué tipos de conversaciones puede mostrarse el anuncio) y la deduplicación por anunciante y campaña (seleccionar una cantidad adecuada de anuncios por anunciante para garantizar una participación equitativa entre empresas).
Los candidatos que superan las verificaciones de elegibilidad pasan a una fase de puntuación, en la que el orquestador llama a herramientas de distintos sistemas para evaluar aspectos de la publicación, como la relevancia semántica (¿el anuncio es relevante para el objetivo del usuario?), la interacción prevista (¿es probable que el anuncio se vea, reciba clics y genere el resultado que busca el anunciante?) y el rendimiento histórico (¿el anuncio ha tenido buenos resultados al mostrarse a los usuarios hasta ahora?). El orquestador también filtra los anuncios para garantizar su relevancia y seguridad antes de la subasta. Estos sistemas reducen las opciones a un conjunto más pequeño de candidatos listos para la subasta, pero aún no determinan qué anuncio se entregará finalmente.
El orquestador evalúa los candidatos preparados en el contexto de la conversación y elige cuáles son lo suficientemente adecuados para participar en la subasta final. El orquestador no decide directamente qué anuncio se publicará ni fija un precio. Propone candidatos adecuados para el contexto, que luego evalúa la herramienta de subasta.
La subasta aplica los mecanismos finales de publicación, como la admisión a la subasta (superar un umbral mínimo de relevancia y valor), el ritmo de gasto (distribuir el presupuesto publicitario de manera más uniforme), el cálculo de pujas y de variables de la subasta, la clasificación ajustada por calidad, la fijación de precios y la selección final.
Después de la subasta, hay dos motivos por los que un anuncio podría no entregarse, ambos propios del entorno conversacional de ChatGPT.
El anuncio podría resultar inapropiado en el chat: aunque los modelos de integridad (los que deciden cuándo es apropiado publicar un anuncio) hayan considerado segura la conversación para mostrar publicidad y el anuncio cumpla las políticas, a veces puede resultar inapropiado en el contexto de ciertas conversaciones. El orquestador impide que se muestren esos anuncios.
La solicitud de anuncio podría no llegar a tiempo: si el modelo de ChatGPT está listo para responder, pero el anuncio aún no está listo para mostrarse, la solicitud de anuncio agota su tiempo de espera y el anuncio no se entrega. Por eso, uno de los objetivos del sistema de anuncios es funcionar lo más rápido posible. El tiempo de respuesta del modelo de ChatGPT es dinámico, y no retrasamos las respuestas del chat para esperar a que se carguen los anuncios.
Si se superan todas las verificaciones anteriores, enviamos el anuncio al frontend para que lo renderice. Consideramos que esto es una entrega del anuncio del lado del servidor, pero aun así podríamos no mostrárselo al usuario, y es así por diseño.
En un producto conversacional como ChatGPT, la entrega de una pieza publicitaria del lado del servidor no garantiza que se muestre el anuncio; también debe llegar a tiempo para incluirse en el turno actual. La pieza publicitaria incluye el título, la descripción, el enlace de destino y cualquier llamada a la acción. Además, el sistema de anuncios devuelve un preámbulo generado por un modelo: una introducción breve y neutral que explica cómo se relaciona el anuncio con la conversación. Separar el preámbulo de la pieza publicitaria preserva el mensaje del anunciante y mantiene la neutralidad de la voz de ChatGPT.
El frontend de ChatGPT recibe el preámbulo y la pieza publicitaria como un solo paquete. Si llega antes de que termine de generarse la respuesta de ChatGPT, el frontend muestra el anuncio debajo de la respuesta, claramente identificado como patrocinado. Si llega demasiado tarde, el anuncio no se muestra en ese turno. Esta es la diferencia entre la entrega de un anuncio del lado del servidor y una impresión publicitaria visible para el usuario.
La selección del ganador y la entrega son eventos independientes. Un anuncio seleccionado solo se considera entregado una vez que ChatGPT aprueba su publicación, lo muestra y se confirma la entrega.
Nuestra infraestructura publicitaria usa sistemas tradicionales de registro y procesamiento de datos, que ofrecen tres ventajas principales: los anunciantes pueden integrar sus sistemas existentes con mayor facilidad, mejorar sus estrategias con los datos de los informes, y nuestro equipo puede identificar áreas del sistema que necesitan mejoras. Además de estas herramientas de informes y optimización, implementamos un modelo de alta calidad para evaluar la entrega de anuncios y entrenar otros modelos publicitarios, lo que crea un potente ciclo de automejora.
Los desgloses detallados de lo ocurrido nos ayudan a entender y mejorar cada parte del sistema de anuncios por separado. El sistema de procesamiento de registros también captura resultados específicos, como los siguientes:
El turno no era elegible para mostrar publicidad.
Se inició una sesión de anuncios, pero no se solicitó la recuperación.
La búsqueda no encontró candidatos.
Se recuperaron candidatos, pero no se pudieron completar sus datos o no cumplían con los requisitos.
Se entregó un anuncio y luego recibió una interacción.
Estos desgloses detallados nos ayudan a mejorar cada parte del sistema de publicación de anuncios por separado. Mejorar la detección de oportunidades requiere evidencia distinta de la necesaria para mejorar la recuperación, la calidad de los candidatos, la participación en subastas o la confiabilidad de la entrega.
Los sistemas de entrega, publicación y calidad observan distintas partes del ciclo de vida. El procesamiento sujeto a controles de privacidad determina qué datos pueden usarse para la medición y la mejora de modelos.
La idea de la evaluación basada en modelos es que nuestros modelos más potentes y con mayor capacidad de razonamiento observen y evalúen los resultados del sistema, y luego mejoren el LLM posentrenado mediante entrenamiento para que rinda mejor. Por ejemplo, podemos usar modelos más pequeños y eficientes, o con menor capacidad de razonamiento, para la orquestación o la recuperación si nuestro modelo más potente recopila comentarios y entrena a estos modelos pequeños para que hagan el mejor trabajo posible.
Recopilamos comentarios humanos y actuamos en función de ellos: clics y anuncios ocultados por los usuarios, encuestas a usuarios y comentarios directos de los anunciantes a través de nuestro Gestor de anuncios. Nuestro equipo también está disponible para recibir comentarios durante el desarrollo, y escuchamos directamente lo que quieren tanto los usuarios de ChatGPT como los anunciantes. Esta fuente de comentarios orienta nuestro rumbo incluso más que las observaciones del modelo, y es parte de lo que nos permitió iterar rápidamente hasta tomar las decisiones de producto adecuadas. El modelo puede ser capaz de entender la intención del usuario y pensar de forma crítica para ofrecer algo valioso, pero son las personas quienes definen el buen gusto.
Hace un año, no teníamos un sistema de anuncios y solo unas pocas personas estaban explorando este ámbito. Ahora tenemos un sistema de anuncios robusto que genera ingresos a un ritmo anualizado de más de 1000 millones de dólares, con un orquestador basado en un LLM que ejecuta el flujo de anuncios. Codex fue fundamental y multiplicó nuestra capacidad para poner en marcha el sistema y alcanzar este importante hito de uso con una rapidez sin precedentes. Desde el principio, organizamos el equipo y los flujos de trabajo de desarrollo para usar Codex y así crear y escalar el sistema rápidamente. Creamos salvaguardas para que Codex pudiera llevar código a producción de forma confiable y segura. En paralelo, configuramos complementos de infraestructura de datos para Codex que aceleraron enormemente el ciclo de obtención de información e implementación de mejoras en el sistema, incluidas nuevas funciones de producto, mejoras de calidad y un mayor rendimiento.
La combinación de los límites de nuestro sistema (basados en nuestros principios publicitarios) y nuestro orquestador basado en un LLM nos permite hacer que la publicidad sea útil sin tratar cada conversación como una solicitud de anuncio. De cara al futuro, seguiremos experimentando con formatos publicitarios más dinámicos para aumentar el valor para el usuario (por ejemplo, permitiéndole hablar directamente con las empresas a través de los anuncios) y para el anunciante. La arquitectura de automejora de esta infraestructura, construida sobre modelos de OpenAI con ciclos continuos de retroalimentación, acelerará nuestra capacidad de seguir mejorando la relevancia y la personalización con el tiempo.



