跳至主要内容
OpenAI

2026年10月21日

工程

我们如何构建兼顾用户信任与广告相关性的 ChatGPT 新型广告技术栈

作者:技术团队成员 Ritendra Datta 和 Karthik Gopalratnam

正在加载…

传统广告系统围绕一个个独立的用户意图片段来构建。用户在线搜索或浏览内容,广告系统将这些查询和页面浏览作为事件接收,再根据这些事件寻找匹配的广告。为 ChatGPT 构建广告技术栈则有所不同:用户意图会在不同对话中逐步形成,也会随着多轮交流发生变化,有时并不存在合适的广告展示时机。为支持这种新范式,我们专门构建了一套广告交付系统。这一新型广告技术栈基于一个经过定制后训练的前沿 LLM。它通过工具调用来完成检索(找出最佳候选项)、排序(预测用户互动)、相关性评估(判断广告是否有用),并进行竞价,以最终选定广告并确定价格。

为了适应用户目标演变中的细微变化,我们在广告系统中做出了三项关键设计决策:1)采用有状态的广告会话,在同一对话的不同轮次以及多个对话之间记住信息;2)依靠经过定制后训练的 LLM,通过工具调用架构理解对话上下文和潜在意图,进而有效地选择、排序和交付广告;3)将广告选择流程作为独立服务运行,与 ChatGPT 的回答生成分离,防止广告影响回答,并保持 ChatGPT 表达的中立性。我们使用经过后训练的 LLM 编排整个广告流程,结合用户当前轮次和历史对话,判断应在什么时机展示什么广告。过去,从零搭建这样一个能够自我改进的广告系统往往需要数年时间,而 ChatGPT Ads 在推出不到 200 天时,按当时营收速度折算的年化收入就已达到 10 亿美元;截至目前,自推出以来已有超过 10 万家广告主在 ChatGPT 上投放过广告。

广告应如何在智能体对话中运作?

传统广告请求通常始于一个明确定义的事件。用户提交搜索查询或打开网页,广告系统便会收到请求。这类系统相对简单:检索潜在的候选广告,对其排序,通过竞价为这次展示机会合理定价,再向用户展示最终选出的广告。ChatGPT 并不会自然地产生这样一个明确的触发时点。

在 ChatGPT 对话中,人们通常带着一个目标而来,而不是一个只需单次回答的搜索查询。他们可能在规划旅行、为企业选择软件、布置家居,或培养新的兴趣爱好。这些事情并不会在一轮对话中全部完成。ChatGPT 往往会在过程中帮助用户厘清重点。

例如,我们的工程团队曾向 ChatGPT 询问如何为一场赛跑进行训练:对话最初只是一个关于跑步的一般性问题。几轮交流之后,他们开始询问适合训练的跑鞋。每增加一个条件,对话所体现的商业需求都会随之变化,而这种个性化上下文还会跨越多个会话持续演变。如果系统仅凭第一条消息就采取行动,检索时可能完全误判意图,进而损害用户体验,妨碍用户完成目标。

因此,构建广告系统要求我们跳出请求 — 响应式广告架构,从零搭建广告技术栈,在优先保障用户信任和用户价值的前提下寻找潜在商业机会。

广告系统保留对话上下文,不影响 ChatGPT 的回答

如果像传统广告系统那样,将每条消息都转化为独立请求,在我们的聊天场景中就会带来几项风险:1)过度简化用户目标,导致误判;2)在用户真正需求尚未明确之前,过早启动广告流程;3)展示妨碍而非帮助用户完成目标的广告;4)每次请求变化都低效地重新运行广告流程,产生干扰并浪费成本。我们没有围绕单个事件构建系统,而是让由检索、排序和交付组成的广告系统维护一个有状态的会话。也就是说,广告会话会在符合投放条件的轮次内持续运行,并随着信息变化记住和更新信息。ChatGPT 会将初始请求的上下文发送给广告服务器。广告系统会跟随并适应不断发展的交流,而不是依赖一个被简化压平的单一查询。

广告选择流程与 ChatGPT 的正常回复生成并行运行,确保广告流程不会影响 ChatGPT 的回复。广告由独立系统筛选和选择,该系统读取对话内容,并遵循自身的资格、质量和交付约束。这一重要的架构边界 — 不同服务使用各自独立的模型和代码 — 让 ChatGPT 核心服务器专注于生成非广告回复;与此同时,广告系统独立评估是否存在合适的广告机会,如果存在,就通过单独的投放流程准备赞助内容展示。

