工作流 📋 7 个步骤 第 449 / 450 篇

用 GPT-Live-1 给智能体接全双工语音:两种委托模式怎么选、怎么接

GPT-Live-1 实操:最小语音会话、Responses 委托与 Client 委托的架构分界、委托事件元数据陷阱、打断与状态真实性三个必测点,以及按整条链路做成本预算。

2026.09.19· 24 分钟阅读· 约 2588 字· 🎙️ GPT-Live-1 / 📞 语音 API

2026 年 9 月 10 日,OpenAI 把 GPT-Live-1 在 API 上正式开放。它和此前的 Realtime 走的不是一条路:Realtime 是语音、推理、工具选择挤在一个模型里;Live 把说话的模型干活的智能体拆开——语音层可以在后端 Agent 推理、调工具的同时继续和用户对话,全双工。这篇教程带你把 Live 接到一个后端智能体上,并把两种委托模式的分界线、计费结构和几个必测点讲透。

🎯 适合人群:要做语音客服、语音助手或免提交互的开发者。需要 OpenAI API 密钥与一个能跑后端逻辑的服务。先算预算:语音层每分钟 0.05 美元、按秒计费,后端模型与工具用量另算。

先理解:Live 把一条链路拆成了两段

过去用 Realtime,用户问「我的订单到哪了」,模型要一边维持对话、一边决定调不调工具,静默的工具往返会打断对话节奏。Live 的架构是把对话和执行解耦:

角色职责计费
Live 语音层全双工对话:说话时能听、能被打断,把任务委托给后端$0.05/分钟,按秒计
后端智能体真正的推理、工具调用、业务校验按所选模型的 API 价与工具费另计

一个直观的账:十分钟语音会话的语音层成本是 0.5 美元,但整通电话的真实成本还包含后端每一次模型调用和工具执行。做预算要按整条链路算,不能只看语音分钟数。

什么时候该选 Live 而不是 Realtime?看你的对话里有没有「说话的同时还要干活」:语音客服边聊边查订单、开发者边口述边让后台跑重构,这类场景里静默的工具往返是体验杀手,Live 的解耦架构正好治它。反过来,如果你的场景是「一问一答的语音问答」,后端逻辑很薄,Realtime 的单模型链路反而更简单。另外提醒一个容易忽略的点:全双工对**谁在什么时刻有权说话**提出了新的产品问题——打断、抢话、沉默的粒度都要在应用层定义,这是 Realtime 时代不存在的设计项。

Step 1:跑通最小语音会话

1 先让「能说话」成立,再谈委托

按官方入门文档的路径建立一条 Live 会话,验证音频输入输出与转写都正常。这一步不加任何后端逻辑:

验证清单:
□ 能听到模型说话(TTS 输出正常)
□ 模型能听到你说话,且转写与你说的一致
□ 打断测试:它说话时你插话,它会让位
□ 转写里能拿到结构化的事件流

先把「打断」测明白再往下走。全双工意味着双方可以同时发声,你的产品逻辑必须决定:用户插话时,后端正在跑的任务是取消、继续还是暂停?这个策略没有默认值,各家业务预期不同,早决定早省事。

Step 2:选委托模式——两条路的分界线

2 选错了后面全是返工

Live 把「语音层怎么把活交给后端」分成两种模式,对应两种架构:

模式流程适合谁
Responses 委托Live 为你在 OpenAI 侧配置好的后端准备请求,拿到结果后回传对话后端就是 OpenAI 生态(Responses API + 自有工具),想快
Client 委托你的应用自己组装上下文、跑自己的 Agent 或服务,把结果回给语音层需要自定义路由、校验,或后端根本不在 OpenAI 上

判断标准很简单:委托之前要不要经过你的业务逻辑?要,就用 Client 委托——比如先查权限、先做意图分类、要在多个内部服务之间路由。不需要,Responses 委托的链路更短、延迟更低。

Step 3:接 Responses 委托

3 在会话配置里指定后端

Responses 委托的核心是把一个 OpenAI 后端配置挂到 Live 会话上,语音层自动为该后端准备请求并回传结果:

会话配置要点:
1. 在 Live 会话参数中指定 Responses 后端
   (模型、指令、可用工具随会话一并声明)
2. 用户开口 → Live 准备请求 → 后端执行 →
   结果回传 → Live 继续对话
3. 后端工具照常定义:web_search、
   function tools、MCP 均可用
💡 这条路最省事的地方在于:会话期间的任务状态、工具定义都由同一套配置管理,不用你在两边同步上下文。代价是后端逻辑只能在 OpenAI 的框架里表达,复杂路由做不了。

