OpenAI 揭秘 ChatGPT 广告系统原理:如何能精准插入广告,又不改变回答效果

一条广告要经过意图理解、检索、评分和竞价,即使胜出,也可能因为语境不合适或来得太晚而不展示。

作者:OpenAI10-22 ·

ChatGPT 已经开始卖广告了。当你用它规划旅行、挑选软件或讨论新爱好时,回答下方可能会出现一条明确标注“赞助”的商品或服务推广。这是 OpenAI 商业模式的一部分,商家可以付费在 ChatGPT 中投放广告。

OpenAI 官方广告卡片结构示例,含品牌、Sponsored 标识、标题、描述和图片
一张广告卡片里,品牌、赞助标识、标题、说明和商品图片各有位置。
图中 Headline 对应标题,Description 对应说明,Creative 对应右侧图片。来源:OpenAI 帮助中心的广告素材示例。

ChatGPT 广告系统,就是负责挑选、安排这些广告的一套后台系统。它要结合对话判断有没有合适的广告机会、该选哪条,以及能否在这轮回答下方展示。

随之而来的疑问是:我只是聊跑步,它怎么判断我想不想买鞋?如果商家付了钱,ChatGPT 会不会在回答里偏向赞助品牌?它会不会为了等广告选好,让我多等一会儿?

OpenAI 最近公开了这套系统的工程原理:广告怎样跟着多轮对话理解需求,又怎样与回答生成分开运行。

为什么不能把每条消息当成一次广告请求?

搜索广告有一个比较明确的起点:用户提交搜索词,系统据此检索候选、排序、竞价,再展示广告。在 ChatGPT 里,人们可能先说想准备一场比赛,聊了几轮才问到训练鞋。最初的跑步咨询,并不自动等于购买装备。

OpenAI 工程团队举的正是这样的例子:从一般的跑步问题,逐步聊到适合训练的鞋。随着目标、条件和偏好不断补充,广告系统需要重新判断此刻的需求,不能一直拿第一条消息代表整段对话。

如果每轮都被压成一个孤立查询,广告可能出现得太早,系统也会反复做相似的工作。为此,OpenAI 引入了有状态的广告会话:把已经出现的相关信息记下来,收到新上下文时继续更新,而不是每次从头猜。

这里的“状态”可以理解为系统手里不断更新的一份需求记录:前面聊了什么,当前又补了什么条件,哪些信息已经过时。能记住信息,也要会判断信息是否还适用;随口提到一个品牌、讨论一个假设,都不该直接当成购买请求。

双轨独立:为什么“懂我”和“不干扰回答”能同时成立?

广告能结合对话找商品,会不会反过来让 ChatGPT 在回答里偏向赞助商?OpenAI 披露的做法,是把两条工作路径分开:回答由核心 ChatGPT 服务生成,广告由另一套服务筛选;两边使用不同的模型和代码,不共享内容生成模型。

ChatGPT 回答生成与广告服务独立运行架构图
上方生成回答,下方筛选广告;虚线把对话更新送给广告服务。
图中没有从广告选择返回回答生成的箭头。来源:OpenAI。

图里最容易忽略的是那条虚线:回答独立,不等于广告系统不读取对话。广告端会使用可用的会话上下文,判断有没有合适的商业机会;它选出的广告作为单独的赞助内容出现,而不是写进自然回答。

分开运行还意味着,广告服务慢了或不可用,回答照常生成,不需要等待广告结果。系统返回“没有广告”也是正常的成功结果。按 OpenAI 的设计,只有对用户和广告主都有价值时才交付广告;这解释了它如何隔开两条服务链路,但架构说明本身不能证明产品在任何情况下都没有偏见。

大模型当编排器,工具负责检索和竞价

OpenAI 在已有大模型上,针对广告任务进一步训练,这个过程叫“后训练”。训练后的模型在这里担任编排器。它的工作方式类似一个能调用工具的 Agent:先理解对话,再根据结果选择下一步调用哪个工具;新信息到来后,还能重新检索、评估候选。

比如前面问的是旅行路线,后面问到了某个品牌的新品,编排器需要判断两件事是否有关。它负责组织这段理解过程,检索、预算检查、评分和竞价则由对应工具执行。

基于后训练大模型的广告编排器工具调度流程
编排器调用工具组织广告流程;竞价工具负责定价和最终选择。
大模型根据可用上下文反复调用工具;用户选择个性化后,还可考虑过去对话中的非敏感信息。

