本文档系统阐述多模态自定义对话角色配置标准及多角色切换流程,核心内容包括:自定义变量、编写角色 prompt、选配音色、维护用户与角色的映射关系。
概述
多模态交互套件支持用户级别的多角色切换,通过为不同角色配置独立的提示词(prompt)和音色(voice),实现同一应用内多人设的个性化交互体验。本文档基于多模态套件能力,描述自定义多角色的最佳实践,涵盖自定义角色配置、切换时机及完整实现流程。整体分为两个阶段:
- 自定义角色配置:在控制台配置自定义变量,编写角色 prompt,并为角色选配音色。
- 多角色切换:客户端维护用户与角色的映射关系,切换时重建 WebSocket 连接。
步骤一:自定义角色配置
自定义一个角色需要完成三件事:配置变量、编写 prompt、选配音色。
配置自定义变量
自定义变量允许在Prompt 中使用标准占位符(如 ${name}),在运行时由客户端传入实际值,实现不同用户、不同角色展示个性化内容的效果。参考文档:RTOS SDK (License模式) 提示词变量设置。
- 在百炼控制台创建应用
- 修改「提示词」新增「自定义变量」


1.协议参数说明
客户端在与服务端建立 WebSocket 连接并发送 run-task 开始指令时,需在 parameters 中携带自定义角色的音色与提示词变量。
参数路径 | 类型 | 是否必填 | 说明 | 示例值 |
| String | 是 | 选配的角色音色编码。 |
|
| Object | 否 | 提示词自定义变量键值对,KV 结构需与控制台配置一致。 |
|
2.建联请求示例(JSON 协议)
编写角色 Prompt
Prompt 定义了角色的人设、风格和行为规则。在 prompt 中用 ${变量名} 引用已配置的自定义变量,系统在运行时自动替换为实际值。
Prompt模板结构
选择音色
音色通过 parameters.downstream.voice参数传入,在 SDK 层面生效。不同 voice 值对应不同的音色风格,建议根据角色性格选择匹配的音色。完整音色列表详见: 音色列表。
推荐音色
| 适用场景 | 名称 | 音色名称(voice参考值) | 年龄 | 音色特质 | 合成文案及样音试听 | 语言 | 备注 | |
| 标杆音色 | 龙安欢 | longanhuan | 20-30岁 | 欢脱元气女 | 你看我刚从食堂买的豆沙包!还是热乎的,我特意多买了一个给你,甜而不腻超好吃。对了对了,下午课间咱们一起去操场晒晒太阳吧,今天天气超级好! | 中英双语 | ||
| 龙安洋 | longanyang | 20-30岁 | 阳光大男孩 | 我呀,周末打算去书店逛逛,听说新到了一批科普杂志,你要是有空的话,咱们可以一起去,看完还能顺路去旁边的甜品店坐会儿。哦对了,你上次说想买的那支笔,我路过文具店帮你带了,试试好不好用。 | 中英双语 | |||
| 龙呼呼 | longhuhu_v3 | 年龄6-10岁 | 天真烂漫女童 | 喂,你有没有想过,如果我们能飞到更高的地方,是不是就能够看到整个大陆的全貌了呢!呼呼想想就觉得好激动啊! | 中英双语 | |||
| 消费电子-儿童陪伴 | 龙汪汪 | longwangwang_v3 | 年龄6-15岁 | 台湾少年音 | 大家好!我是专为3至12岁儿童设计的智能陪伴机器人,集语音对话、中英双语故事、儿歌播放、习惯养成与情绪互动于一体。我采用安全环保材质,具备护眼屏幕和家长远程管控功能,用温暖声音和趣味内容,全天候陪伴孩子快乐学习、健康成长! | 中英双语 | 多模态交互开发套件专属音色 | |
| 陪伴闲聊 | 龙安朔 | longanshuo_v3 | 20-25岁 | 干净清爽男 | 那个……要是你搬东西需要帮忙,随时叫我,我力气还挺大的,之前帮同学搬宿舍,好几箱书都是我扛上去的,别客气啊。 | 中英双语 | 多模态交互开发套件专属音色 | |
| 女声 | 龙菲菲 | longfeifei_v3 | 20-25 | 甜美娇气女 | 你最近是不是又熬夜了?明天我给你带热牛奶,顺便给你看我收藏的护眼食谱,保证让你眼睛亮晶晶的! | 中英双语 | 多模态交互开发套件专属音色 | |
| 陪伴闲聊 | 龙安智 | longanzhi_v3 | 25-35岁 | 睿智轻熟男 | 各位听众朋友们,欢迎收听今天的播客,今天咱们来探讨一下人生选择这个话题,每个人在人生的不同阶段都会面临各种选择,希望我分享的一些观点,能给你们带来一些启发。 | 中英双语 | ||
| 陪伴闲聊-接地气女 | 龙安亲 | longanqin_v3 | 20-25岁 | 亲和活泼女 | 哎!你们听说了吗?楼下新开了家奶茶店,装修得特别清新,还有好多新奇的口味,像什么杨枝甘露爆珠茶、草莓奶冻茶,听着就想喝。咱们下班一起去试试呗,要是好喝的话,以后下午茶就有着落啦! | 中英双语 | ||
| 陪伴闲聊 | 龙安灵 | longanling_v3 | 20-30岁 | 思维灵动女 | 欢迎大家来到今天的播客节目,今天咱们要聊的话题是关于职场成长的,我会跟大家分享一些实用的小技巧,希望能帮助大家在工作中少走一些弯路,更快地实现自己的目标。 | 中英双语 | ||
| 陪伴闲聊-高雅气质女 | 龙安雅 | longanya_v3 | 25-35岁 | 高雅气质女 | 周末在家泡一壶茶,选一本喜欢的书,坐在窗边晒晒太阳,阳光洒在身上暖暖的,茶香伴着书香,这样安安静静的时光,感觉心里特别舒服。偶尔还会写几笔毛笔字,让自己的节奏慢下来,享受这份惬意。 | 中英双语 | ||
| 语音助手 | 龙安温 | longanwen_v3 | 25-35岁 | 优雅知性女 | 晚上好,现在为您播放舒缓的音乐,帮助您放松身心,进入睡眠状态,如果您有其他需求,比如设置明天的闹钟,随时跟我说。 | 中英双语 | ||
| 语音助手 | 龙安昀 | longanyun_v3 | 30-35岁 | 居家暖男 | 您已经辛苦一天了,我已经为您调整好室内温度,还准备了您喜欢的饮品,您可以放松休息一下,有任何需要,都可以叫我哦。 | 中英双语 | ||
步骤二:多角色切换实现
维护角色映射表
1. 角色配置映射表
由于客户端开发语言存在差异,SDK 不代为管理角色列表,需由客户端在业务层自主实现配置管理。
建议在业务层维护一张角色与参数的映射表(每个角色包含固定的音色 voice 和对应的 user_prompt_params 变量组),同时在本地或业务服务端持久化存储当前用户(UID)与角色 ID 的绑定关系。
角色 ID (role_id) | 角色名称 | 音色 (voice) | 提示词变量组 (user_prompt_params) |
| 小欢 |
|
|
| 小阳 |
|
|
2. 客户端通用数据结构示例(JSON)
开发时,建议在本地客户端将上述映射关系及用户绑定关系以类似如下的通用结构进行存储(各语言可自行转化为本地的 Map/Dictionary/Object 结构):
角色切换流程
当用户在客户端界面触发“切换角色”或“切换音色”时,由于音色和提示词属于连接级参数,不支持在同一个 WebSocket 连接内热切换。客户端必须遵循“先断开、再重连”的标准流程:
1. 切换步骤说明
- 断开当前连接:客户端主动关闭当前的 WebSocket 连接,并销毁相关实例,释放底层音频双工通道及硬件资源。
- 更新绑定关系:在本地或业务服务端,将当前用户(UID)绑定的 Role ID 更新为新选定的角色。
- 加载新配置重连:从角色映射表中提取新角色的 voice 和 user_prompt_params 参数,重新发起 WebSocket 握手建联,并在首帧 run-task 指令中传入新参数。