Step 4:接 Client 委托(注意元数据陷阱)

4 委托事件里是元数据,不是任务文本

这是 Client 委托最容易踩的坑,官方文档专门强调:委托事件携带的是元数据,不是现成的任务载荷。你要自己从转写事件与应用状态拼出真正的后端请求。

正确姿势:
1. 监听委托事件,拿到的是「发生了委托」这件事
   与相关元数据
2. 从转写事件 + 你的应用状态组装后端请求
   (用户说了什么、此前会话决定了什么、
    当前订单上下文是什么)
3. 后端执行自己的 Agent / 服务,带校验地返回结果
4. 把结果交回语音层,让它用人话播报

错误姿势:
  把委托事件直接当命令转发给后端
  → 后端拿到的是空壳元数据,什么都干不了

权限、确认与任务状态在两种模式下都是你的责任。后端校验期间,语音模型不保证保持沉默——它可能已经在跟用户说话了。所以校验逻辑要独立于语音层运转,别依赖「用户听不到」这个假设。

Step 5:三个必测点

5 上线前一个都不能省

语音链路的失效方式和文本链路完全不同,官方入门指南给出的对照结构点出了三处要专门测的地方:

测什么怎么测要防的失效
打断后端慢查询进行中用户连续插话改需求任务状态与新指令错位,答非所问
慢查询中改指令查询跑到一半说「算了查另一个」旧查询结果回来后被当成新答案播报
「已请求」≠「已完成」触发一个动作后立刻问「办好了吗」语音模型把「已提交」说成「已办妥」

三个测点要在真实设备上测:开发机上用模拟音频跑通的打断逻辑,换到带底噪的耳机麦克风上可能完全变形——回声消除、半双工硬件、蓝牙延迟都会影响全双工行为。建议准备一套贴近真实用户环境的录音回放用例,每次改打断策略后回归一遍,并把每次的表现记进评测表,语义层面的退化往往是从这里先露头的。

「requested 与 completed 的区分」是信任问题。对语音客服来说,把「已经帮您提交了退款申请」说成「退款已到账」,是会直接产生客诉的表述错误。评测时要专门核对动作类话术:模型说的是提交、排队,还是完成——三者必须与后端真实状态一致。

Step 6:按整条链路做预算与监控

6 语音分钟只是账单的一角
成本结构:
  语音层    $0.05/分钟,按秒计费(10 分钟 = $0.50)
  后端模型  按所选模型 API 价,每次委托都计费
  工具执行  按工具标准价(含 OpenAI 托管工具)

监控建议:
1. 把「语音分钟数」与「委托次数」分开埋点
2. 单通电话的总成本 = 语音 + Σ每次委托的模型与工具费
3. 关注委托失败重试——重试的模型费照付
单通电话成本演算(假设):
  通话时长 8 分钟
    → 语音层:8 × $0.05 = $0.40
  委托 3 次
    → 后端模型:3 × 单次委托 token 费(按所选模型价)
    → 工具执行:3 × 工具单价(含 OpenAI 托管工具按标准价)
  估算口径:语音层可精确预付,
           后端部分按历史会话的平均委托次数 × 平均单次费用
           预留缓冲,重试率高的场景缓冲至少翻倍
💡 Client 委托模式下,你的应用是账单的枢纽:语音层的花费在 OpenAI 侧,后端自建 Agent 的花费在你自己的供应商那里。两边各留一份用量日志,月底对账时你会感谢自己。

Step 7:上线前的责任清单

7 语音层不管的四件事
责任归属落地方式
权限校验你的应用委托前在应用层校验调用方身份与权限
动作确认你的应用不可逆动作必须有显式确认环节,语音层无此机制
任务状态你的应用维护真实状态机,播报前查状态而非依赖模型记忆
结果校验你的应用后端结果回传前做业务校验,再决定播报口径

语音让交互门槛降低了,也让「说错话」的成本变高了。上线后先小流量灰度,重点盯动作类话术的准确率,再逐步放开。

常见问题速查

你遇到的现象大概率原因 & 解决
委托事件转发后端后没反应把元数据当成了任务文本。从转写事件 + 应用状态自行组装请求
用户插话后行为错乱打断策略未定义。明确插话时后端任务的取消/继续策略
模型说「已完成」但实际没有播报未接真实状态。动作类话术改为查询状态机后输出
账单远超语音分钟预估漏算后端模型与工具费。按委托次数补齐埋点
想自定义路由再回传选 Client 委托;Responses 委托不支持中途业务逻辑
← 返回教程中心