工具链里各环节回答的问题不同:检索工具先找出可能有关的广告;资格工具检查候选是否可以投放;评分工具评估相关性和预期互动;竞价工具决定最终选谁以及价格。

大模型负责理解语言和调度这些能力,不直接决定最终赢家,也不自己定价。到了竞价环节,它的角色是向竞价工具提名合适的候选。

意图改写与多路检索:不把每句话都当成购买指令

当用户展开多轮交流时,编排器首先需要把复杂的语境改写为适合广告索引检索的表示形式。

以官方披露的优胜美地两日游为例:

  • 第 1 轮:用户询问优胜美地两日游的游览路线;
  • 第 2 轮:用户追问下周当地会不会很冷;
  • 第 3 轮:用户随口询问某个户外品牌最近是否有新产品线。

在这个例子里,用户没有明确说要买鞋。编排器可以把行程与品牌新品这些线索串联起来,尝试与徒步出行有关的检索,而不是把三轮对话直接拼成一串搜索词。可能的查询包括:

  • [适合徒步旅行的鞋类]
  • [该品牌适合出行的新品系列]

这些文字查询随后被编码为语义向量,也就是用一串数字表示含义,让系统能在广告库里寻找意思接近的内容。“徒步旅行的鞋”不必和广告文案逐字相同,也能找到相关候选。

检索使用近似最近邻搜索(ANN):快速找出大致接近的选项,尽量保留多数相关候选,而不是穷举所有广告、寻找唯一最优解。系统有多个索引,分别适应普通广告、商品广告等需求;商品广告索引还会把商品的正面和负面评价纳入考虑。

多路向量检索与改写重构候选池流程
多个文字查询先编码成语义向量,再从不同索引中检索,汇入候选池。
普通广告、商品广告和其他可选策略提供不同来源的候选;汇合后的名单还不是最终赢家。

候选池形成后,要过三层不同的判断:

  1. 能不能参选。广告和活动是否仍有效、投放地域是否匹配、是否满足政策要求、预算是否还有余额、现在该不该花这笔预算、能否出现在这种对话版位,以及是否需要按广告主或活动去重,避免同一广告主或活动重复占据候选。预算节奏控制,是避免把预算不合时宜地集中花掉。
  2. 与当前目标有多相符。评分工具评估语义相关性,预测用户会不会浏览、点击或完成购买、注册等广告主期待的“转化”,也参考广告的历史表现。相关、安全的候选才能继续进入竞价准备。
  3. 最终选谁、价格多少。编排器提名后,竞价工具执行最低相关性与价值准入、预算节奏、质量调整后的排序、定价和最终选择。出价参与决策,质量也参与;原文没有公开具体竞价公式。

所以,“找到了徒步鞋广告”只是第一步。它还要符合投放条件、与此刻需求相关,并在竞价中获得展示机会。

竞价胜出为什么不等于真正展示?时钟竞争与展示回执

一条广告赢得竞价后,仍然可能不出现在本轮回答下方。对话产品还要考虑两个问题:此时放广告合不合适,以及广告是否赶得上这次回答。

原文把广告包由服务器发往前端称为服务端交付(server-side delivery),但“服务器发出了”与“用户看到了”仍是两个阶段。

竞价获胜、前端展示与交付确认的三方时序图
选出广告后还有检查;展示之后,确认信号才沿箭头返回广告系统。
读图顺序是:选中 → 宿主检查 → 标注赞助并展示 → 确认与回执 → 记录成功交付。被拒绝或中断的广告会被放弃。

回答结束前没赶到,本轮就不展示

ChatGPT 生成回答所需的时间是动态的,广告流程必须在这个窗口里完成。前端只有在回答完全生成前收到广告包,才会在本轮显示它;如果到得太晚,就不展示。回答不会为了广告停下来等。

广告合规,也可能不适合当前语境

合规解决的是这条广告和这段对话是否满足基本投放要求;但把两者放在一起,仍可能显得不合适。即使广告已经赢得竞价,编排器也可以因为当前语境不适合而阻断它。这是竞价之后的另一道检查。

广告出现在哪里,系统怎样确认交付?

广告系统返回的包里,既有标题、描述、目标链接和行动按钮等广告创意,也有模型生成的一段简短中性前言,解释广告与这段对话的关系。前言与广告创意分开,保留广告主的信息,同时避免把商家的宣传口吻混进 ChatGPT 的回答。

ChatGPT 回答下方显示 Heirloom Groceries 食品赞助广告的官方界面示例
回答在上方,广告在下方:品牌下方标着 Sponsored,下面是商品卡片。
示例中,聚餐建议之后出现了食品广告,卡片列出商品图片、价格和烹饪时间。来源:OpenAI 官方界面示例。

