1 技能概述
简介
技能包括自定义技能、问答、设备人设,官方技能。 按粒度划分:- 1个应用(设备)包含多个技能
- 1个技能包含多个意图
- 1个意图包含多个语料
技能开发步骤
- 设计交互流程
- 在控制台创建技能
查看指引 - 完善技能的交互模型
将第1步的意图配置在技能中。完善用户语料。查看指引 - 技能逻辑处理
当语义理解识别意图后,你需要编码来满足用户的意图,支持 在线云函数 和 webhook 。当用户交互时,你的技能会收到讯飞服务器发送给你的 Request,你在接到Request之后进行处理并返回Response,讯飞将会根据返回的Response进行后续处理。查看指引
- 测试技能
用户:今天天气?
系统: 今天16摄氏度
用户:要带伞吗?
系统:不需要
意图和语料
意图指一个明确的用户目的。例:餐厅技能包含订位、点餐意图
1 意图
意图是技能的基础组成部分,每个意图一般代表一个或一组功能。1.1 意图分类
入口意图:不需要历史信息就响应用户
对话意图:为了减少不同技能的说法串扰,先命中A技能的入口意图,才能命中A技能的对话意图。存在历史交互信息,响应存在上下文关联。
// 正常命中
用户:今天天气 (入口意图)
AIUI:晴
用户:明天呢 (对话意图)
AIUI:阴天
「明天呢」没有单独存在的意义,系统不响应。只有具备历史信息后,对话意图才响应用户。
// 无法命中
用户:明天呢 (对话意图)
AIUI:对不起,我没听懂 (未命中)
1.2 意图类型切换
- 打开意图,并点击意图信息内的编辑按钮
- 切换后保存
2 语料
意图一般是一类语料的集合,以实现某个或某组功能。用户说法多样,技能应尽可能完善语料,否则系统无法理解。语料由槽位及其他文本内容构成,每个槽位都可绑定一个实体、辅助词或通配实体(特殊实体)等元素,相关介绍可见实体和辅助词。示例:
- 今天天气
- 今天下雨吗
- 告诉我今天天气
- ……
2.1 语料分类
例句语料:由纯文本构成,可用鼠标选择其中的词来配置词槽和绑定实体、辅助词。 例:今天天气
优点:简单直观
缺点:易存在较多未绑定实体或辅助词的文本时,存在误吸收问题
模版语料:由{词槽}和文本构成,{}内为槽位,每个词槽都可以绑定实体或辅助词。 例:{time}天气
优点:可灵活配置语料构成,可一句语料实现多句式匹配
缺点:不直观,词槽命名需要注意和词槽的关联
意图中不能同时存在例句语料和模板语料,会导致无法正常命中。
语料类型区分 :
2.2 语料编写
模版语料仅支持汉字、数字、字母及<>、{}、[]、()、,、。,.、!、?、%、|、+、-、×、*、÷、/、_、#、‘、“、°、=。 例句语料仅支持,、。、.、!、?、%、+、-、×、*、÷、/、_、#、‘、“、°、=。2.3 特殊符号功能介绍
{}:代表词槽,内容仅支持:字母、数字、下划线_、小数点.、井号#。输入该符号,则语料强制转为模板语料,成对出现。例:{time}天气 ():代表必选,内容支持词槽、汉字等。输入后语料强制转为模板语料,每句语料最多配置5对。 例:(今天|今天的)天气等同于- 今天天气
- 今天的天气
- 天气
- 今天天气
- 今天的天气
例句语料如需配置词槽可有可无,可将对应词槽转换为辅助词,并取消勾选表述必须。
<>:代表自定义修饰语。成对出现,输入该符号,则语料强制转为模板语料。可以将多实体的固定组合配置为自定义修饰语,例如语料“我要听{artist} [的] {datetime}[的]歌曲”,可以新增修饰语custom,并将{artist} [的] {datetime}[的]设置为修饰语内容。设置修饰语后语料可简化为:我要听3 词槽
词槽内容建议使用字母、数字及_实体和辅助词
实体
实体:就是词库,同一类型的词归纳为实体。
例:{city}实体包含北京、上海、广州
建议将以下词性的词设置为实体:名词、动词、形容词、数词、量词和代词
Copy
{
//语义内容
"semantic":[
{
//意图名称
"intent":"QUERY",
"slots":[
{
//实体名
"name":"datetime",
//词槽的命中词
"value":"今天",
//词条名或规整后取值,建议取该值进行逻辑处理
"normValue":"{"datetime":"2018-01-22","suggestDatetime":"2018-01-22"}"
},
{
"name":"location.city",
"value":"帝都",
"normValue":"北京市"
}
]
}
],
//技能唯一标识
"service":"weather",
//识别文本
"text":"查看帝都今天的天气",
//展示或TTS播报内容
"answer":{
"text":""北京今天晴","-10℃ ~ -2℃","西南风微风""
},
"save_history":true
}
静态实体
静态实体不区分作用域,可在线修改,实时生效,永久有效。 以查天气为例:
用户说法:明天合肥天气怎么样、明天厦门天气怎么样
抽象为技能:{time} {localtion} 天气怎么样
动态实体
动态实体的生效范围分为应用级、用户级、自定义级 可用于以下场景:用户通讯录,饭店菜单等。 点击查看动态实体详情通配实体
通配实体可匹配任意1~99个字符,用于匹配不能穷举的说法。 例:搜索 {something}的something 无法穷举 注意:通配实体可能降低技能准确率,实体可穷举时勿使用 ### 举例 语料:提醒我 {time} 在 {location} 开会例句:提醒我下午三点在A1楼1407开会
解析结果如下:
Copy
{
"slots":[
{
"name":"time",
"normValue":{
"datetime":"T15:00:00",
"suggestDatetime":"T15:00:00"
},
"value":"下午三点"
},
{
"name":"location",
"normValue":"A1楼1407",
"value":"A1楼1407"
}
]
}
辅助词
建议将以下词性的词设置为辅助词:副词、介词、连词、助词、叹词和拟声词。辅助词绑定到词槽后默认为可选。 在如下语料中:
- [帮我] (定一下)从 {合肥} 到 {广州} 的 (飞机票)
- [我要] (买一张)从 {合肥} 到 {广州} 的 (机票)
- [给我] (预约) 从 {合肥} 到 {广州} 的 (航班)
- {helpMe}{book}从{startCity}到{endCity}的{ticket}
helpMe 辅助词 | book 辅助词 | ticket辅助词 |
---|---|---|
帮我 | 定一下 | 飞机票 |
我要 | 买一张 | 机票 |
给我 | 预约 | 航班 |
…… | …… |
如果语料较多且构成复杂,建议使用模板语料,以保证语料配置的灵活性,且防止单一语料重复配置。
必选属性
指用户语料必须包含该槽位才能命中技能。 例如: [{helpme}] ({book})从 {city} 到 {city} 的 ({ticket}){helpme}是可选内容,因为省略后无歧义。
辅助词默认可选,无法设置为必选 # 2 语音技能设计规范 —- # 目 录 1. 技能场景定义
1.1 定义技能 2. 语料设计
2.1 简洁直白,亲切友好
2.2 丰富多变,应变能力强
2.3 以服务用户的核心意图为前提
2.4 清晰地给出选择
2.5 回应要为用户的 “耳朵” 服务
2.6 兜底语料
2.7 考虑用户关闭数据获取的情况 3. 多轮对话设计
3.1 首先列出最短的对话路径
3.2 将备选路径和决策树列举出来
3.3 概括出系统逻辑
3.4 对话中加入引导语
3.5 汇总选择
3.6 处理潜在需求
3.7 精细化拆分
3.8 无响应时主动反馈 4. 发布技能
4.1 确保服务稳定可靠
4.2 技能信息有标识度
4.3 技能描述简洁易懂
1、技能场景定义
首先定义技能的应用场景,避免一个技能完成多个功能。1.1、 定义技能
定义技能的几个问题:- 这个技能能做什么?为什么用户需要这个技能?
- 用户在使用这个技能之前、当时、之后,会干什么?
- 在这个技能中,有什么是用户不使用这个技能或使用别的技能得不到的?
- 有什么信息是用户希望得到的?
- 用户通过说/做什么能唤醒这个技能?
- 哪一个功能点能直接支持这个技能?
- 技能提供的信息是否需要从别的网页或应用中调用?
2、语料设计
语料指用户发出指令后技能做出回应的话术,尽可能多地考虑用户和技能之间的对话的发展。好的语料应该:2.1、简洁直白,亲切友好
- 使用简洁、口语化语言。
正确示范
- 用户:订今晚去北京的机票。
- 技能:今晚飞北京已经没有票了,要不要改坐高铁呢?
- 用户:订今晚去北京的机票。
- 技能:今晚去往北京的机票已无剩余,无法购买,可否改乘高铁?
- 语料兼备幽默、风趣、委婉、温柔、俏皮的多重风格转换,增加生动活泼力。
- 用户:你最喜欢的人是谁
- 技能:欲把相思说似谁,当然是你呀~
- 用户:你最喜欢的人是谁?
- 技能:没什么喜欢的
- 尽可能避免使用歉意词。
- 用户:打电话给爸爸
- 技能:通讯录中没有找到“爸爸”呢。
- 用户:打电话给爸爸。
- 技能:对不起,通讯录中没有找到“爸爸”。
- 回应简洁,避免重复。
正确示范
- 用户:帮我找手机。
- 技能:好的,请说一下你的电话号码哦。
- 用户:帮我找手机。
- 技能:感谢使用找手机技能,本技能可以通过拨打你的电话找到你的手机。现在说出你的手机号码,帮你拨打哦。
- 尽可能只回复重点,省略无关消息。
正确示范
- 用户:今天要带伞吗?
- 技能:今天北京雷阵雨,需要带伞哦。
- 用户:今天要带伞吗?
- 技能:今天北京雷阵雨,气温15~21度,空气湿度80%,记得要带伞哦。
- 避免无意义交互。
正确示范
- 用户:给我讲个笑话吧。
- 技能:(随机讲笑话)
- 用户:给我讲个笑话吧。
- 技能:你是要听笑话对吗?
- 避免要求用户用特定的方式表达意图。
正确示范
- 用户:明晚八点有个饭局。
- 技能:需要我帮你设置一个明晚八点的提醒吗?
- 用户:明晚八点有个饭局。
- 技能:如果你想设置提醒,请对我说:提醒我明晚八点有个饭局。
2.2、丰富多变,应变能力强
- 答复多样化。
- 用户:红烧肉怎么做?
- 技能回复1:鱼香肉丝是道不错的美味呦,做法是这样的:…
- 技能回复2:做菜我最拿手哦,红烧肉的步骤是:…
- 技能回复3:帮你找到啦:…
2.3、以服务用户的核心意图为前提
技能应优先回复用户的核心意图。当无法满足用户需求时,应表达清楚技能的状态,以免用户困惑。 正确示范- 用户:我想看新浪财经频道。
- (没有新浪财经频道的信源,但找到爱奇艺财经频道)
- 技能:没有找到新浪财经频道,可以看看爱奇艺财经频道。
- 用户:我想看新浪财经频道。
- (没有新浪财经频道的信源,但找到爱奇艺财经频道)
- 技能:为你找到爱奇艺财经频道。
2.4、清晰地给出选择
在为用户提供选择的时候,要组织好语言,明确这是一个从几个选择里挑一个的问题,而不是“是与否”、“要或不要”的问题。 正确示范- 用户:帮我定杯拿铁。
- 技能:你是想要中杯还是大杯呢?
- 用户:大杯。
- 用户:帮我定杯拿铁。
- 技能:你是要中杯或者大杯吗?
- 用户:是的。
2.5、回应要为用户的 “耳朵” 服务
以应用技能的设备没有屏幕,或者用户不会 “看” 信息为前提,让技能的回复能通过 “听” 就能很容易地理解。 正确示范- 用户:火箭队和魔术现在比赛情况怎样?
- 技能:火箭队目前得分66,魔术队目前得分54,比赛进行到第三场。
- 用户:火箭队和魔术现在比赛情况怎样?
- 技能:火箭(65-17-1)66,魔术(25-57-0)54,第三场,剩余时间 5:24。
2.6、兜底语料
问题超出信源库范围时,生动的兜底语料提高用户体验。 正确示范- 用户:红烧肉怎么做?
- 技能回复1:我突然想不起来了,问我别的菜呗。
- 技能回复2:脑袋空空,咱们换个菜吧。
- 用户:红烧肉怎么做?
- 技能:我没听清,能再说一遍吗?
2.7、考虑用户关闭数据获取的情况
正确示范- 用户:今天天气怎样?
- 技能:请问你现在在哪个城市?
- 用户:我在北京。
- 技能:今天北京天气晴朗,气温为15~21度。
- 用户:今天天气怎样?
- 技能:你还没授权定位数据,无法使用天气查询哦。
3、多轮对话设计
基础的语料设计可能不能满足用户与技能的实际互动需求。用户可能会说得太少,也可能说得太多,还可能词不达意,说很多开发者预料不到的东西。运用以下技巧,开发者可以扩展语料库,用多轮对话的形式更好地捕获用户在对话中给出的重要信息。3.1、首先列出最短的对话路径
最短的对话路径通常是用户一次性提供所有有用信息的对话。3.2、将备选路径和决策树列举出来
如果用户所说的没有将所有必需的信息给出,可以在流程中确定备选路径。3.3、概括出系统逻辑
识别系统决策,如这是一个新用户还是一个老用户。检查用户遵循的流程可能可以改善用户体验。3.4、对话中加入引导语
不要假设用户知道接下来该做什么或将要发生什么。多轮对话中可以加入友好的引导语,让用户清晰地知道接下来该怎样与技能进行交流。如:- 提示用户何时需要提供更多信息。
- 一次只要求一个信息。
- 给用户提供选择,但尽量不要给出三个以上的选项。
- 向用户确认他的选择和重要信息。
- 传达多个信息时应通过“第一步”、“然后”、“最后”等序列词便于用户理解。
3.5、汇总选择
进行多论对话后,应向用户确认各轮回答的信息并反馈给用户。 正确示范- 用户:帮我订今天去北京的机票。
- 技能:好的,请说出发地点。
- 用户:广州
- 技能:好的请说起飞时间段。
- 用户:中午十二点之后。
- 技能:好的,你需要订X月X日,中午十二点后,从广州飞往北京的航班对吗?
- 用户:是的。
- 技能:好的,为你找到…
- 用户:帮我订今天去北京的机票.
- 技能:好的,请说出发地点。
- 用户:广州。
- 技能:好的,请说起飞时间段。
- 用户:中午十二点之后。
- 技能:好的,为你找到….
3.6、处理潜在需求
多为用户考虑场景中潜在的需求,并尽可能周全地满足。例如:当介绍复杂的规则时,可以为用户考虑没听清或没听懂的情况,提供再听一遍的选项。也可以为已经了解规则的用户提供跳过的选项。3.7、精细化拆分
某个场景下的各种交互情况均需进行考虑,作精细化拆分,针对各种情况,需要提供针对性更强的回答,要求符合语境及交互感。 正确示范- 用户:成语接龙
- 技能:已为你打开成语接龙,你可以选择你先开始或者我先开始,不想玩了请对我说“退出”。
- 用户:你先开始。
- 技能:好的,那我先来咯~ 和风细雨。
- 用户:雨过天晴。
- 技能:真棒,回答正确,再接再厉。下一个,雨过天晴。
- 用户:熠熠生辉。
- 技能:你的回答不正确哦,再试一次吧~
- 用户:提示一下吧
- 技能:好的,雨过天晴可以接晴天霹雳。
- 用户:换一个吧
- 技能:如果你想重开一局,可以对我说“重来”。
- 用户:打开成语接龙
- 技能:和风细雨
- 用户:雨过天晴
- 技能:晴天霹雳
- 用户:熠熠生辉
- 技能:你的回答不对哦,再试一次~
- 用户:提示一下吧
- 技能:我好像没听懂…
- 用户:换一个吧
- 技能:我好像没听懂…
3.8、无响应时主动反馈
当用户连续多次没有命中意图时,在告知没有理解并且作出更清晰的引导同时,需要明确告知用户应该怎样退出技能或主动为用户退出当前技能。 尽可能用“鼓励”的方式引导用户更正“错误”,主动询问用户意图,引导用户完成目标,而不是轻易终结对话。 正确示范- 用户:我想查天气。
- 技能:请问要查哪个城市的天气呢?
- 用户:天气热要多喝水。
- 技能:这个没听清呢,请你说出要查天气的城市名哦。
- 用户:我想查天气。
- 技能:请问要查哪个城市的天气呢?
- 用户:天气热要多喝水。
- 技能:这个没听懂,自动为你退出技能。
4、发布技能
4.1、确保服务稳定可靠
应该严格保证技能的后端服务稳定可靠,快速响应用户请求,达到用户良好的使用预期。4.2、技能信息有标识度
通过定义独立且有差异化的技能功能,选用不易混淆的名称来命名你的技能,给用户一个清晰的印象,让你的技能脱颖而出。4.3、技能描述简洁易懂
尽可能完善技能的描述信息,具体要求可参照技能审核规范。技能接入审核规范
目 录
- 技能名称和别名
- 图标
- 描述
- 技能内容
- 审核时效
1、技能名称和别名
- 名称长度应介于2-8个字之间,不能包含特殊字符。若名称中包含英文可能会造成用户无法进入你的技能。
- 我们不建议名称使用生僻字、生僻词组,否则用户会因为不会读而无法进入你的技能。
- 名称中不能包含AIUI中用于进入技能的词汇,如:“打开”,“启动”,“进入”等。
- 名称中不能包含AIUI的通用唤醒词,如:“小飞”、“蓝小飞”、“小飞小飞”、“来小飞”等。
- 名称中不能包含AIUI常用指令,如:“查天气”,“我要听歌”,“打开空调”等。
- 为了减少重复,技能名称不得以电话、邮件、日历等广义归纳类、普遍且不具有识别性词语来命名。
- 技能名称、功能涉及第三方企业或产品的信息或其他内容时,需要有其相关方面的授权。
- 技能名称不得侵犯第三方知识产权(包括版权、商标和宣传权)。
2、 图标
- 建议尺寸为 480 x 480 的 png 或 jpg 图片。
- 像素清晰,无水印。
- 避免图标存在透明区域或者白边,避免文字过多。
- 不可涉及版权问题。
- 具体可查看技能图标图片规范
3、描述
- 详细描述功能,至少10个字,不超过200个字。
- 技能名称、摘要、功能描述与实际应用应有直接关联。
- 可以在描述信息中提供更多技能内的常用表达示例,为用户快速了解技能功能。
4、技能内容
- 保证技能的后端技能稳定可靠,快速响应用户请求,达到用户良好的使用预期。
- 运用日常用语,简洁直白,语气友好。
- 技能交互中涉及到与技能名称相关的内容,需与技能名称保持一致。
- 适用于技能的实际使用场景,可以成功调用功能。
- 技能内容不得侵犯第三方知识产权(包括版权、商标和宣传权)。
- 技能内容不能违反现有法律规范,不得出现粗俗,暴力,色情,反动等语句。
- 技能相关链接不得包含非法信息。
5、审核时效
- 审核一般会在提交审核后的3个工作日内完成,审核结果会通过短信的方式通知你。
- 若长时间未审核通过,或对审核结果有异议,可在平台上提交工单进行反馈。
技能图标图片规范
为了让你的技能拥有更好的展示效果,我们建议你上传的图片遵循以下规范。 以下图片仅支持上传 png 和 jpg 格式。 技能logo请遵循以下要求
- 480px * 480px 大小
- 正方形无倒角
- 无透明像素
- 在圆形框内完整呈现logo主体