流程图:用户对话分为两条路径,一条是生成非广告回复的 ChatGPT 回答路径,另一条是独立的广告资格审核与投放路径,用于展示明确标注为赞助内容的广告。

广告流程与 ChatGPT 回答路径并行运行。

除了保障用户体验,这种分离设计也带来了一些实际好处。ChatGPT 不依赖广告系统 — 两项服务完全独立,也不共用内容生成模型。因此,即使广告投放系统不可用或响应缓慢,ChatGPT 的非广告回复也不会受到影响。这意味着广告系统不会导致 ChatGPT 产品中断或延迟。这种分离设计的另一个好处是,只有真正有价值的广告才能达到展示门槛。不返回广告也是一种正常、成功的结果。只有当广告明显有益于用户和广告主时,系统才会交付广告。

由 LLM 理解对话并调用工具

我们广告技术栈中的另一个关键架构组件是经过后训练的 LLM。它负责理解对话,并通过智能体循环运行整个广告流程:调用广告系统的核心功能工具,依次完成检索、排序、竞价,直至最终交付。我们将这个 LLM 称为编排器。

广告流程的第一步是理解用户意图,以启动检索。检索会快速且有意地广泛收集潜在广告,供后续筛选。增量接收对话内容,让检索可利用的信息更加丰富,但也增加了歧义,因为广告系统需要区分用户当前的意图和已经过时的上下文。编排器必须理解对先前消息的指代,识别用户何时只是在作假设,并避免把每一次提及产品或服务都当作购买需求。

广告编排器利用可用的对话和用户上下文,反复迭代以寻找合适的广告,并不断决定何时调用哪个工具。其根本目标是为当前对话和上下文找到最合适的广告,也就是同时为用户和广告主带来高价值的广告。如果用户选择个性化广告,编排器还会考虑用户以往对话中可用的非敏感信息,以找到最匹配的广告。

架构图:对话上下文和用户画像输入广告编排器,编排器借助检索、相关性估计、事件预测、资格审核、投放节奏与预算,以及竞价与定价工具,平衡用户价值与广告主价值。

广告编排器通过迭代调用广告交付工具,寻找有价值的广告。

随着对话推进,广告编排器会获得更多最新信息。它可以根据更新后的上下文执行新一轮工具调用,找到更合适的广告并返回给客户端。如果这些新广告及时到达,客户端就可以使用它们。

编排器旨在平衡用户价值与广告主价值,并始终将用户放在首位。

编排器如何在智能体循环中调用广告工具

广告系统由各个独立工具组成,编排器通过迭代调用这些工具,为对话寻找最佳广告。概括来说,编排器先将对话转化为简短的文本摘要,再将摘要转换为语义嵌入(以便于广告系统筛选的形式存储语义)。随后,它利用这些语义嵌入检索候选广告,根据预算、用户设置和其他初步检查筛选出符合资格的候选广告,评估其质量和相关性。最后,编排器进行排序,找出适合在聊天回复下方的广告位中展示的高价值广告。因此,每条广告都必须在资格和相关性方面达到高标准,才有机会展示。

准备准确表达意图的检索查询

编排器 LLM 首先准备一个或多个查询,用来表达相关的商业意图。这可能包括改写对话上下文,跳出一对一搜索查询的局限,拓宽可能的广告匹配范围,再创建语义表示。在这个过程中,编排器将多轮对话提炼成摘要,供检索系统使用,从而有针对性地从数据库中检索广告。

只有在深入理解用户意图后才展示广告,才能为用户和广告主带来更好的效果。多个查询可以分别保留用户意图的不同方面。例如,一段规划旅行的对话可能包含交通、住宿或活动等不同需求。检索系统可以保留这些区别,而不是把整段对话压缩成一个字面字符串。

以徒步鞋为例,下面是一段可能出现的对话:

  1. 去优胜美地玩两天,应该安排哪些行程?

  2. 下周会冷吗?

  3. [insert brand] 有哪些新产品系列?

