本文介绍了如何使用阿里云百炼大模型服务提供的实时多模交互服务端 Python SDK,包括SDK下载安装、关键接口及代码示例。
多模态实时交互服务架构

前提条件
开通服务并获取必要参数。
开通阿里云百炼实时多模交互应用,获取Workspace ID、APP ID和API Key。
音频格式说明
服务端接入方式只支持 websocket 传输协议。
-
WS 链路音频格式说明:
- 上行:支持 pcm (16k 采样率 16bit 单通道)和 opus 音频流。
- 下行:支持 pcm 和 mp3 音频流。
环境依赖
运行环境要求:Python 3.9及以上版本。
依赖安装方式:
您可以通过pip 导入Dashscope依赖, 版本号>=1.24.2。
接口说明
dashscope.multimodal.MultiModalDialog
服务入口
方法说明:
1、MultiModalDialog
创建交互,设置回调。
2、start
启动voice_chat对话服务,返回on_started回调。注意on_started会回调dialog_id。
3、start_speech
通知服务端开始上传音频,注意需要在LISTENING状态才可以调用。
4、send_audio_data
通知服务端上传音频。
5、stop_speech
通知服务端结束上传音频。
6、interrupt
通知服务端,客户端需要打断当前交互,开始说话。
7、local_responding_started
通知服务端,客户端开始播放tts音频。
8、local_responding_ended
通知服务端,客户端结束播放tts音频。
9、stop
结束当前轮次voice_chat对话。
10、get_dialog_state
获得当前对话服务状态。DialogState枚举。
11、request_to_respond
请求服务端直接文本合成语音,或者发送指令给服务端。
12、classMultiModalCallback。
回调函数
对话状态说明(DialogState)
多模对话服务有LISTENING、THINKING、RESPONDING三个状态:
- LISTENING (str): 表示机器人正在监听用户输入。用户可以发送音频。
- THINKING (str): 表示机器人正在思考。
- RESPONDING (str): 表示机器人正在生成语音或语音回复中。
调用说明
参数设置
多模交互通过RequestParameters 类设置参数,包含up_stream、down_stream、client_info等多个参数段。具体如下表:
一级参数 | 二级参数 | 三级参数 | 四级参数 | 类型 | 是否必选 | 说明 |
task_group | 任务组名称,固定为"aigc" | |||||
task | 任务名称,固定为"multimodal-generation" | |||||
function | 调用功能,固定为"generation" | |||||
model | 服务名称,固定为"multimodal-dialog" | |||||
input | workspace_id | string | 是 | 用户业务空间ID | ||
app_id | string | 是 | 客户在管控台创建的应用ID,可以根据值规律确定使用哪个对话系统 | |||
sandbox | boolean | 否 | 是否使用测试配置,默认false | |||
directive | string | 是 | 指令名称:Start | |||
dialog_id | string | 否 | 对话ID,如果传入表示接着聊 | |||
parameters | upstream | type | string | 是 | 上行类型:
| |
mode | string | 否 | 客户端使用的模式,可选项:
默认tap2talk | |||
audio_format | string | 否 | 音频格式,支持pcm,opus,默认为pcm | |||
downstream | voice | string | 否 | 合成语音的音色 | ||
sample_rate | int | 否 | 合成语音的采样率,默认采样率24000Hz | |||
intermediate_text | string | 否 | 控制返回给用户那些中间文本:
可以设置多种,以逗号分割,默认为transcript | |||
debug | boolean | 否 | 是否下发debug信息,默认false | |||
audio_format | string | 否 | 音频格式,支持pcm,mp3,默认为pcm | |||
client_info | user_id | string | 是 | 终端用户ID,用来做用户相关的处理 | ||
device | uuid | string | 否 | 客户端全局唯一的ID,需要用户自己生成,传入SDK | ||
network | ip | string | 否 | 调用方公网IP | ||
location | latitude | string | 否 | 调用方维度信息 | ||
longitude | string | 否 | 调用方经度信息 | |||
city_name | string | 否 | 调用方所在城市 | |||
biz_params | user_defined_params | object | 否 | 其他需要透传给agent的参数 | ||
user_defined_tokens | object | 否 | 透传agent所需鉴权信息 | |||
tool_prompts | object | 否 | 透传agent所需prompt | |||
user_query_params | object | 否 | 透传用户请求自定义参数 | |||
user_prompt_params | object | 否 | 透传用户prompt自定义参数 |
调用示例
调用交互时序图

更多SDK接口使用说明
VQA(图片问答)交互
VQA 是对话过程中通过发送图片实现图片+语音的多模交互的功能。
核心过程是通过输入类似"看一下xxx"意图的语音,或者直接输入请求文本的方式触发VQA,返回基于图片内容的问答结果。
-
通过语音请求的流程为:
- 语音说:"看一下前面有什么" 。
- 通过回调函数
on_responding_content返回拍照意图"visual_qa"。 - 客户端收到上述意图后,调用request_to_respond接口提交图片内容触发问答回复。
-
直接通过文本请求流程为:
- 客户端直接调用request_to_respond接口提交图片内容和请求文本,触发问答回复。
通过Websocket请求LiveAI(视频通话)
LiveAI (视频通话)是百炼多模交互提供的官方Agent。通过Python SDK发送图片序列的方式,可以实现视频通话的功能。 我们推荐您的服务端和客户端(网页或者APP)通过RTC传输视频和音频,然后将服务端采集到的视频帧以 500ms/张 的速度发送给SDK,同时保持实时的音频输入。
注意:LiveAI发送图片只支持base64编码,每张图片的大小在180K以下。
- LiveAI调用时序

- 关键代码示例
文本合成TTS
SDK支持通过文本直接请求服务端合成音频。
您需要在客户端处于Listening状态下发送request_to_respond请求。
若当前状态非Listening,需要先调用interrupt 接口打断当前播报。
自定义提示词变量和传值
- 在管控台项目【提示词】配置自定义变量。
user_name字段代表用户昵称。并将变量user_name以占位符形式${user_name} 插入到Prompt 中。
在提示词编辑页面顶部,单击{x} 自定义变量选项卡添加变量,添加后的变量将显示在编辑区上方,可在提示词正文中以 ${变量名} 的占位符格式引用。
- 在代码中设置变量。
"user_name" = "大米"。
- 请求回复
user_name 为"大米"时,AI 回复中将以"亲爱的大米"作为个性化称呼与用户交互。
使用文本请求对话结果
SDK支持通过文本直接请求服务端返回 LLM 结果和语音合成数据。
您需要在客户端处于Listening状态下发送request_to_respond请求。