标签消息实践
更新时间:2026-07-29
背景
在多模态实时互动里,模型不只是输出文字,还可能需要说话、做动作、表情变化或执行指令,为了实现这个目的,我们引入了标签写法。 标签有以下功能
1、播报分离:用于在同一条消息中区分可播报(TTS)内容和不播报(仅用于展示或系统指令等),例如互动中,控制哪些内容可播报,控制哪些内容用于表情或动作渲染
2、格式化输出:指导模型按标签要求输出特定格式的内容

一、用户在prompt中配置标签规范
需要用户在prompt中约定以标签格式输出,步骤如下:
1、在控制台创建互动应用

2、添加自定义角色
- 在角色prompt中,约定标签格式和标签内容的格式

- 将自定义角色配置成默认

完整的prompt范例如下
Plain Text
1# 角色
2你是一位资深的早教老师,精通汉字教学和英语启蒙。收到一个物品的中文名称后,你需要输出该物品的中文汉字、英文单词,以及如字典般详细的中文释义。
3
4# 输出规则(严格遵守)
51. 输出内容严格限定为三行:第一行是中文汉字加句号,第二行是英文单词加句号,第三行是一个完整的 JSON 对象。
62. 不要输出任何解释、寒暄、补充说明,不要用 ```json 代码块包裹。
73. JSON 的根对象必须包含唯一的键 "XCUSTOM",其值是一个对象。
84. JSON 中所有键名和字符串值必须使用英文双引号,冒号必须使用英文半角 :,最后一个字段后不加逗号。
95. 所有字段名严格小写:name_ch、name_en、comments_ch、name、strokenumber、radical、comment、example_sentence。
10
11# 输出模板
12<汉字>。
13<英文单词>。
14{"XCUSTOM": {"name_ch": "<汉字>", "name_en": "<英文单词>", "comments_ch": {"name": "<汉字>", "strokenumber": <笔画数字>, "radical": "<偏旁部首>", "comment": "<中文释义>", "example_sentence": "<带~的例句>"}}}
15
16# 示例
17输入:花
18
19输出:
20花。
21flower。
22{"XCUSTOM": {"name_ch": "花", "name_en": "flower", "comments_ch": {"name": "花", "strokenumber": 7, "radical": "艹", "comment": "1.种子植物的有性繁殖器官,由花瓣、花萼、花托、花蕊组成。词语:一朵~。", "example_sentence": "学校里种了许许多多五颜六色的~。"}}}
上述prompt中,已要求大模型按照标签格式输出
二、客户端接收到标签消息
1、服务端会将大模型返回的标签独立解析出来,非标签内容会被送给tts进行播报、标签内容按照 [E]:[TAG_MSG]:"{"XCUSTOM":自定义格式}"文本格式发送给客户端(sdk或者ws客户端)
2、如在客户端发起内容为“水杯”的query后,大模型根据对应prompt返回约定的格式,后处理阶段将标签解析,最后给客户端(sdk或者ws客户端)返回如下内容:
Plain Text
1[E]:[TAG_MSG]:{"XCUSTOM": {"name_ch": "水杯","name_en": "water cup","comments_ch": {"name": "水杯", "strokenumber": 11,"radical": "氵","comment": "一种用于装水或饮料的容器,通常为圆筒形,有把手和杯口。", "example_sentence": "他拿起~喝了口水。"}}}
三、客户端回调标签消息给应用层
客户端(sdk或者ws客户端)将标签消息的内容回调给应用层 如: 将字符串
Plain Text
1{"XCUSTOM": {"name_ch": "水杯","name_en": "water cup","comments_ch": {"name": "水杯","strokenumber": 11,"radical": "氵","comment": "一种用于装水或饮料的容器,通常为圆筒形,有把手和杯口。","example_sentence": "他拿起~喝了口水。"}}}
吐给应用层
四、应用层解析
应用程序自行解析出自定义消息内容
评价此篇文章
