Como criámos o novo sistema de anúncios do ChatGPT para garantir confiança e relevância
Por Ritendra Datta e Karthik Gopalratnam, membros da equipa técnica
Os sistemas de publicidade tradicionais são concebidos para responder a manifestações isoladas da intenção do utilizador. Um utilizador pesquisa ou vê algo online, o sistema de anúncios recebe essas pesquisas e visualizações de páginas como eventos e procura anúncios correspondentes com base nesses eventos. Criar uma infraestrutura de anúncios para o ChatGPT foi diferente: a intenção do utilizador desenvolve-se ao longo das conversas e muda ao longo de várias interações, por vezes sem surgir um momento adequado para publicidade. Para dar resposta a este novo paradigma, criámos um sistema de entrega de anúncios à medida. Este novo tipo de infraestrutura de anúncios baseia-se num LLM de fronteira personalizado e pós-treinado, que faz chamadas de ferramentas para recuperação (identificar as melhores opções), ordenação (prever a interação dos utilizadores), relevância (avaliar a utilidade do anúncio) e realização de leilões para a seleção final do anúncio e a definição do preço.
O nosso sistema de anúncios acompanha as nuances dos objetivos em evolução dos utilizadores graças a três decisões essenciais de conceção: 1) implementar sessões de anúncios com estado persistente, conservando informações entre interações da mesma conversa e entre várias conversas; 2) usar um LLM personalizado e pós-treinado, com uma arquitetura de chamadas de ferramentas, para interpretar o contexto e a intenção subjacente de uma conversa e, depois, selecionar, ordenar e entregar anúncios de forma eficaz; e 3) executar o processo de seleção de anúncios separadamente da geração de respostas do ChatGPT, num serviço próprio, para impedir que os anúncios influenciem as respostas e manter a voz neutra do ChatGPT. Usamos o nosso LLM pós-treinado para orquestrar todo o fluxo de anúncios, determinando o anúncio certo a mostrar no momento certo, com base tanto na interação atual do utilizador como no histórico da conversa. Embora criar de raiz um sistema de anúncios com melhoria autónoma como este costumasse demorar anos, o ChatGPT Ads atingiu um ritmo de receitas anualizado de mil milhões de dólares menos de 200 dias após o lançamento; desde o lançamento, mais de 100 000 anunciantes já publicaram anúncios no ChatGPT.
Um pedido de publicidade convencional começa geralmente com um evento bem definido. Um utilizador faz uma pesquisa ou abre uma página Web e o sistema de anúncios recebe um pedido. Este tipo de sistema é relativamente simples: recupera potenciais anúncios candidatos, ordena-os, realiza um leilão para atribuir um preço adequado à oportunidade e mostra o anúncio resultante ao utilizador. O ChatGPT não gera naturalmente um momento tão concreto.
Numa conversa com o ChatGPT, as pessoas chegam com objetivos, e não com uma pesquisa à qual basta uma resposta. Podem estar a planear uma viagem, a escolher software para a sua empresa, a mobilar uma casa ou a aprender um novo passatempo. Tudo isto não acontece numa única interação da conversa. Muitas vezes, o ChatGPT ajuda o utilizador a esclarecer o que é importante ao longo da conversa.
Por exemplo, a nossa equipa de engenharia perguntou ao ChatGPT como treinar para uma prova: a conversa começa com uma pergunta geral sobre corrida. Várias interações depois, a equipa pergunta sobre calçado para ajudar no treino. O significado comercial da conversa muda à medida que surge cada novo requisito, e este contexto personalizado evolui ao longo de várias sessões. Um sistema que agisse logo com a primeira mensagem poderia interpretar a intenção de forma totalmente errada, prejudicando a experiência do utilizador e atrapalhando-o.
Para criar o nosso sistema de anúncios, tivemos de ir além da arquitetura publicitária de pedido-resposta e construir uma infraestrutura de raiz que identificasse potenciais oportunidades económicas, dando prioridade à confiança do utilizador e ao valor que lhe proporcionamos.
Transformar cada mensagem num pedido independente, como num sistema de anúncios tradicional, teria alguns riscos no nosso contexto de conversa: 1) interpretar mal o objetivo do utilizador por o simplificar demasiado; 2) iniciar o fluxo publicitário cedo demais, antes de a verdadeira necessidade do utilizador se tornar clara; 3) mostrar anúncios que atrapalham o percurso do utilizador em vez de o apoiar; e 4) voltar a executar o fluxo de anúncios de forma ineficiente sempre que o pedido muda, gerando ruído e custos desnecessários. Em vez de se basear em eventos individuais, o sistema de anúncios (composto por recuperação, ordenação e entrega) mantém uma sessão com estado persistente. Isto significa que a sessão de anúncios decorre durante uma interação elegível, conservando e atualizando a informação à medida que esta evolui. O ChatGPT envia o contexto inicial do pedido para o servidor de anúncios. O sistema de anúncios acompanha a evolução da conversa e adapta-se a ela, em vez de depender de uma única consulta simplificada.
O processo de seleção de anúncios decorre em paralelo com a geração normal de respostas do ChatGPT, para garantir que o fluxo de anúncios não influencia as respostas. Os anúncios são filtrados e selecionados por um sistema separado, que processa a conversa segundo as suas próprias restrições de elegibilidade, qualidade e entrega. Esta importante separação arquitetural — serviços distintos que usam modelos e código separados — permite que os servidores centrais do ChatGPT se encarreguem de gerar a resposta orgânica. Entretanto, o sistema de anúncios avalia de forma independente se existe uma oportunidade publicitária adequada e, em caso afirmativo, prepara uma inserção patrocinada através de um processo de apresentação separado.
A publicidade funciona em paralelo com o percurso de resposta do ChatGPT.
Além de proteger a experiência do utilizador, esta separação tem algumas consequências práticas. O ChatGPT não depende do sistema de anúncios: os serviços não estão de modo algum interligados nem partilham um modelo de geração de conteúdo. Assim, se o sistema de apresentação de anúncios estiver indisponível ou lento, a resposta orgânica do ChatGPT não é afetada. Isto significa que o sistema de anúncios não pode interromper nem atrasar o funcionamento do ChatGPT. Outra vantagem desta separação é manter um nível de exigência muito elevado quanto ao valor dos anúncios. Não devolver nenhum anúncio é um resultado normal e bem-sucedido. O sistema só entrega um anúncio se este for claramente benéfico para utilizadores e anunciantes.
O outro componente arquitetural essencial da nossa infraestrutura de anúncios é o LLM pós-treinado que interpreta as conversas e executa todo o fluxo de anúncios num ciclo agêntico, fazendo chamadas de ferramentas às funções centrais do sistema de anúncios, desde a recuperação até à ordenação, ao leilão e, por fim, à entrega. Chamamos orquestrador a este LLM.
A primeira etapa de um fluxo de anúncios consiste em compreender a intenção do utilizador para iniciar o processo de recuperação: uma recolha rápida e deliberadamente ampla de potenciais anúncios a filtrar mais tarde. Receber a conversa de forma incremental torna o problema da recuperação mais rico, mas também mais ambíguo, pois o sistema de anúncios tem de distinguir a intenção atual do contexto desatualizado. O orquestrador tem de interpretar referências a mensagens anteriores, reconhecer quando o utilizador está a falar de forma hipotética e evitar tratar cada menção a um produto ou serviço como um pedido de compra.
O orquestrador de anúncios usa a conversa e o contexto do utilizador disponíveis, procurando bons anúncios de forma iterativa e escolhendo sucessivamente quando invocar cada ferramenta. O objetivo é encontrar o anúncio mais adequado à conversa e ao contexto, equilibrando um elevado valor para o utilizador e para o anunciante. Se o utilizador optar por personalizar os anúncios, o orquestrador também considera as informações não sensíveis disponíveis sobre as suas conversas anteriores para encontrar os anúncios mais adequados.
O orquestrador de anúncios invoca ferramentas de entrega de anúncios de forma iterativa para encontrar anúncios de valor.
À medida que a conversa avança e o orquestrador de anúncios recebe informações mais recentes, pode executar um novo conjunto de chamadas de ferramentas com o contexto atualizado para encontrar melhores anúncios e devolvê-los à aplicação cliente, que os pode usar se chegarem a tempo.
O orquestrador foi concebido para equilibrar o valor para o utilizador e para o anunciante, dando sempre prioridade aos utilizadores.
O sistema de anúncios é composto por ferramentas individuais, que o orquestrador invoca de forma iterativa para encontrar os melhores anúncios para uma conversa. Em termos gerais, o orquestrador transforma as conversas em breves resumos de texto, que são depois convertidos em representações vetoriais semânticas (significados armazenados que o sistema de anúncios consegue analisar mais facilmente). Usa essas representações para recuperar anúncios candidatos, filtra-os quanto à elegibilidade (com base no orçamento, nas definições do utilizador e noutras verificações preliminares), avalia a sua qualidade e relevância e faz uma ordenação final para identificar oportunidades de elevado valor para inserção no final de uma resposta. Por isso, cada anúncio tem de cumprir critérios exigentes de elegibilidade e relevância para poder ser apresentado.
O LLM orquestrador começa por preparar uma ou mais consultas que representam a intenção comercial relevante. Isto pode incluir reformular o contexto da conversa para alargar as possibilidades comerciais para além das pesquisas com correspondência direta e, depois, criar representações semânticas. Neste processo, o orquestrador condensa uma conversa com várias interações numa versão resumida para o sistema de recuperação, permitindo recuperar anúncios da nossa base de dados de forma direcionada.
As inserções publicitárias serão melhores tanto para os utilizadores como para os anunciantes se só surgirem quando houver uma compreensão profunda da intenção do utilizador. Usar várias consultas permite preservar diferentes aspetos da intenção. Por exemplo, uma conversa sobre planear uma viagem pode conter necessidades distintas relacionadas com transportes, alojamento ou atividades. O sistema de recuperação pode preservar estas distinções, em vez de condensar toda a conversa numa única cadeia de texto literal.
Como exemplo, vejamos uma possível sequência de conversa sobre calçado de caminhada:
What should I cover on a two-day trip to Yosemite?
Will it be cold next week?
New [insert brand] product lines?
Embora o utilizador não tenha associado a pergunta sobre a marca de calçado à viagem a Yosemite, esta conversa pode ser representada no nosso sistema de anúncios por duas consultas, como [shoes appropriate for hiking trip] e [new [brand] product lines good for travel]. Esta pode ser apenas a primeira tentativa; o orquestrador foi concebido para aperfeiçoar estas representações de forma iterativa até encontrar, no nosso inventário, anúncios de grande valor para o utilizador.
A recuperação é o processo de criar um conjunto deliberadamente alargado de opções de anúncios. Os candidatos podem resultar de diferentes estratégias de recuperação e, mais tarde, competir sob as mesmas restrições de apresentação. Criamos vários índices otimizados para diferentes restrições do sistema e do produto. Por exemplo, o índice de anúncios de feeds de produtos foi concebido para ter em conta avaliações positivas ou negativas dos produtos ao procurar os melhores anúncios possíveis. Isto não se aplica a outros anúncios que possam não ter avaliações associadas. Cada índice é otimizado para uma variante da pesquisa aproximada de vizinhos mais próximos (ANN), usando representações vetoriais da intenção do utilizador. Esta pesquisa ANN é um algoritmo de aproximação para recuperação em grandes índices semânticos. Permite obter anúncios muito rapidamente, aproximando-se de uma boa solução em vez de procurar «a solução certa», e preservando a maioria dos candidatos relevantes.
O sistema de anúncios usa consultas reformuladas para criar representações vetoriais semânticas durante o processo de recuperação de anúncios e produzir um conjunto alargado de anúncios candidatos.
A filtragem visa excluir todos os anúncios candidatos que não cumpram os critérios de apresentação em termos de relevância, lances e orçamento. Consoante o candidato e a configuração, a filtragem pode verificar a disponibilidade dos materiais publicitários e da campanha (se estão ativos), a segmentação da campanha (por exemplo, em que regiões e idiomas pode operar), as restrições das políticas (requisitos de conformidade sobre o que pode ser anunciado), a disponibilidade de orçamento (se a campanha ainda tem orçamento para gastar), o ritmo de despesa (se a campanha deve gastar orçamento agora ou noutra altura do dia), a compatibilidade da inserção (em que tipos de conversa este anúncio pode aparecer) e a desduplicação ao nível do anunciante e da campanha (escolhendo um número adequado de anúncios por anunciante para garantir uma participação equitativa das empresas).
Os candidatos que passam nas verificações de elegibilidade avançam para uma fase de pontuação, na qual o orquestrador faz chamadas de ferramentas a vários sistemas de pontuação. Estes avaliam fatores de apresentação como a relevância semântica (o anúncio é relevante para o objetivo do utilizador?), a interação prevista (é provável que o anúncio seja visto, receba cliques e gere o resultado pretendido pelo anunciante?) e o desempenho histórico (o anúncio tem tido bons resultados quando é mostrado aos utilizadores?). O orquestrador também filtra os anúncios para garantir a relevância e a segurança antes do leilão. Estes sistemas reduzem as opções a um conjunto mais pequeno de candidatos prontos para o leilão, mas ainda não determinam qual será o anúncio entregue.
O orquestrador avalia os candidatos preparados no contexto da conversa e escolhe os que são suficientemente adequados para entrar no leilão final. O orquestrador não decide diretamente que anúncio será apresentado nem define um preço. Propõe candidatos adequados ao contexto para serem avaliados pela ferramenta de leilão.
O leilão aplica os mecanismos finais de apresentação, incluindo a admissão ao leilão (cumprir um limiar mínimo de relevância e valor), o ritmo de despesa (distribuir os gastos do orçamento publicitário de forma mais uniforme), o cálculo dos lances e das variáveis do leilão, a ordenação ajustada à qualidade, a definição de preços e a seleção final.
Após o leilão, há duas razões pelas quais um anúncio pode não ser entregue, ambas específicas do formato conversacional do ChatGPT.
O anúncio pode parecer inadequado na conversa: mesmo que os modelos de integridade (os modelos que decidem quando é apropriado apresentar um anúncio) tenham considerado a conversa segura para publicidade e que o anúncio cumpra as políticas, este pode, por vezes, parecer inadequado no contexto de determinadas conversas. O orquestrador impede que estes anúncios sejam mostrados.
O pedido de anúncio pode não chegar a tempo: se o modelo do ChatGPT estiver pronto para responder, mas o anúncio ainda não estiver pronto para inserção, o pedido de anúncio excede o tempo limite e o anúncio não é entregue. Por isso, um dos objetivos do sistema de anúncios é funcionar o mais depressa possível. O tempo de resposta do modelo do ChatGPT é dinâmico, e não atrasamos as respostas da conversa para esperar que os anúncios sejam carregados.
Se todas as verificações acima forem cumpridas, enviamos o anúncio para o frontend para ser renderizado. Consideramos isto uma entrega de anúncio do lado do servidor, mas ainda assim podemos não mostrar o anúncio ao utilizador — e isso é intencional.
Num produto conversacional como o ChatGPT, a entrega de um material publicitário do lado do servidor não garante que o anúncio seja mostrado; este também tem de chegar a tempo de ser incluído na interação atual. O material publicitário inclui o título, a descrição, a ligação de destino e qualquer apelo à ação. Além disso, o sistema de anúncios também devolve um preâmbulo gerado pelo modelo: uma introdução breve e neutra que explica a relação do anúncio com a conversa. Manter o preâmbulo separado do material publicitário preserva a mensagem do anunciante e mantém a voz do ChatGPT neutra.
O frontend do ChatGPT recebe o preâmbulo e o material publicitário num único pacote. Se o pacote chegar antes de a resposta do ChatGPT estar totalmente gerada, o frontend mostra o anúncio por baixo da resposta do ChatGPT, claramente identificado como patrocinado. Se chegar demasiado tarde, o anúncio não é mostrado nessa interação. Esta é a diferença entre a entrega de um anúncio do lado do servidor e uma impressão publicitária visível para o utilizador.
A seleção do vencedor e a entrega são eventos distintos. Um anúncio selecionado só conta como entregue depois de o ChatGPT aprovar e mostrar a inserção publicitária e de a entrega ser confirmada.
A nossa infraestrutura de publicidade usa mecanismos tradicionais de registo e processamento de dados, com três vantagens principais: os anunciantes podem integrar mais facilmente os seus sistemas existentes com a nossa infraestrutura, melhorar as suas estratégias com os dados dos relatórios, e a nossa equipa pode identificar áreas do sistema a melhorar. Além destas ferramentas de relatórios e otimização, usamos um modelo de elevada qualidade para avaliar a entrega de anúncios e treinar outros modelos de publicidade, criando um poderoso ciclo de melhoria autónoma.
As análises detalhadas do que aconteceu ajudam-nos a compreender e melhorar cada parte do sistema de anúncios de forma isolada. O sistema de processamento de registos também documenta resultados específicos, como:
A interação não era elegível para publicidade.
Foi iniciada uma sessão de anúncios, mas não foi solicitada nenhuma recuperação.
A recuperação não devolveu candidatos.
Foram recuperados candidatos, mas estes falharam na hidratação ou na verificação de elegibilidade.
Um anúncio foi entregue e, mais tarde, recebeu uma interação.
Estas análises detalhadas ajudam-nos a melhorar cada parte do sistema de apresentação de anúncios de forma isolada. Melhorar a deteção de oportunidades exige dados diferentes dos necessários para melhorar a recuperação, a qualidade dos candidatos, a participação no leilão ou a fiabilidade da entrega.
Os sistemas de entrega, apresentação e qualidade observam, cada um, uma parte diferente do ciclo de vida. O processamento sujeito a controlos de privacidade determina o que pode ser usado para medição e melhoria dos modelos.
A ideia da avaliação baseada em modelos é que os nossos modelos mais capazes e com maior capacidade de raciocínio observem e avaliem os resultados do sistema e, depois, melhorem o LLM pós-treinado, treinando-o para ter um melhor desempenho. Por exemplo, podemos usar modelos mais pequenos e eficientes, ou com menor capacidade de raciocínio, para a orquestração ou a recuperação, desde que o nosso modelo mais poderoso recolha feedback e treine estes modelos menores para executarem as suas tarefas da melhor forma possível.
Recolhemos feedback humano e agimos com base nele: cliques e ocultações de anúncios pelos utilizadores, inquéritos aos utilizadores e feedback direto dos anunciantes através do nosso Gestor de Anúncios. Durante o desenvolvimento, a nossa equipa também está disponível para receber feedback e ouvir diretamente o que pretendem os utilizadores do ChatGPT e os anunciantes. Esta fonte de feedback orienta-nos ainda mais do que o feedback resultante das observações do modelo e contribuiu para que pudéssemos chegar rapidamente às decisões certas para o produto, através de sucessivas melhorias. O modelo pode ser capaz de compreender a intenção do utilizador e pensar de forma crítica para entregar algo valioso, mas são as pessoas que definem o bom gosto.
Há um ano, não tínhamos um sistema de anúncios e apenas algumas pessoas se dedicavam a pensar nesta área. Agora, temos um sistema de anúncios robusto que gera receitas a um ritmo anualizado superior a mil milhões de dólares, com um orquestrador baseado num LLM a gerir o fluxo de anúncios. O Codex foi fundamental para multiplicar a nossa capacidade e permitir-nos criar o sistema de raiz, atingindo este importante marco de utilização com uma rapidez sem paralelo. Desde o início, organizámos a equipa e os fluxos de desenvolvimento para usar o Codex na criação e expansão rápida do sistema. Criámos salvaguardas para o Codex colocar código em produção de forma fiável e segura. Em paralelo, criámos plugins de infraestrutura de dados para o Codex, reduzindo drasticamente o ciclo entre obter informações úteis e implementar melhorias no sistema, incluindo novas funcionalidades do produto, melhorias de qualidade e maior desempenho do sistema.
A combinação dos limites do nosso sistema (assentes nos nossos princípios de publicidade) com o nosso orquestrador baseado num LLM permite-nos tornar a publicidade útil sem tratar cada conversa como um pedido de anúncio. No futuro, continuaremos a experimentar formatos de anúncios mais dinâmicos para aumentar o valor para os utilizadores (por exemplo, permitindo-lhes falar diretamente com as empresas através dos anúncios) e para os anunciantes. A arquitetura de melhoria autónoma da infraestrutura, assente em modelos da OpenAI com ciclos contínuos de feedback, vai acelerar a nossa capacidade de continuar a melhorar a relevância e a personalização ao longo do tempo.