虽然用户没有将关于鞋类品牌的问题与优胜美地之旅联系起来,但在我们的广告系统中,这段对话可能会被表示为两个查询,例如 [适合徒步旅行的鞋] 和 [适合旅行的 [brand] 新产品系列]。这可能只是第一次尝试;编排器会持续迭代这些表示,直到在广告库存中找到对用户很有价值的广告。

检索潜在广告

检索的目的,是有意构建一个覆盖广泛的广告候选池。候选广告可以来自不同的检索策略,之后在相同的投放约束下参与竞争。我们构建了多个索引,针对不同的系统和产品约束进行优化。例如,商品 Feed 广告的索引在获取最佳广告时,会考虑商品的正面或负面评价。而其他广告可能没有关联评价,因此无需考虑这一因素。每个索引都针对某种近似最近邻 (ANN) 搜索进行了优化,使用表示用户意图的嵌入向量进行搜索。这种 ANN 搜索是一种用于大型语义索引检索的近似算法。它不追求找到“唯一正确”的结果,而是快速找到接近优质解的结果,同时保留大多数相关候选广告,因此能够迅速获取广告。

流程图:改写后的查询被编码为高维语义嵌入,用于检索常规广告、商品广告及可选策略下的广告,随后汇总为广泛的候选池。

在广告检索过程中,广告系统使用改写后的查询创建语义嵌入,生成覆盖广泛的候选广告池。

过滤不合格的候选广告

过滤的目标是排除所有在相关性、出价和预算方面未达到展示门槛的候选广告。根据候选广告和配置的不同,过滤检查可能包括:创意素材和广告系列的可用性(广告系列或创意素材是否处于启用状态)、广告系列的定向设置(例如允许在哪些地区投放)、政策限制(对可宣传内容的合规要求)、预算可用性(广告系列是否仍有可用预算)、投放节奏(广告系列应在当前时段花费预算,还是在当天其他时段花费)、展示场景兼容性(广告适合出现在哪类对话中),以及广告主和广告系列层面的去重(为每个广告主选取适量广告,确保不同商家公平参与)。

评估相关性和质量

通过资格审核的候选广告会进入评分阶段。编排器通过工具调用访问各类评分系统,评估投放所需的各项指标,例如语义相关性(广告是否与用户目标相关?)、预测互动表现(广告是否可能被浏览、点击,并转化为广告主期望的结果?),以及历史表现(广告此前向用户展示时的表现是否良好?)。编排器还会在竞价前筛选广告,以确保相关性和安全性。这些系统将候选范围缩小为一个可参与竞价的候选池,但仍不会决定最终交付哪条广告。

进行广告竞价

编排器结合对话上下文评估准备好的候选广告,选择其中足够合适的广告进入最终竞价。编排器不会直接决定投放哪条广告,也不会设定价格。它会提名符合上下文的候选广告,交由竞价工具评估。

竞价环节执行最终的投放机制,包括竞价准入(达到相关性和价值的最低门槛)、投放节奏控制(更均匀地花费广告预算)、出价与竞价特征计算、经质量调整的排序、定价,以及最终选择。

最终资格审核

竞价结束后,广告仍可能因两种情况而无法交付,这两种情况都与 ChatGPT 的对话形式有关。

  1. 广告在聊天中可能显得不合适:即便安全与合规模型(用于判断何时适合投放广告的模型)认为对话本身可以安全地展示广告,且广告本身也被判定为符合政策,某些广告在特定对话语境下仍可能显得不妥。编排器会阻止这些广告展示。

  2. 广告请求可能未能及时返回:如果 ChatGPT 模型已准备好回复,但广告尚未准备好展示,广告请求就会超时,广告也就不会交付。因此,广告系统的目标之一就是尽可能快速地运行。ChatGPT 模型的响应时间会动态变化,我们不会为了等待广告加载而延迟聊天回复。

如果通过了上述所有检查,我们就会将广告发送到前端进行渲染。我们将此视为服务端的广告交付,但广告仍有可能不会向用户展示 — 这是设计使然。

最后一步:向用户展示广告

在 ChatGPT 这样的对话式产品中,服务端交付了广告创意素材,并不意味着广告一定会展示;广告还必须及时到达,才能出现在当前轮次中。广告创意素材包括标题、描述、目标链接,以及可能包含的行动号召。此外,广告系统还会返回一段由模型生成的引言,以简短、中立的介绍说明广告与当前对话的关联。将引言与创意素材分开,既能保留广告主的信息,也能保持 ChatGPT 表达的中立性。

