Realtime 需要配置支持实时对话的服务商渠道(OpenAI 或 Azure OpenAI)。如果 WebSocket 连接被拒绝,请联系你的 OpenOpen8 管理员。
连接
端点:GET /v1/realtime
将 HTTP GET 请求升级为 WebSocket 连接。可通过查询参数或 WebSocket 握手中的 Authorization 头传入 token。
认证
通过以下方式传入 token:- 查询参数:
?token=YOUR_TOKEN - Authorization 头:
Authorization: Bearer YOUR_TOKEN(在 HTTP 升级握手时设置)
事件类型
连接后,双方交换 JSON 事件消息。每条消息包含type 字段标识其用途。以下是核心事件类型。
客户端 → 服务端
| 事件类型 | 说明 |
|---|---|
session.update | 配置会话参数,如语音、音频格式、工具和指令。 |
input_audio_buffer.append | 向模型的输入缓冲区发送 base64 编码的音频数据。 |
conversation.item.create | 向对话中添加一条文本消息。 |
response.create | 提示模型基于当前对话和缓冲区生成响应。 |
服务端 → 客户端
| 事件类型 | 说明 |
|---|---|
session.created | 连接后立即发送,确认会话已就绪。 |
session.updated | 确认 session.update 已生效。 |
response.audio.delta | 模型响应中的一块 base64 编码音频。 |
response.audio_transcript.delta | 模型音频输出的文本转录片段。 |
response.function_call_arguments.delta | 流式 function calling 参数(模型调用工具时)。 |
response.function_call_arguments.done | function calling 参数发送完成。 |
response.done | 模型完成响应生成。包含用量信息。 |
conversation.item.created | 确认对话项已添加。 |
error | 发生错误。包含错误对象及消息和代码。 |
会话配置
连接后,发送session.update 事件配置会话:
启用的交互模式。例如
["text", "audio"]。系统级指令,引导模型在整个会话中的行为。
音频输出使用的语音。例如
alloy、echo、nova 或 shimmer。你发送的音频格式。例如
pcm16、g711_ulaw 或 g711_alaw。模型返回的音频格式。例如
pcm16。音频输入转录配置。
控制服务端如何检测音频输入的轮次结束。设为
null 禁用自动检测,手动管理。会话中模型可用的工具列表,遵循 OpenAI function calling schema。
控制模型何时使用工具。
auto、none 或指定工具名。模型的采样温度。默认
0.8。用量统计
模型完成响应后,response.done 事件包含 usage 对象:
此轮响应消耗的总 token 数。
输入中的 token 数(音频 + 文本)。
模型输出中的 token 数(音频 + 文本)。
输入 token 类型明细(如缓存、音频)。
输出 token 类型明细(如音频、文本)。
示例
以下 JavaScript 示例连接 Realtime 端点、配置会话并记录收到的事件。javascript