跳到正文

Realtime 实时会话

除了「一问一答」式的 HTTP 流量,网关还支持实时多模态会话:客户端与上游之间建立一条长生命、双向、有状态的 WebSocket 连接,持续互发音频与事件(典型场景是语音对话)。这条路径与 HTTP 路径并行、互相独立。

入口:GET /v1/realtime(WebSocket 升级),说 OpenAI Realtime 客户端协议。

配置一个 Realtime 模型

和配普通模型一样在控制台建上游 + 模型,只是协议选 realtime 变体:

  • 上游协议openai_realtime(或 dashscope_realtime),基础 URL 填上游的 realtime WebSocket 端点。
  • 模型挂到该上游,填上游模型 ID。

客户端随后用访问密钥连 ws(s)://<网关>/v1/realtime?model=<模型名> 建立会话。

认证与准入

/v1/realtime 与 HTTP 数据面用同一套认证:访问密钥(Authorization: Bearer)+ Header ACL 规则照常生效。密钥组要放行该模型,会话才能建立。

会话作用域(与 HTTP 的区别)

一条 realtime 连接是一个会话,不是单个请求,因此它不走按请求起灭的那套中间件(每请求超时、并发、落盘、按请求统计)。会话级的治理(空闲/寿命限制、按轮计量)独立实现。要点:

  • 桥接任务一会话一个:网关连上上游 WebSocket 后,双向泵送帧。当前实现为透传——帧原样转发,不做协议翻译;网关旁路观测上游控制事件(session.created / response.create / response.done)以跟踪会话状态。
  • 故障转移只在会话建立前:连接建立阶段可在多个凭据候选间切换;一旦上游确认会话(session.created),上游已持有无法迁移的会话状态,此后不再允许换节点。
  • 优雅关闭:网关排空/关停时,对每个会话发送关闭帧,给足关闭握手的时间预算。

计费与日志(按轮)

一个会话里,每一(一次 response.createresponse.done 往返)约等于一条请求:网关把它记进与 HTTP 请求同一条持久化统计与日志管线。

  • 统计 / 账单:每轮计入 request_stats,账单页按模型 join 定价——realtime 用量与 HTTP 用量在同一张统计/账单里按模型汇总。
  • 日志:每轮产生一条日志事件,进日志页与 Live SSE 流,可按访问密钥/模型查看。

因此 realtime 的成本是按轮累计的,计费口径与 HTTP 一致(按目标模型计价),见 定价与计费

常见问题

Q:realtime 能用负载均衡器吗? realtime 路由按模型解析到单个上游会话;多节点/多凭据的故障转移体现在会话建立阶段的凭据候选切换,而非 HTTP 那种按请求换节点。

Q:realtime 会话会被请求超时切断吗? 不会套用 HTTP 的每请求超时——realtime 是会话作用域,按会话的空闲/寿命限制治理。

Q:realtime 支持协议互译吗? 当前桥接是透传(帧原样转发)。客户端侧说 OpenAI Realtime 协议;上游需是同族 realtime 协议(openai_realtime / dashscope_realtime)。

下一步端点 · 认证 · 协议互通 看完整端点;协议互通矩阵 看协议清单;定价与计费 看计费口径。