你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何通过 WebSocket 使用 GPT-4o 实时 API(预览版)

注释

此功能目前处于公开预览状态。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

适用于语音和音频的 Azure OpenAI GPT-4o 实时 API 是 GPT-4o 模型系列的一部分,该系列支持低延迟的“语音传入,语音传出”对话交互。

可以通过 WebRTC 或 WebSocket 使用实时 API 将音频输入发送到模型并实时接收音频响应。

按照本文中的说明通过 WebSocket 开始使用实时 API。 在不需要低延迟的服务器到服务器方案中通过 WebSocket 使用实时 API。

小窍门

在大多数情况下,我们建议 通过 WebRTC 使用实时 API 在客户端应用程序(如 Web 应用程序或移动应用)中实时音频流式处理。 WebRTC 专为低延迟、实时音频流式处理而设计,最适合大多数用例。

支持的模型

GPT-4o 实时模型可用于 美国东部 2 和瑞典中部地区的全球部署。

  • gpt-4o-mini-realtime-preview (2024-12-17)
  • gpt-4o-realtime-preview (2024-12-17)

应使用实时 API 的 URL 中的 API 版本 2025-04-01-preview

有关支持的模型的详细信息,请参阅 模型和版本文档

先决条件

在使用 GPT-4o 实时音频之前,需要:

连接和身份验证

实时 API(通过 /realtime)构建在 WebSocket API 之上,以方便最终用户和模型之间的完全异步流通信。

实时 API 是通过与 Azure OpenAI 资源的 /realtime 终结点的安全 WebSocket 连接进行访问的。

可以通过连接以下内容来构造完整的请求 URI:

  • 安全 WebSocket (wss://) 协议。
  • 你的 Azure OpenAI 资源终结点主机名,例如 my-aoai-resource.openai.azure.com
  • openai/realtime API 路径。
  • 受支持 API 版本的 api-version 查询字符串参数,例如 2024-12-17
  • 带有 deploymentgpt-4o-realtime-preview 模型部署的名称的 gpt-4o-mini-realtime-preview 查询字符串参数。

以下示例是一个结构良好的 /realtime 请求 URI:

wss://my-eastus2-openai-resource.openai.azure.com/openai/realtime?api-version=2025-04-01-preview&deployment=gpt-4o-mini-realtime-preview-deployment-name

若要进行身份验证:

  • Microsoft Entra (建议):对启用了托管标识的 Azure OpenAI 资源的 API 使用基于令牌的身份验证 /realtime 。 将 Bearer 令牌与 Authorization 标头配合使用来应用一个检索到的身份验证令牌。
  • API 密钥:可通过以下两种方式之一提供 api-key
    • 对预握手连接使用 api-key 连接标头。 此选项在浏览器环境中不可用。
    • 对请求 URI 使用 api-key 查询字符串参数。 使用 https/wss 时,查询字符串参数是加密的。

通过 WebSocket 体系结构实时 API

建立和验证与 /realtime 的 WebSocket 连接会话后,通过事件执行功能交互以发送和接收 WebSocket 消息。 这些事件各自采用 JSON 对象的形式。

实时 API 身份验证和连接顺序的示意图。

事件可以并行发送和接收,应用程序通常应同时和异步处理它们。

  • 客户端调用方与 /realtime 建立连接,以启动新的 session
  • session 自动创建默认值 conversation。 不支持多个并发对话。
  • conversation 会一直累积输入信号,直到 response 由调用方通过直接事件启动,或由语音活动检测 (VAD) 自动启动。
  • 每个 response 都包含一个或多个 items,它们可以封装消息、函数调用和其他信息。
  • 每个消息 item 都有 content_part,可以跨单个项表示多种模态(文本和音频)。
  • session 管理调用方输入处理(例如用户音频)和常见的输出生成处理的配置。
  • 如果需要,每个调用方发起的 response.create 都可以替代某些输出 response 行为。
  • 服务器创建的 item 和消息中的 content_part 可以异步和并行填充。 例如,以轮循机制同时接收音频、文本和函数信息。

试用快速入门

满足先决条件后,可以按照 Realtime API 快速入门 中的说明通过 WebSocket 开始使用 Realtime API。