介绍 Qwen-Omni-Realtime 系列模型的 WebSocket 接入地址、交互流程及 SDK。
接入地址
适用模型:qwen3.8-omni-flash-realtime、qwen3.5-omni-plus-realtime、qwen3.5-omni-flash-realtime。
wss://maas.qianwenaiapi.com/api-ws/v1/realtime?model=qwen3.5-omni-plus-realtime
将 model 替换为要调用的模型名称。鉴权和连接前的准备工作请参见接入概览。
接入流程
VAD 模式
将客户端事件事件的session.turn_detection.type 设为"server_vad"以启用 VAD 模式。在 VAD 模式下,服务端对传入的音频进行语音活动检测,并在检测到作出响应。此模式适用于客户端到服务器始终发送音频的情况,也是当前的默认模式。
- 服务端在检测到语音开始时发送
input_audio_buffer.speech_started事件。 - 客户端随时可以选择通过发送
input_audio_buffer.append事件将音频追加到缓冲区。 - 服务端在检测到语音结束时发送
input_audio_buffer.speech_stopped事件。 - 服务端通过发送
input_audio_buffer.committed事件来提交输入音频缓冲区。 - 服务端发送
conversation.item.created事件,其中包含从音频缓冲区创建的用户消息项。
Function Calling 流程
在 VAD 模式下,当服务端生成的响应需要客户端执行 Function Calling 工具时,遵循以下交互流程:
- 服务端在检测到语音结束并生成响应时,识别到需要调用工具。
- 服务端发送
response.function_call_arguments.delta事件,包含工具调用参数的增量数据。 - 服务端发送
response.function_call_arguments.done事件,表示工具调用参数传递完成。 - 客户端执行工具调用并获取结果。
- 客户端通过
conversation.item.create事件发送工具调用结果。 - 客户端发送
response.create事件,触发服务端基于工具调用结果生成响应。
Manual 模式
将客户端事件事件的session.turn_detection 设为 null 以启用 Manual 模式。此模式下,客户端通过显式发送input_audio_buffer.commit 和response.create事件请求服务器响应。适用于按下即说场景,如聊天软件中的发送语音。
- 客户端可以通过发送
input_audio_buffer.append事件将音频追加到缓冲区。 - 客户端通过发送
input_audio_buffer.commit事件来提交输入音频缓冲区。 该提交会在对话中创建一个新的用户消息项。 - 服务器通过发送
input_audio_buffer.committed事件进行响应。 - 客户端发送
response.create事件,触发模型生成最终响应。 - 服务器通过发送
conversation.item.created事件进行响应。
Function Calling 流程
- 客户端发送
response.create事件后,服务端生成响应并识别到需要调用工具。 - 服务端发送
response.function_call_arguments.delta事件,包含工具调用参数的增量数据。 - 服务端发送
response.function_call_arguments.done事件,表示工具调用参数传递完成。 - 客户端执行工具调用并获取结果。
- 客户端通过
conversation.item.create事件发送工具调用结果。 - 客户端发送
response.create事件,触发模型生成最终响应。 - 服务端基于工具调用结果生成响应,并通过
response.audio.delta或response.text.delta事件返回给客户端。
MCP 工具调用
以下流程适用于 Qwen3.8-Omni-Flash-Realtime,可与上述 VAD 或 Manual 模式配合使用。
Function Calling 与 MCP 可以在同一会话的 session.tools 中配置,不能同时启用联网搜索(enable_search)。千问AI平台不额外收取 MCP 工具调用费,模型推理仍按模型价格计费。
MCP 由服务端执行工具,前述 Function Calling 流程则由客户端执行工具,两者的结果回传方式不同。
工具发现
客户端通过 session.update 配置 MCP 服务后,由 Realtime 服务异步发现工具,交互流程如下:

opt 表示满足条件时执行,alt 表示按条件选择不同分支,par 表示并行处理。
session.updated仅表示 MCP 配置已接受,不表示工具已经可用。mcp_list_tools.in_progress可能早于session.updated到达。- 客户端可以在工具发现完成前继续发送音频或
response.create;但只有发现完成后的 Response 才能使用对应 MCP 工具。 - 工具发现成功时,服务端先发送包含最终工具列表的
conversation.item.created,再发送mcp_list_tools.completed。 - 工具发现失败时,服务端先发送包含 error 的
conversation.item.created,再发送mcp_list_tools.failed。
MCP 调用与续答
模型选择 MCP 工具后,由 Realtime 服务执行工具调用;需要审批时,客户端先回复审批结果。交互流程如下:

response.mcp_call.failed,不执行工具,也不会经过 response.mcp_call.in_progress。无需审批或审批通过时,典型事件顺序如下:
response.done。其中 response.output 已包含最终 mcp_call 快照:成功项为 completed 并包含 output;失败项为 failed 并包含 error。
如果需要模型基于 MCP 结果继续生成回答,客户端应在收到父 response.done 后发送一次不附带 MCP 结果的 response.create。
参见客户端 MCP 工具配置、审批回复、MCP 服务端事件和MCP 对话项。
使用限制
以下为每个会话的 MCP 默认约束:
| 项目 | 默认值 |
|---|---|
| MCP 服务数 | 8 |
| MCP 工具数 | 128 |
| 工具发现超时 | 30 秒 |
| 审批超时 | 60 秒 |
| 工具执行超时 | 30 秒 |
| 单次上游响应大小 | 2 MB |
| 累计工具结果大小 | 8 MB |
| 累计工具调用数 | 256 |