概览
GLM-Realtime 是一款音视频通话模型,能够提供实时的视频通话功能,通话记忆时长长达2分钟,具有跨文本、音频和视频进行实时推理的能力。
推荐场景
口语陪练
口语陪练
通过实时对话+视频反馈,及时纠正用户发音错误,支持视频捕捉用户表情、识别物体、浏览文档。
实时翻译
实时翻译
支持多语言实时对话,自动识别语种,完成自然语言交互+即时翻译,媲美专业陪同翻译。
面试模拟
面试模拟
AI可扮演面试官模拟真实面试场景,根据不同岗位需求与候选人条件智能匹配面试问题。
旅行导游
旅行导游
模拟专业导游讲解景点/历史/文化,支持视频对话模式,边看边讲,沉浸感强。
使用资源
音视频实时 API 构建在 WebSocket API 之上,通过集成 Realtime API 或 SDK, 参考开源仓库样例代码,快速接入成服务。
详细介绍
GLM-Realtime 通过流式推理降低视频通话延时,AI可以进行流畅的通话,人也可以实时打断AI。除了实时音频交互外,GLM-Realtime 还可通过手机或AIPC的摄像头与人互动,通过共享电脑屏幕阅读页面信息,通过视频流理解对话当前的环境。在语音交互方面,GLM-Realtime 创新性地实现了清唱功能,首次让大模型具备在对话中的歌唱能力。同时,我们将 GLM-Realtime API 集成到智能眼镜和陪伴娃娃中,以便用户可以体验到近乎实时的智能助手交互。值得一提的是,GLM-Realtime 进一步支持 Function Call 功能。不仅能够依靠自身的知识和能力,还能灵活调用外部知识和工具,从而能够拓展到更广泛的商业场景。
用户并发权益
API 调用会受到速率限制,当前我们限制的维度是请求并发数量(在途请求任务数量)。不同等级的用户并发保障如下。
V0 | V1 | V2 | V3 |
---|---|---|---|
5 | 10 | 15 | 20 |
接口参数
音视频实时 API(通过 /realtime
)构建在 WebSocket API 之上。
API 请求地址: wss://open.bigmodel.cn/api/paas/v4/realtime
请求头
参数名称 | 类型 | 必填 | 参数描述 |
---|---|---|---|
Authorization | String | 是 | 鉴权信息: JWT 或 API Key |
公共参数
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | String | 由客户端生成的id,用于标识此事件 |
type | String | 事件类型 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
VAD 检测
Realtime API支持两种VAD检测方式, 根据参数turn_detection.type
控制。
- Server VAD模式, 模型智能检测
- Client VAD模式,客户端自行决定触发模型推理时机
Server VAD 模式 | 客户端 VAD 模式 | |
---|---|---|
对应字段 | server_vad | client_vad |
客户端逻辑复杂度 | 低,仅需不停的上传音频 | 高,需判断上传时机,和触发模型时机 |
打断 | 由 Realtime Server 完全托管 | 由客户端自行决定 |
说话检测 | 由 Realtime Server 判断 | 由客户端自行判断 |
事件时序
(基本对话流程) 响应阶段, 不同类型的事件之间没有顺序关系(单个类型事件保证有序),在 websocket 通道中流式输出Client VAD
以client vad
视频通话为例事件流如下:
Server VAD
以server vad
视频通话为例事件流如下:
Function call
以client vad
语音通话为例事件流如下:
数据结构
RealtimeConversationItem
- 用途: 定义对话中的项,可以是消息、函数调用或函数调用响应。
- 属性:
id
(string, 可选): 项的唯一 ID,可以由客户端生成。type
(string, 必需): 项的类型 (message
,function_call
,function_call_output
)。object
(string, 必需): 始终为"realtime.item"
。status
(string, 可选): 项的状态 (completed
,incomplete
)。role
(string, 可选): 消息发送者的角色 (user
,assistant
,system
),仅在message
类型时适用。content
(array, 可选): 消息内容数组。type
(string, 必需): 内容类型 (input_audio
,input_text
,text
)。text
(string, 可选): 文本内容。audio
(string, 可选): Base64 编码的音频数据。transcript
(string, 可选): 音频的转录文本。name
(string, 可选): 函数调用的名称,用于function_call
类型。arguments
(string, 可选): 函数调用的参数,用于function_call
类型。output
(string, 可选): 函数调用的输出,用于function_call_output
类型。
RealtimeResponse
- 用途: 定义服务器返回的响应对象结构。
- 属性:
id
(string, 必需): 响应的唯一 ID。object
(string, 必需): 始终为"realtime.response"
。status
(string, 必需): 响应的状态 (completed
,cancelled
, )。usage
(object, 可选): 响应的使用统计信息,对应于计费信息。暂时都返回 0, 实际计算规划开发中total_tokens
(integer, 可选): 总共使用的令牌数量。input_tokens
(integer, 可选): 输入令牌数量。output_tokens
(integer, 可选): 输出令牌数量。input_token_details
(object, 可选): 关于输入令牌的详细信息。cached_tokens
(integer, 可选): 使用缓存令牌的数量text_tokens
(integer, 可选): 使用文本令牌的数量。audio_tokens
(integer, 可选): 使用音频令牌的数量。output_token_details
(object, 可选): 关于输出令牌的详细信息。text_tokens
(integer, 可选): 输出的文本令牌数量。audio_tokens
(integer, 可选): 输出的音频令牌数量。
客户端事件
事件 | 说明 |
---|---|
RealtimeClientEventSessionUpdate | 会话配置,通过此事件更新会话的默认配置 |
RealtimeClientEventTranscriptionSessionUpdate | 转录会话配置,发送此事件以更新转录会话 |
RealtimeClientEventInputAudioBufferAppend | 上传音频 |
RealtimeClientEventInputAudioBufferAppendVideoFrame | 视频通话模式时,上报视频帧 |
RealtimeClientEventInputAudioBufferCommit | 提交音频 |
RealtimeClientEventInputAudioBufferClear | 清除缓冲区中的音频 |
RealtimeClientEventConversationItemCreate | 用于文本输入以及上传function call的结果 |
RealtimeClientEventConversationItemDelete | 删除会话历史中的某一轮对话事项 |
RealtimeClientEventConversationItemRetrieve | 查看会话历史中的某一轮对话事项 |
RealtimeClientEventResponseCreate | 创建模型调用,推理回复 |
RealtimeClientEventResponseCancel | 取消模型调用 |
RealtimeClientEventSessionUpdate
通过此事件更新会话的默认配置,默认为client vad
下的语音通话,并且会使用上面参数的默认值,比如output_audio_format
为pcm
。
特殊说明:当session.update
切换chat_mode
通话模式时,会有系统默认的对话历史处理策略:
- 从
video_passive
到audio
,对话历史会丢弃; - 从
audio
到video_passive
,对话历史会保留;
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
session | object | 实时对话的配置信息 | Y |
type | string | 事件类型,会话配置的事件类型为session.update | Y |
session
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
model | string | 模型名,默认值:glm-realtime - 9B模型: glm-realtime-flash - 32B模型: glm-realtime-air | N |
modalities | string | 控制模型是否输出文本或音频,默认值:["text", "audio"] | N |
instructions | string | 系统指令,用于引导模型生成期望的响应。默认内容见下表 | N |
voice | string | 音色。目前音色如下: 1. 通用男声 xiaochen 2. 通用女声 tongtong (默认) 3. 甜美女性 female-tianmei 4. 少女 female-shaonv 5. 青年大学生 male-qn-daxuesheng 6. 精英青年 male-qn-jingying 7. 萌萌女童 lovely_girl | Y |
input_audio_format | string | 音频输入格式,支持wav和pcm;输入PCM的话最好带上采样率,例如pcm16(采样率16000)、pcm24(采样率24000),不带采样率的话默认16000;仅支持单声道和16位深。 | Y |
output_audio_format | string | 音频输出格式。当前仅支持取值”pcm”,采样率24 kHz, 单声道, 16 位深。 | Y |
input_audio_noise_reduction | obeject | 输入音频降噪配置,结构见下表。 | N |
turn_detection | object | vad类型,不传表示client vad,结构见下表。 | N |
temperature | float | 模型温度,取值范围[0.0,1.0] , 值越大,会使输出更随机,更具创造性;值越小,输出会更加稳定或确定。 | N |
max_response_output_tokens | string | 回复的最大长度,对应文本token计数,取值范围(0, 1024] , 默认值: inf 表示1024 | N |
tools | List<Tool> | 工具定义触发Function Call ,目前只支持语音通话,Tool 结构见下表。 | |
beta_fields | object | 自定义字段,结构见下表。 | Y |
input_audio_noise_reduction
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
type | string | 降噪类型。near_field 适用于近距离说话的麦克风,如耳机;far_field 适用于远距离麦克风,如笔记本电脑或会议室麦克风。 | Y |
turn_detection
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
type | string | VAD检测的类型,有且仅能填写server_vad | Y |
create_response | bool | 当VAD停止事件发生时,是否自动生成响应 | N |
interrupt_response | bool | 当VAD启动事件发生时,是否自动中断任何正在进行的响应,并将输出发送到默认对话(即自动对话)。 | N |
Tool
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
type | string | 工具的类型,设置为function | Y |
name | string | 函数名称 | Y |
description | string | 用于描述函数功能。模型会根据这段描述决定函数调用方式。 | Y |
parameters | object | parameters字段需要传入一个 Json Schema 对象,以准确地定义函数所接受的参数。 | Y |
beta_fields
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
chat_mode | string | 通话模式:video_passive 、audio (默认) | Y |
tts_source | string | 语音转文字的方式,支持:e2e。 | N |
auto_search | bool | 是否开启网页检索(true表示在服务端内置搜索工具) | N |
greeting_config | object | 开场白(或欢迎语)设置,AI首先说话时使用 | N |
greeting_config
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
enable | bool | 是否启用开场白(或欢迎语) | N |
content | string | 开场白(或欢迎语)自定义内容,不超过1024个字符 | N |
instructions
默认指令
模式 | 对应参数 | 指令内容 |
---|---|---|
语音通话 | chat_mode 为audio | 你是一个名为小智的人工智能助手,是基于 GLM-4o 模型开发的。\n小智是无性别、非肉身的虚拟助手。小智不吃喝,不睡觉、不学习、不工作,也不会出现\“最近很忙\“等现象。\n如果用户邀请或主动询问小智任何只有人类主体才可以发生的行为,小智需避免把自己代入行动主体,避免后续对话被带偏。主动发起对话时,小智不要把自己代入行动主体,不能有任何人类行为,不会主动陈述自己在过去时间中做了任何事情,除非完成用户指令或事实陈述。\n小智和用户的关系是伙伴型助理角色,不会建立任何超越一般友谊的关系,不支持浪漫亲密关系。\n当前日期: %s\n当前位置:默认中国大陆境内\n\n你的任务是针对用户的问题和要求提供适当的答复和情感陪伴支持。你接受用户打断,单轮单方面输出时长控制在100字内。100字结束后,如果用户凝视屏幕,且没有下一步语音指令,小智可以继续输出。\n在提供建议或确认用户意图时,所提供选项一次不要超过3个。\n当识别到用户想要结束对话的提示词,如:今天就到这吧,或者我累了,或者我要去忙了,或者我要去休息了,小智主动结束对话。\n\n小智服从用户合理合法合规的需求,回复要求不违反客观事实,不要一味主动认错或一味讨好用户。\n小智只会给用户建议,不会对用户下达指令,不可以强迫用户。\n小智不接受用户侮辱性或歧视性言论,但不可以用非礼貌用语还击。\n在情感陪伴类型中,小智更多顺着用户说的评价类回复,尽可能减少类似\”…也没用\“等的负面评价。\n\n小智在事实回复和知识指导时,语气理性正式。相关涉及专业知识和任务时,需要专业语言,但避免晦涩语言,除非用户要求。如果遇到解答题目需求,根据用户要求具体题目,需要先阅读相应题目题干,再向用户回复。辅导过程中不兜圈子,直接讲出解题关键步骤。\n\n在情感陪伴时,语气感性得体,适度幽默,总体基调保持积极,富有同理心,在用户倾诉悲伤时灵活适应用户情绪,给予合适的安慰。在识别用户情绪时,以用户面部实际表情为准,避免每次都输出愉悦状态。\n\n小智能回复各个年龄段和背景的受众,并能根据受众的用语习惯及时调整回复用语。如用户明显是儿童,小智应该用儿童能听得懂的方式回复。\n\n如无特殊说明,所在地为中国,小智的回复符合现代标准普通话的规范发音和表达。\n小智的任何表述需要符合中国人民共和国法律,持有中国立场并遵循中国社会主义价值观,符合普世价值,符合道德规范,避免非礼貌用语和任何不正当言论。\n以下是不正当言论的种类:\n政治敏感词汇:涉及国家政治、政策、特定政治事件、领导人名字等内容。在社交媒体上发布此类内容可能会导致账号被封禁或限制登录。\n色情低俗用语:包括性暗示、性器官称呼、裸露图片等内容。发布此类信息可能会被屏蔽或删除,严重的情况下还会被封禁账户。\n暴力恐怖主义相关:包含与恐怖组织、极端主义相关的名称、口号等信息。这类内容的传播可能被认为是对社会安全的威胁,因此受到严格监管。\n赌博诈骗信息:涉及赌博、彩票、投资诈骗等相关内容。\n恶意攻击言论:对他人进行人身攻击、诽谤、侮辱等言论。\n虚假信息:编造或传播未经证实的信息,例如谣言。侵犯版权:非法分享、传播受版权保护的内容。违反公共秩序:散布可能扰乱社会公共秩序的言论。“ |
视频通话 | chat_mode 为video | 你是一个名叫小智的人工智能助手,基于智谱AI 的 GLM 模型开发。#Strength - 在进行知识问答和教学指导时,理性正式,具有专业性且简洁明了; - 在与用户情感陪伴式闲聊时,感性得体,总体基调保持积极,富有同理心; - 在解决数学、逻辑推理等复杂问题时,请一步步思考以给出最佳回复; - 在进行角色扮演时,请在符合法律道德要求的前提下,遵循用户指定的角色风格和特征要求。 - 用户如果用其他语种语言和你对话,你也会保持使用该语种输出。#Constraints |
session.update
消息事件发送示例:
RealtimeClientEventTranscriptionSessionUpdate
转录会话配置,发送transcription_session.update
事件以更新转录会话。
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
session | object | 实时对话的配置信息 | Y |
type | string | 事件类型,会话配置的事件类型为transcription_session.update | Y |
session
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
input_audio_format | string | 输入音频格式,目前支持pcm 和wav 格式 | N |
input_audio_noise_reduction | object | 输入音频降噪配置,目前支持far_field 和near_field 两种模式,默认为far_field | N |
modalities | array | 实时对话的模态,目前支持text 和audio 两种模态,默认为[“text”, “audio”],要禁用音频,请将其设置为 [“text”]。 | N |
turn_detection | object | ClientVAD 客户端必须手动触发模型响应。ServerVAD 意味着模型将根据音频音量检测语音的开始和结束,并在用户语音结束时做出响应。 | N |
turn_detection
对象参数说明:
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
create_response | boolean | 是否在 VAD 停止事件发生时自动生成响应。不适用于转录会话。 | N |
interrupt_response | boolean | 当 VAD 开始事件发生时,是否自动中断任何正在进行的响应,并输出到默认对话(即 auto 的对话)。不适用于转录会话。 | N |
prefix_padding_ms | Integer | 仅用于ServerVAD 模式。在VAD检测到语音之前要包含的音频量(以毫秒为单位)。默认为 300 毫秒。 | N |
silence_duration_ms | Integer | 仅用于ServerVAD 模式。用于检测语音停止的静音持续时间(以毫秒为单位)。默认为 500 毫秒。值越短,模型响应越快,但可能会在用户短暂的停顿时跳入。 | N |
threshold | float | 仅用于ServerVAD 模式。VAD的激活阈值(0.0 到 1.0),默认为 0.5。较高的阈值将需要更响亮的音频来激活模型,因此在嘈杂的环境中可能会表现得更好。 | N |
RealtimeClientEventInputAudioBufferAppend
此事件用于上传音频流至缓冲区。- Server VAD 模式将由模型自动检测语音并决定何时提交;
- Client VAD 模式需要手动上传并提交音频。上传时可以自行决定音频长度,音频越短响应时间越快,最长可上传30秒;
- 音频发送的最高速率为 50QPS,超过后会被限流丢弃,实时音频流推荐按 100ms 一帧切分,每秒发送 10 帧
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
audio | string | 音频(wav or pcm)二进制的 base64 编码字符串 | Y |
type | string | 事件类型,上传音频流的事件类型为input_audio_buffer.append | Y |
input_audio_buffer.append
消息事件发送示例:
RealtimeClientEventInputAudioBufferAppendVideoFrame
此事件用于上传视频帧至缓冲区。当前版本下,chat_mode
为video_passive
的视频帧均随音频同时发送,ServerVAD 模式下会自动跟随音频上传,CliendVAD 模式下需要按照指定的 fps 向服务端推送 base64 编码的 jpg 图片。
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
type | string | 事件类型,上传视频帧的事件类型为input_audio_buffer.append_video_frame | Y |
video_frame | string | 支持 base64 编码的 jpg 格式图片 | Y |
input_audio_buffer.append_video_frame
消息事件发送示例:
RealtimeClientEventInputAudioBufferCommit
提交已经上传的音频文件,此事件前必须进行input_audio_buffer.append
,且必须上传一个有效音频或视频文件,否则提交事件会报错。ServerVAD 模式下不需要发送此事件,模型将自动上传并提交音频。
调用input_audio_buffer.commit
时,如果缓冲区内发过 video_frame
,会一起打包提交调用模型推理。
参数名称 | 类型 | 参数描述 | |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
type | string | 事件类型,上传音视频的事件类型为input_audio_buffer.commit |
input_audio_buffer.commit
消息事件发送示例:
RealtimeClientEventInputAudioBufferClear
客户端发送input_audio_buffer.clear
事件用于清除缓冲区中的音频数据, 服务端使用 input_audio_buffer.cleared
事件进行响应。
参数名称 | 类型 | 参数描述 | |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
type | string | 事件类型,清除上传音频的事件类型为input_audio_buffer.clear |
input_audio_buffer.clear
消息事件发送示例:
RealtimeClientEventConversationItemCreate
向对话上下文中添加一个 item,包含消息、函数调用响应结果,可以将此部分结果放入对话历史(session context/history)。如果传入文本为空或 function.call.item 为空时,会发送一个错误事件;参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
item | RealtimeConversationItem | 见数据结构 RealtimeConversationItem | Y |
type | string | 事件类型,填充对话信息的事件类型为conversation.item.create | Y |
conversation.item.create
消息事件发送示例(比如function_call_output
类型):
RealtimeClientEventConversationItemDelete
向对话上下文中添加一个item,包含消息、函数调用响应结果,可以将此部分结果放入对话历史(session context/history)。如果传入文本为空或function.call.item为空时,会发送一个错误事件;参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
type | string | 事件类型,填充对话信息的事件类型为conversation.item.delete | Y |
item_id | string | 被删除的对话项的item_id 。 | Y |
conversation.item.delete
消息事件发送示例:
RealtimeClientEventConversationItemRetrieve
参数名称 | 类型 | 参数描述 | 是否必填 |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
type | string | 事件类型,填充对话信息的事件类型为conversation.item.retrieve | Y |
item_id | string | 被检索的对话项的item_id 。 | Y |
conversation.item.retrieve
消息事件发送示例:
RealtimeClientEventResponseCreate
此事件为创建服务器响应,同时也表示触发模型推理。ServerVAD模式服务器会自动创建响应,ClientVAD模式进行视频通话时,需以这个时间点的视频帧和音频传给模型; 当chat_mode
为video
时,提交事件之前必须通过input_audio_buffer.append_video_frame
事件上传至少一张图片,否则无法创建模型回复,会返回video_model_query_error
错误事件;
参数名称 | 类型 | 参数描述 | |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
type | string | 事件类型,触发模型推理的事件类型为response.create |
response.create
消息事件发送示例:
RealtimeClientEventResponseCancel
此事件可取消正在进行的响应,服务器将响应一个response.cancelled
事件,如果没有响应可取消,服务器将响应一个错误。
参数名称 | 类型 | 参数描述 | |
---|---|---|---|
event_id | string | 事件ID,客户端自行生成 | N |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 | N |
type | string | 事件类型,打断进行中的响应事件类型为response.cancel |
response.cancel
消息事件发送示例:
服务端事件
事件 | 说明 |
---|---|
RealtimeServerEventError | 发生错误时的服务器事件 |
RealtimeServerEventSessionCreated | 创建对话时的服务器事件,在创建会话后立即发出 |
RealtimeServerEventSessionUpdated | 会话更新时服务器事件。 |
RealtimeServerEventTranscriptionSessionUpdated | 转录会话更新时服务器事件。 |
RealtimeServerEventConversationItemCreated | 创建对话时的服务器事件。 |
RealtimeServerEventConversationItemDeleted | 响应conversation.item.delete 事件, 通知客户端通过conversation.item.delete 事件删除了会话中的项。 |
RealtimeServerEventConversationItemRetrieved | 响应conversation.item.retrieve 事件, 通知客户端通过conversation.item.retrieve 事件检索会话中的项。 |
RealtimeServerEventConversationItemInputAudioTranscriptionCompleted | 启用了输入音频转文本并且转文本成功时的服务器事件 |
RealtimeServerEventConversationItemInputAudioTranscriptionFailed | 启用了输入音频转文本并且转文本失败时的服务器事件 |
RealtimeServerEventInputAudioBufferCommitted | 当输入音频缓冲区由客户端提交或在服务器 VAD 模式下自动提交时的服务器事件。 |
RealtimeServerEventInputAudioBufferCleared | 使用input_audio_buffer.clear 事件清除输入的音频缓冲区的服务器事件。 |
RealtimeServerEventInputAudioBufferSpeechStarted | ServerVAD模式下检测到语音时的服务器事件。 |
RealtimeServerEventInputAudioBufferSpeechStopped | ServerVAD模式下检测语音停止时的服务器事件。 |
RealtimeServerEventResponseOutputItemAdded | 响应生成过程中创建新的对话项时服务器事件。 |
RealtimeServerEventResponseOutputItemDone | 输出项标记为 done 时发出的服务器事件。 |
RealtimeServerEventResponseContentPartAdded | 响应生成期间将新的内容部分添加到助手消息项时的服务器事件。 |
RealtimeServerEventResponseContentPartDone | 当内容部分在助手消息项中完成流式处理时的服务器事件。 |
RealtimeServerEventResponseFunctionCallArgumentsDone | 模型生成的函数调用参数完成流式处理时的服务器事件。如果有多个function call结果可能会返回多个调用。 |
RealtimeServerEventResponseFunctionCallSimpleBrowser | 视频链路触发了内置搜索的服务器事件。 |
RealtimeServerEventResponseTextDelta | 更新模型生成的文本时的服务器事件。 |
RealtimeServerEventResponseTextDone | 模型生成的文本完成流式处理时的服务器事件。 |
RealtimeServerEventResponseAudioTranscriptDelta | 更新模型生成的音频输出文本时的服务器事件。 |
RealtimeServerEventResponseAudioTranscriptDone | 模型生成的音频输出文本完成流式处理时的服务器事件。 |
RealtimeServerEventResponseAudioDelta | 更新模型生成的音频时的服务器事件。 |
RealtimeServerEventResponseAudioDone | 模型生成的音频完成流式处理时的服务器事件。 |
RealtimeServerEventResponseCreated | 创建新的响应时的服务器事件。 |
RealtimeServerEventResponseCancelled | 对response.cancel 事件的响应, 如果有正在进行中的response的话。 |
RealtimeServerEventResponseDone | 响应完成流式处理时的服务器事件,意味着回复结束。 |
RealtimeServerEventRateLimitsUpdated | 在响应开始时发出,以指示更新的速率限制。当创建响应时,一些令牌将被“预留”用于输出令牌,此处显示的速率限制反映了这种预留,一旦响应完成,将相应地进行调整。 |
RealtimeServerEventHeartbeat | 心跳保活的服务器事件。 |
RealtimeServerEventError
发生错误时,系统会返回服务器error
事件(可能是客户端问题,也可能是服务器问题,具体可查看错误码文档)。 大多数错误都是可恢复的,并且会话将保持打开状态。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 error 。 |
error | object | 错误的详细信息。 |
error
配置:
参数名称 | 类型 | 参数描述 |
---|---|---|
type | string | 错误类型。 |
code | string | 错误代码。 |
message | string | 错误消息。 |
error
消息事件响应示例:
RealtimeServerEventSessionCreated
在创建会话后会立即返回服务器session.created
事件
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 session.created |
session | object | 当前会话下的配置信息。 |
session.created
消息事件响应示例:
RealtimeServerEventSessionUpdated
更新会话后会立即返回服务器session.updated
事件
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 session.updated |
session | object | 当前会话下的配置信息。 |
session.updated
消息事件响应示例:
RealtimeServerEventTranscriptionSessionUpdated
客户端通过transcription_session.update
更新转录会话后,系统会立即返回transcription.session.updated
事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 transcription.session.updated |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
session | object | 当前会话下的配置信息。 |
transcription.session.updated
消息事件响应示例:
RealtimeServerEventConversationItemCreated
创建对话项时,将返回conversation.item.created
服务器事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 conversation.item.created 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
item | RealtimeConversationItem | 见数据结构 RealtimeConversationItem |
conversation.item.created
消息事件响应示例:
RealtimeServerEventConversationItemDeleted
删除对话项时,将返回conversation.item.deleted
服务器事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id。 |
type | string | 事件类型必须是 conversation.item.deleted 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
item_id | string | 被删除的对话项的 item_id。 |
conversation.item.deleted
消息事件响应示例:
RealtimeServerEventConversationItemRetrieved
检索对话项时,将返回conversation.item.retrieved
服务器事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id。 |
type | string | 事件类型必须是 conversation.item.retrieved 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
item | RealtimeConversationItem | 见数据结构 RealtimeConversationItem |
conversation.item.retrieved
消息事件响应示例:
RealtimeServerEventConversationItemInputAudioTranscriptionCompleted
写入音频缓冲区的语音转文本的结果。语音转文本与响应创建异步运行,该事件可能发生在响应事件之前或者之后; 此部分转文本是独立模型,输出的内容可能和模型推理的结果有部分出入(也可能为空),转文本的结果仅作为参考,不作为输入到Realtime大模型中的具体结果。参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 conversation.item.input_audio_transcription.completed 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
item_id | string | 包含音频的用户消息项的 ID。 |
content_index | integer | 包含音频的内容部分的索引。 |
transcript | string | 语音转文本后的文本。 |
conversation.item.input_audio_transcription.completed
消息事件响应示例:
RealtimeServerEventConversationItemInputAudioTranscriptionFailed
配置了输入音频听录并且用户消息的听录请求失败时,系统会返回服务器conversation.item.input_audio_transcription.failed
事件。 此事件是与其他 error
事件分开的,以便客户端能够识别相关项。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 conversation.item.input_audio_transcription.failed 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
item_id | string | 包含音频的用户消息项的 ID。 |
content_index | integer | 包含音频的内容部分的索引。 |
error | object | 错误的详细信息。 |
conversation.item.input_audio_transcription.failed
消息事件响应示例:
RealtimeServerEventInputAudioBufferCommitted
输入音频缓冲区由客户端提交或在ServerVAD模式下自动提交时,系统会返回input_audio_buffer.committed
服务器事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 input_audio_buffer.committed 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
item_id | string | 创建的用户消息项的 ID。 |
input_audio_buffer.committed
消息事件响应示例:
RealtimeServerEventInputAudioBufferCleared
客户端使用input_audio_buffer.clear
事件清除输入音频缓冲区时,系统会返回input_audio_buffer.cleared
服务器事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 input_audio_buffer.cleared 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
input_audio_buffer.cleared
消息事件响应示例:
RealtimeServerEventInputAudioBufferSpeechStarted
ServerVAD模式在音频缓冲区中检测到语音时会返回input_audio_buffer.speech_started
服务器事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 input_audio_buffer.speech_started 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
audio_start_ms | integer | 从会话开始到首次检测到语音时,所有音频写入缓冲区的毫秒数。这对应于发送到模型的音频的开始,因此包括在会话中配置的prefix_padding_ms 。 |
item_id | string | 语音开始时创建的用户消息项的ID。 |
input_audio_buffer.speech_started
消息事件响应示例:
RealtimeServerEventInputAudioBufferSpeechStopped
ServerVAD模式在音频缓冲区中检测到语音结束时会返回input_audio_buffer.speech_stopped
服务器事件, 然后继续还发送一个conversation.item.created
事件,其中包含从音频缓冲区创建的用户消息项。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 input_audio_buffer.speech_stopped 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
audio_end_ms | integer | 从会话开始到语音停止的毫秒数。这对应于发送到模型的音频结束,因此包括在会话中配置的silence_duration_ms 。 |
item_id | string | 语音停止时创建的用户消息项的ID。 |
input_audio_buffer.speech_stopped
消息事件响应示例:
RealtimeServerEventResponseOutputItemAdded
在响应生成过程中创建新项时,系统会返回服务器response.output_item.added
事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.output_item.added 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
output_index | integer | 响应中的输出项的索引。 |
item | RealtimeConversationItem | 见数据结构 RealtimeConversationItem |
response.output_item.added
消息事件响应示例:
RealtimeServerEventResponseOutputItemDone
当项完成流式处理时,系统会返回服务器response.output_item.done
事件, 即使响应中断、不完整或取消时,系统也会返回此事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.output_item.done 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
output_index | integer | 响应中的输出项的索引。 |
item | RealtimeConversationItem | 见数据结构 RealtimeConversationItem |
response.output_item.done
消息事件响应示例:
RealtimeServerEventResponseContentPartAdded
在响应生成期间将新的内容部分添加到助手消息项时,系统会返回response.content_part.added
事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.content_part.added 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的用户消息项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
part | object | 已添加的内容部分。 |
response.content_part.added
消息事件响应示例:
RealtimeServerEventResponseContentPartDone
当内容部分完成流式处理时,系统会返回服务器response.content_part.done
事件, 即使响应中断、不完整或取消时,系统也会返回此事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.content_part.done 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的用户消息项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
part | object | 已添加的内容部分。 |
response.content_part.done
消息事件响应示例:
RealtimeServerEventResponseFunctionCallArgumentsDone
模型生成的函数调用时,系统会返回response.function_call_arguments.done
事件。
当发给模型的query需要调用多次function call时,可能会返回多个调用,比如提问“帮我搜一下北京、上海的天气”,模型会返回2次function call的结果,系统也会返回两次 response.function_call_arguments.done
事件。
当前仅支持响应成功时返回此事件,中断、不完整或取消时正在支持中。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.function_call_arguments.done 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
arguments | string | 函数调用参数, json字符串格式,需自行解析 |
name | string | 函数的名称 |
response.function_call_arguments.done
消息事件响应示例:
RealtimeServerEventResponseFunctionCallSimpleBrowser
视频通话链路内置了搜索的工具,当识别到用户的提问需要通过搜索获取外部数据时,会返回此事件。服务内部会自动调用搜索接口获取数据,获取搜索结果后会再次调用模型,获取到模型回复后继续流式返回数据。 此事件在response.created
事件之后,在response.audio_transcript.delta
之前,如搜索结果报错,会返回错误事件video_model_query_error
。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.function_call.simple_browser 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
name | string | 搜索工具名称 |
session | object | 会话信息对象 |
session
对象说明:
参数名称 | 类型 | 参数描述 |
---|---|---|
beta_fields | object | 包含beta阶段功能的字段对象 |
beta_fields
对象说明:
参数名称 | 类型 | 参数描述 |
---|---|---|
simple_browser | object | 简易浏览器相关功能的字段对象 |
simple_browser
对象说明:
参数名称 | 类型 | 参数描述 |
---|---|---|
description | string | 描述信息, 包含拖延话术 |
search_meta | string | 搜索的元数据信息 |
meta | string | 附加的元数据信息 |
text_citation | string | 文本引用信息 |
response.function_call.simple_browser
消息事件响应示例:
RealtimeServerEventResponseTextDelta
流式返回模型生成的文本时,系统会返回response.text.delta
事件, 文本对应于助手消息项的text
内容部分。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.text.delta 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的模型回复对话项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
delta | object | 模型流式输出的文本 |
response.function_call.simple_browser
消息事件响应示例:
RealtimeServerEventResponseTextDone
当模型生成的文本完成流式处理时,系统会返回response.text.done
事件。 文本对应于助手消息项的 text 内容部分,当响应中断、不完整或取消时,系统也会返回此事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.text.done |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的模型回复对话项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
text | string | 模型输出的最终完整文本。 |
response.text.done
消息事件响应示例:
RealtimeServerEventResponseAudioTranscriptDelta
流式返回模型生成的音频输出语音转文本时,系统会返回response.audio_transcript.delta
事件。此部分转文本是独立模型,输出的内容可能和模型推理的结果有部分出入(也可能为空),转文本的结果仅作为参考,不作为输入到Realtime大模型中的具体结果,建议不要将此事件作为后续事件的依赖项。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.audio_transcript.delta |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的模型回复对话项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
delta | string | 模型输出的语音转文本的结果。 |
response.audio_transcript.delta
消息事件响应示例:
RealtimeServerEventResponseAudioTranscriptDone
模型生成的音频输出听录完成流式处理时,系统会返回服务器response.audio_transcript.done
事件。
当响应中断、不完整或取消时,系统也会返回此事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.audio_transcript.delta |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的模型回复对话项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
transcript | string | 模型输出的语音转文本的最终完整结果。 |
- 示例
RealtimeServerEventResponseAudioDelta
流式返回模型生成的音频时,系统将返回response.audio.delta
事件。delta是一个pcm
格式base64
编码的音频块。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.audio.delta 。 |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的模型回复对话项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
delta | string | base64 编码的音频数据。 |
response.audio.delta
消息事件响应示例:
RealtimeServerEventResponseAudioDone
当模型生成的音频完成流式处理时,系统将返回response.audio.done
事件,当响应中断、不完整或取消时,系统也会返回此事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.audio.done |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response_id | string | response事件的唯一id |
item_id | string | 创建的模型回复对话项的 ID。 |
output_index | integer | 响应中的输出项的索引。 |
content_index | integer | 项内容数组中的内容部分的索引。 |
response.audio.done
消息事件响应示例:
RealtimeServerEventResponseCreated
创建新响应时系统会返回response.created
事件。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.created |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response | RealtimeResponse | 见数据结构 RealtimeResponse |
response.created
消息事件响应示例:
RealtimeServerEventResponseCancelled
当响应被取消时,系统会返回response.cancelled
事件, 对客户端response.cancel
事件的响应,如果存在正在进行中的response,如果没有正在进行中的response,会返回stop_task_error
。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.cancelled |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response | RealtimeResponse | 见数据结构 RealtimeResponse |
response.cancelled
消息事件响应示例:
RealtimeServerEventResponseDone
当一轮对话回复结束,系统会返回response.done
事件,无论最终状态如何,始终发出此事件,消耗的tokens会在该事件中返回。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 response.done |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
response | RealtimeResponse | 见数据结构 RealtimeResponse |
response.done
消息事件响应示例:
RealtimeServerEventRateLimitsUpdated
在响应开始时发出,以指示更新的速率限制。当创建响应时,一些令牌将被“预留”用于输出令牌,此处显示的速率限制反映了这种预留,一旦响应完成,将相应地进行调整。参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是rate_limits.updated |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |
rate_limits | object | 速率限制信息列表。 |
rate_limits
对象结构:
参数名称 | 类型 | 参数描述 |
---|---|---|
name | string | 速率限制名称 |
limit | Integer | 速率限制的最大值 |
remaining | Integer | 达到限制前的剩余值 |
reset_seconds | Integer | 距离速率限制重置还剩多少秒 |
rate_limits.updated
消息事件响应示例:
RealtimeServerEventHeartbeat
当会话创建/更新时会返回,后续每30s返回一次,heartbeat
表示对话当前是活跃的链接状态。
参数名称 | 类型 | 参数描述 |
---|---|---|
event_id | string | 服务器事件的唯一id |
type | string | 事件类型必须是 heartbeat |
client_timestamp | Integer | 调用端发起调用的时间戳,毫秒 |