前端把广告放在回答下方,并明确标注赞助。按官方时序图,展示端确认后,ChatGPT 再向广告系统回传交付确认,系统才记录成功交付。竞价胜出、服务器发出、实际展示和收到回执,要分别看待;这些步骤本身没有说明采用哪种计费方式。

教学示意 · 沿用原文流程,非投放实测

同一条胜出广告,可能有三种去向

假设竞价已选出一条广告。改变下面的条件,看看它能走到哪一步;回答生成始终独立继续。

ChatGPT 回答路径正常生成回答 → 向用户输出不等待广告
改变广告端的条件
  1. 1竞价胜出

    竞价工具选出广告,仍需通过后续检查。

  2. 2语境检查

    合适,继续准备下发。

  3. 3前端接收

    及时到达,可以在本轮展示。

  4. 4展示与回执

    回答下方标注赞助;展示后确认并回传成功交付。

结果:展示并确认交付。回答路径照常运行。

语境不合适:即使广告本身合规、竞价胜出,编排器仍可阻断。

到得太晚:本轮不展示,回答不会停下来等广告。

数据流向、隐私控制与闭环演进

广告系统的可持续性依赖于客观的数据度量,但对话产品的核心资产是用户的隐私信任。

隐私控制分析处理流水线
产品结果、广告投放结果和质量评估,经过受隐私控制的分析处理。
下方两种输出分别是聚合测量,以及允许用于模型改进的数据;图中没有给出具体脱敏技术或数据保留期限。

隐私边界与个性化开关

广告端使用当前对话上下文;如果用户选择个性化广告,编排器还会考虑过去对话中可用的非敏感信息。这是利用历史信息的明确前提,不能据此推断内部如何存储、隔离或清除每一种数据。

OpenAI 在广告原则中承诺:广告主不能查看用户的私密对话,用户数据也不会被出售给广告主;用户可以关闭个性化,并随时清除用于广告的数据。广告系统能利用上下文,与广告主能直接拿到聊天记录,是两件不同的事。

OpenAI 官方广告设置与历史界面示例,显示个性化开关和删除广告数据入口
左侧是广告设置,右侧是广告历史;删除广告数据的入口也在设置中。
左图可见 Personalize ads(个性化广告)与 Past chats and memory(过去对话与记忆)两个开关。来源:OpenAI 官方界面示例。

系统怎么知道该改哪一环?

广告流程可能停在不同阶段,也可能顺利完成:这一轮本来不适合广告;启动了会话但没有检索;检索没找到候选;候选没通过资格检查;或者广告已经展示,随后收到了用户互动。日志把这些结果分开记录,才能判断该改善机会识别、检索质量、候选筛选还是交付可靠性。

OpenAI 还用推理能力更强的模型评估系统结果,再以反馈训练广告模型。这样可以让更小、更高效或推理开销较低的模型承担编排、检索等工作,而不必让每个在线环节都使用最强模型。

但模型的判断不是唯一标准。用户的点击和隐藏、用户调查,以及广告主在 Ads Manager 中的直接反馈,也会推动调整。OpenAI 表示,这些人的反馈对产品方向的影响甚至超过模型的观察反馈:模型可以帮助判断相关性,广告出现得是否得体,仍要听人的感受。

规模数据与演进边界

OpenAI 此前公布,ChatGPT Ads 在上线不到 200 天时达到 10 亿美元年化收入运行率。本次工程文章又披露,自上线以来,累计已有超过 10 万广告主投放过。

年化收入运行率,是把阶段性的营收速度换算成年尺度,不代表已经收到一整年的 10 亿美元;累计投放过的广告主,也不等于当下仍在活跃投放。这两项都是公司的自报数据,说明这套系统已经承载了实际商业业务。

开发过程也用了 AI:团队从一开始就把 Codex 纳入工作流,配合代码护栏和数据基础设施插件,缩短发现问题、获取洞察到落地改进之间的循环。

OpenAI 接下来还想探索更动态的广告形式,例如让用户通过广告直接与商家交流。这属于未来探索。当前披露更值得关注的做法,是让模型负责理解变化中的需求,让工具执行检索、评分与竞价,再用服务边界和展示条件约束广告何时出现。

来源
How we built ChatGPT’s novel ad stack for user trust and relevanceRitendra Datta、Karthik Gopalratnam / OpenAI·2026-10-21·查看主材料