Qwen-Omni-Realtime API的客户端事件参考。
session.update
建立 WebSocket 连接后,发送此事件更新会话的默认配置。服务端收到 session.update 事件后校验参数,若参数不合法则返回错误,若参数合法则应用更改并返回会话配置。Qwen3.8-Omni-Flash-Realtime 的 MCP 连接地址与凭证不回显,详见Qwen3.8 客户端事件。
type 事件类型,固定为 | |
session 会话配置。 Qwen3.8-Omni-Flash-Realtime 更新会话时必须提供 | |
temperature 采样温度,控制输出内容的多样性。值越高,输出越多样;值越低,输出越确定。 取值范围:[0, 2)。 由于 temperature 和 top_p 均可控制多样性,建议只设置其中一个。 默认值:
| |
top_p 核采样概率阈值,控制输出内容的多样性。值越高,输出越多样;值越低,输出越确定。 取值范围:(0, 1.0]。 由于 temperature 和 top_p 均可控制多样性,建议只设置其中一个。 默认值:
| |
top_k 采样候选集大小。例如设为 50 时,每步生成仅从得分最高的 50 个 Token 中采样。值越大,随机性越高;值越小,确定性越高。设为 取值需大于或等于 0。 默认值:
| |
max_tokens 本次请求返回的最大 Token 数。
适用于需要限制输出长度的场景,如生成摘要或关键词、控制成本、缩短响应时间等。
| |
repetition_penalty 控制生成内容中连续序列的重复度。值越高,重复惩罚越强;1.0 表示不做惩罚。 默认值:
| |
presence_penalty 控制生成内容的重复度。 取值范围:[-2.0, 2.0]。正数降低重复度,负数增加重复度。 默认值:
适用场景: 较高值适合创意写作、头脑风暴等需要多样性和创造性的场景。 较低值适合技术文档等需要一致性和专业术语的场景。
| |
seed 提高生成过程的确定性,常用于在相同参数下复现相同结果。 每次调用时传入相同的 seed 值并保持其他参数不变,模型将尽可能返回相同的结果。 取值范围:0 到 231−1,默认值为 -1。
|
音频配置
audioobject(可选)
输入和输出音频配置。未配置时沿用现有默认行为。
以下格式和采样率选项适用于 qwen3.5-omni-plus-realtime、qwen3.5-omni-flash-realtime。多通道输入的字段和约束见多通道音频输入。
多通道音频输入
以下多通道音频配置适用于 Qwen3.8-Omni-Flash-Realtime 的 WebSocket 接入。
| 字段路径 | 类型 | 必填与默认值 | 允许值与约束 | 说明 |
|---|---|---|---|---|
| type | string | 可选,默认 pcm | 多通道输入只能为 pcm | 输入音频编码类型 |
| sample_rate | integer | 可选,默认 16000 | 多通道输入只能为 16000 | 采样率,单位 Hz |
| sample_format | string | 可选,默认 s16le | 只能为 s16le | PCM 采样格式 |
| channels | integer | 可选,默认 1 | 仅支持 1、2、4 | 输入声道数;2、4 声道空间音频的输入 Token 数均为普通音频的 2 倍,详见Token 计算 |
| packing | string | 可选,默认 interleaved | 只能为 interleaved | 多通道样本排列方式 |
| channel_layout | string | 可选,按 channels 确定默认值 | 1 声道为 mono;2 声道为 raw_mic_array;4 声道为 foa_ambix | 显式提供时必须与 channels 匹配 |
使用限制:
- 多通道输入必须使用 PCM、16000 Hz、s16le 和 interleaved。
- 多通道配置应在发送首段音频数据前完成;音频输入开始后,不得修改上述音频格式配置。
- 字段省略时使用表中默认值;字段一旦出现,其类型和值必须满足约束,不得传入 null 代替省略。
双通道示例:
{
"type": "session.update",
"session": {
"audio": {
"input": {
"format": {
"type": "pcm",
"sample_rate": 16000,
"sample_format": "s16le",
"channels": 2,
"packing": "interleaved",
"channel_layout": "raw_mic_array"
}
}
}
}
}
四通道示例:
{
"type": "session.update",
"session": {
"audio": {
"input": {
"format": {
"type": "pcm",
"sample_rate": 16000,
"sample_format": "s16le",
"channels": 4,
"packing": "interleaved",
"channel_layout": "foa_ambix"
}
}
}
}
}
单通道兼容示例:
{
"type": "session.update",
"session": {
"audio": {
"input": {
"format": {
"type": "pcm",
"sample_rate": 16000
}
}
}
}
}
输出音色
以下配置适用于 Qwen3.8-Omni-Flash-Realtime。
| 字段路径 | 类型 | 必填 | 说明 |
|---|---|---|---|
| session.audio.output.voice | string | 否 | 输出音色;默认为 Tina;新增支持 longanlingxin |
| session.voice | string | 否 | 兼容字段;建议新接入使用 session.audio.output.voice |
如果两个字段同时出现,以 session.audio.output.voice 为准。音色效果可参考音色列表。
示例:
{
"type": "session.update",
"session": {
"audio": {
"output": {
"voice": "longanlingxin"
}
}
}
}
视频配置
以下配置适用于 Qwen3.8-Omni-Flash-Realtime。
| 字段路径 | 类型 | 必填与默认值 | 允许值 | 说明 |
|---|---|---|---|---|
| representation_compact | string | 可选;会话初始默认 none | none、normal | 视频输入表征聚合方式 |
取值说明:
- none:保留完整的细粒度视频输入表征。
- normal:聚合视频输入表征,使用后会降低计算开销,适用于对视觉细节要求不高的场景。相同视频输入的 Token 数为
none模式的 1/4,详见Token 计算。
该字段应在发送首段音频数据前设置;音频输入开始后不得修改。
示例:
{
"type": "session.update",
"session": {
"video": {
"input": {
"representation_compact": "normal"
}
}
}
}
MCP 工具配置
以下配置适用于 Qwen3.8-Omni-Flash-Realtime。
字段表中的“必填”表示所属对象出现时必须提供。ID 为不透明字符串,不应依赖其长度、前缀或生成规则。MCP 连接、工具发现和调用受服务配额及超时限制。
当 session.tools 中的元素满足 type="mcp" 时,该元素表示一个 MCP Server 配置。同一会话可同时配置 Function Calling 和 MCP 工具;tools 与 enable_search 不可同时开启,该限制也适用于 MCP。服务数量、工具数量、超时及结果大小限制见MCP 调用限制。
| 字段路径 | 类型 | 必填与默认值 | 允许值与约束 | 说明 |
|---|---|---|---|---|
| type | string | 必填 | 新增支持mcp | 工具配置类型 |
| server_label | string | 必填 | 会话内唯一;1~64 位;仅允许字母、数字、下划线和连字符 | MCP Server 的会话内标识 |
| server_url | string | 必填 | 公网 HTTPS 443 地址;最长 4096 字符 | MCP Streamable HTTP 地址 |
| authorization | string | 可选 | 最长 8192 字符;仅允许可打印 ASCII 字符 | 出站 Authorization 值 |
| headers | object | 可选 | 最多 16 个键值对;键和值均为 string | 额外出站 HTTP Header |
| allowed_tools | array[string] | 可选;省略表示允许全部;空数组表示不暴露任何工具 | 每个工具名 1~64 位;仅允许字母、数字、下划线、点和连字符 | 工具发现后的白名单过滤 |
| require_approval | string | 可选,默认 always | always、never | 工具调用审批策略 |
server_url 还必须满足以下要求:
- 不得包含用户名或密码。
- 不得包含 URL fragment。
- 域名解析结果必须为公网地址。
headers 的名称长度为 1~128 位,仅允许标准 HTTP Header 名称字符;值最长 8192 字符且仅允许可打印 ASCII 字符。以下 Header 不允许设置:
前缀:mcp-、proxy-、x-forwarded-
名称:host、authorization、connection、content-length、transfer-encoding、
accept、content-type、forwarded、cookie、origin、upgrade、te、trailer
每次新增或更新 MCP 配置时,都必须同时提供 server_label 和 server_url,不支持只传 server_label 复用已有配置。MCP 配置只能在当前没有活动 Response 时更新。
server_url、authorization 和 headers 仅用于服务端连接 MCP Server,不会在 session.updated 中回显。客户端不应依赖 session.updated 重建这些敏感配置。
配置示例:将 server_url 替换为可访问的 MCP 服务地址,authorization 替换为该服务要求的认证信息;allowed_tools 中填写该服务实际提供的工具名。
{
"type": "session.update",
"session": {
"tools": [
{
"type": "mcp",
"server_label": "amap",
"server_url": "https://example.com/mcp",
"authorization": "Bearer ***",
"allowed_tools": ["maps_weather"],
"require_approval": "always"
}
]
}
}
response.create
response.create 事件用于指示服务端生成模型响应。VAD 模式下,服务端会自动生成响应,无需发送此事件。工具调用场景中,客户端通过 conversation.item.create 回传工具结果后,需发送此事件触发模型生成最终响应。
服务端以 response.created 事件开始响应,随后发送一个或多个项和内容事件(如 conversation.item.created 和 response.content_part.added),最后以 response.done 事件表示响应完成。
type 事件类型,固定为 | |
response.cancel
客户端发送此事件取消正在进行的响应。若当前无响应可取消,服务端将返回错误事件。
type 事件类型,固定为 | |
input_audio_buffer.append
将音频字节追加到输入音频缓冲区。
type 事件类型,固定为 | |
audio Base64 编码的音频数据。 |
input_audio_buffer.commit
提交输入音频缓冲区,在对话中创建新的用户消息项。若音频缓冲区为空,服务端将返回错误事件。
提交音频缓冲区不会触发模型响应,服务端将以 input_audio_buffer.committed 事件响应。
若客户端已发送过 input_image_buffer.append 事件,input_audio_buffer.commit 事件将同时提交图像缓冲区。
type 事件类型,固定为 | |
input_audio_buffer.clear
清除音频缓冲区中的字节。服务端以 input_audio_buffer.cleared 事件响应。
type 事件类型,固定为 | |
input_image_buffer.append
将图像数据添加到图像缓冲区。图像可来自本地文件,也可从视频流实时采集。
图片输入限制如下:
- 图像格式必须为 JPG 或 JPEG。建议分辨率为 480p 或 720p 以获得最佳性能,最高不超过 1080p。
- 单张图片经Base64编码后不得超过256KB,建议编码前原始图片大小不超过190KB。
- 图片数据需经过 Base64 编码。
- 建议以 1 张/秒的频率向服务端发送图像。
- 发送 input_image_buffer.append 事件前,至少已发送过一次 input_audio_buffer.append 事件。
图像缓冲区与音频缓冲区通过 input_audio_buffer.commit 事件一起提交。
type 事件类型,固定为 | |
image Base64 编码的图像数据。 |
conversation.item.create
客户端发送此事件,将工具函数的执行结果回传给服务端。模型触发工具调用后,客户端在本地执行工具函数,通过此事件将结果发回,再发送 response.create 触发模型生成最终响应。
说明此处说明 function_call_output 类型的 item;Qwen3.8-Omni-Flash-Realtime 还支持审批回复 mcp_approval_response。
type 事件类型,固定为 | |
item 要创建的对话项,不能为空。 |
MCP 审批回复(Qwen3.8-Omni-Flash-Realtime)
当 MCP 配置的 require_approval 为 always 或省略时,服务端可能发送 mcp_approval_request。客户端使用既有 conversation.item.create 事件回复审批结果。
事件字段:
| 字段路径 | 类型 | 必填 | 说明 |
|---|---|---|---|
| event_id | string | 否 | 客户端生成的事件 ID,用于日志追踪 |
| type | string | 是 | 固定为 conversation.item.create |
| item | object | 是 | MCP 审批回复对象 |
item 字段:
| 字段路径 | 类型 | 必填 | 说明 |
|---|---|---|---|
| item.type | string | 是 | 固定为 mcp_approval_response |
| item.approval_request_id | string | 是 | 必须精确匹配一个尚未处理的 mcp_approval_request 的 item.id |
| item.approve | boolean | 是 | true 表示允许执行;false 表示拒绝,本次调用进入 failed |
示例:
{
"event_id": "event_client_xxx",
"type": "conversation.item.create",
"item": {
"type": "mcp_approval_response",
"approval_request_id": "opaque_approval_id",
"approve": true
}
}
另请参见: 实时(Qwen-Omni-Realtime) 。