ChatGPT 前端会接收打包在一起的引言和广告创意素材。如果它们在 ChatGPT 的回复完全生成之前到达,前端就会在回复下方展示广告,并明确标注为赞助内容。如果到达得太晚,本轮对话就不会展示广告。这就是服务端广告交付与面向用户的广告展示之间的区别。

时序图:投放系统准备竞价获胜的广告,ChatGPT 进行最终检查,随后在用户界面中展示广告,并通过确认回执区分广告选中与成功交付。

选出获胜广告和完成交付是两个独立事件。选中的广告只有通过 ChatGPT 的最终展示检查、实际展示且交付得到确认后,才算完成交付。

广告展示之后

我们的广告技术栈采用传统的日志记录和数据管道,主要带来三方面好处:广告主可以更轻松地将现有系统与我们的技术栈集成,利用报告数据优化策略;我们的团队也能据此发现系统中有待改进的地方。除了这些报告和优化工具,我们还部署了一个高质量模型,用于评估交付结果并训练其他广告模型,形成强大的自我改进闭环。

对实际运行过程的详细拆解,有助于我们分别理解和改进广告系统的各个部分。日志处理系统还会记录细粒度的结果,例如:

  • 本轮对话不符合广告投放条件。

  • 广告会话已启动,但未发起检索请求。

  • 检索未返回任何候选广告。

  • 已检索到候选广告,但数据补全失败或未通过资格审核。

  • 广告已交付,随后获得了用户互动。

这些详细的结果分类有助于我们分别改进广告投放系统的各个部分。改进广告机会识别所需的依据,与优化检索、候选广告质量、竞价参与或交付可靠性所需的依据并不相同。

流程图:符合广告投放条件的 ChatGPT 对话轮次产生产品、广告投放和质量方面的结果,经受隐私控制约束的分析流程处理后,形成汇总的效果衡量数据和获准用于改进模型的数据。

交付、投放和质量系统分别观察广告生命周期的不同环节。受隐私控制约束的处理流程决定哪些数据可用于衡量效果和改进模型。

用强大模型评估并改进整个技术栈

基于模型的评估,其思路是让我们能力最强、推理水平最高的模型观察并评判系统结果,再通过进一步训练提升经过后训练的 LLM 的表现。例如,只要由我们最强大的模型收集反馈,并训练执行具体任务的小模型尽可能出色地完成工作,我们就可以使用规模更小、效率更高或推理能力较低的模型来负责流程编排或检索。

以人的反馈把握分寸

我们收集人的反馈并据此行动,包括用户的点击和隐藏操作、用户调查,以及广告主通过广告管理平台提供的直接反馈。在构建过程中,我们的团队也始终开放反馈渠道,直接倾听 ChatGPT 用户和广告主的需求。相比模型基于观察给出的反馈,这类反馈更能指导我们的方向,也是我们能够通过快速迭代做出正确产品决策的原因之一。模型或许能理解用户意图,并通过批判性思考提供有价值的内容,但什么才算得体,仍由人来塑造。

未来展望

一年前,我们还没有广告系统,只有少数几个人在思考这一领域的问题。如今,我们已经拥有一个稳健的广告系统,按当前营收速度折算的年化收入超过 10 亿美元,并由基于 LLM 的编排器运行广告流程。Codex 是大幅提升团队效率的关键,让我们能够以无与伦比的速度从零搭建系统,并达到这一重要的使用规模里程碑。从一开始,我们就围绕 Codex 的使用来组织团队和开发流程,以快速构建并扩展系统。我们为 Codex 建立了防护机制,确保代码能够安全、可靠地交付上线。与此同时,我们为 Codex 配置了数据基础设施插件,大幅缩短从获取洞察到落实系统改进的周期,涵盖新产品功能、质量提升和系统性能优化。

我们依据广告原则⁠设定系统边界,并结合基于 LLM 的编排器,让广告真正有用,而不是将每段对话都视为广告请求。展望未来,我们将继续尝试更具互动性的广告形式,提升用户价值(例如让用户通过广告直接与商家对话)和广告主价值。这一技术栈的自我改进架构基于 OpenAI 模型,并具备持续反馈闭环,将帮助我们更快地提升广告相关性和个性化水平。

作者

Ritendra Datta、Karthik Gopalratnam