-+
首页

技能和意图的创建


技能分析

目标: 开发查快递技能

交互场景分析: 场景1
  • 用户 :查一下顺丰快递的8888快件到哪里了?
  • 讯飞 :8888正在配送中
场景2
  • 用户 :我要查快递
  • 讯飞 :请问是哪家快递公司?
  • 用户 :顺丰
  • 讯飞 :请告诉我单号
  • 用户 :8888
  • 讯飞 :你的快递正在配送中
总结用户意图:
  1. 根据单号查快递
  2. 根据用户查快递

创建技能

在技能工作室中点击【+创建技能】,选择技能类别,输入技能名称即可创建技能。

技能类型

  1. 创建技能
    当你创建了技能,该技能在测试通过后可提交审核,审核通过该技能将发布到技能商店,供C端用户自由调用。

意图 2 - 图1

注意
  1. 技能标识不可修改不可删除技能。
  2. 技能类型不可修改

新建意图

创建技能后,可在交互模型页中创建意图。创建意图时需要填写意图的英文名和中文名。

意图 2 - 图2


admin 2023年4月4日 15:01 转发文档 收藏文档

意图配置


语料

以“根据单号查快递”意图为例,有多种说法,统称为语料:
  • 帮我查询顺丰快递8888
  • 顺丰单号8888到哪里了
  • 我什么时候才可以收到单号8888的顺丰快递
  • ……
压缩语料方法:
  • 通过模糊匹配覆盖相似度高的说法。
  • 对于句式类似的语料,使用可选符进行合并。
我们将这些提问方式添加进入控制台,如下图。

意图 2 - 图3

语料有2类,可自由选择:
例句语料:纯文本语料
模板语料:包含{}的语料

意图 2 - 图4

智能贴弧

系统自动判断例句语料的槽位,并匹配实体。如果错误,你可以手动改正。

定义语义槽

语义槽指语料中的参数。 用户说法:查{顺丰快递/EMS/圆通快递}
抽象语义槽并命名为company:查{company}

定义辅助词

辅助词:语料中经常出现,又不改变句式含义的词,如我要、查询、帮我。

语义槽绑定实体

将快递公司名总结为 实体{company} 每个语义槽可能有多个取值,例如{company}包含顺丰快递、圆通快递、EMS,将这些取值的集合称之为实体。每个语义槽均需与实体绑定。在以上的例子中,我们将语义槽{company}与实体expressCompany绑定。

意图 2 - 图5

新建实体

讯飞有一些开放的实体可以供开发者调用,比如针对快递单号语义槽 {number} ,使用官方开放实体 IFLYTEK.number 可以很好的解决。 但是快递公司的名称,需要开发者自己总结。新建静态实体快递公司/expressCompany如下图。

意图 2 - 图6

词条名仅支持中英文、数字、空格、._-%`()*+ 如下图为实体添加词条,建议词条填写归一化的实体名,别名填词条用户所有的可能表述方式。

意图 2 - 图7

新建实体时,建议实体提供的值列表全面涵盖了用户的预期。有时你的技能无法支持对用户可能说出的值,但我们希望你依旧可以理解这个词。 例如:如果你制作一个查询国内城市天气的技能,但用户可能会说“帮我查一下洛杉矶的天气”。为了更好的用户体验,我们希望你的技能能够理解“洛杉矶”是一个城市。

填槽对话

以下用户说法缺失了信息,填槽对话用于追问用户,补充信息。可在控制台中设置语义槽是否必填。 举例
  • 用户 :查顺丰快递
  • 讯飞 :请告诉我快递单号 (填槽对话:追问单号信息)
  • 用户 :88888888
若勾选对话必须,则可以且必须自定义追问语句(ElicitSlot)以及回答语料,否则技能可能无法命中。 开发者可以在「意图编辑页-实体」中将实体勾选为「对话必须」,当缺少必须的实体时,会主动追问,参照下图设置。

意图 2 - 图8

平台暂不支持可视化的配置槽位确认(ConfirmSlot)
  • 关闭云函数时,系统会按照你在页面上的配置,依次引导用户填写必选槽位
  • 开启云函数时,你应当每次请求到来时,你都应当根据你的业务逻辑,判断此时此刻是否需要进行槽追问,槽确认,意图确认。如果你不想处理,可以使用 DelegateDirective(托管)指令,此时系统会根据当前的槽位状态以及你在平台上的配置,自动的去触发槽追问(ElicitSlot) 或者意图确认(ConfirmIntent)
填槽对话是意图内的多轮对话,详细概念可参考填槽对话章节。

技能回复

可按需添加,如不添加,“模拟测试”和端侧测试可能无法命中技能。

意图确认

前提:勾选对话必须 你可以选择开启意图确认(ConfirmIntent)并填写意图确认语句。

批量导入


批量导入格式说明

批量导出

导出技能

对某一个技能进行批量导出操作。你可以导出后进行本地修改,修改完成后导入进行覆盖,也可以导出后再导入另一个技能,达到技能复制的目的。

导出实体

对某一个实体的所有词条和别名进行导出操作。你可以导出后进行本地修改,修改完成后导入进行覆盖,也可以导出后再导入另一个实体,达到实体复制的目的。

技能导入

文件包说明

  1. 上传.zip文件即可导入技能。导入的.zip包中包含一个config.json文件,和意图文件意图英文名.json
  2. 上传后,系统会对上传的文件进行校验。请确保:.zip文件包中,所有json文件都在一个文件目录下,不包含多余的文件夹。 1. 意图英文名.json文件中不存在重复的语料。

config.json说明

config.json已升级为v2.1版本,请注意导入时将version字段修改为2.1 2.1版本与2.0版本除版本号外,其他信息未做修改。

示例

  1. {
  2. "version": "2.1",//本次更新
  3. "intents": {
  4. "queryWeather": {
  5. "chineseName": "查询",
  6. "entranceIntent": true,
  7. "confirmation": {
  8. "required": true,
  9. "prompts": [
  10. "确认查询吗",
  11. "确定吗"
  12. ]
  13. },
  14. "assistWords": {
  15. "how": "IFLYTEK.Modal",
  16. "please": "IFLYTEK.Please"
  17. },
  18. "slots": {
  19. "city": {
  20. "order": 1,
  21. "entity": "IFLYTEK.ChinaCity",
  22. "elicitation": {
  23. "required": true,
  24. "prompts": [
  25. "您想问哪个城市",
  26. "哪个城市"
  27. ]
  28. }
  29. },
  30. "time": {
  31. "order": 2,
  32. "entity": "IFLYTEK.Datetime",
  33. "elicitation": {
  34. "required": false
  35. }
  36. }
  37. },
  38. "intent2的英文名": {
  39. //intent2的信息
  40. }
  41. }
  42. }
  43. {
  44. "version": "2.0",//保持不变
  45. "intents": {
  46. }
  47. }
Copy

字段说明

字段 说明 数据类型 是否必需
version 导入的协议版本,当前取值:2.1。 String
intents 该技能下的所有意图信息。 Object
intent[i] 该技能下的某一个意图的信息,技能下至少有一个意图。该字段取值为意图的英文名。 Object
intent[i].chineseName 该意图的中文名,若该字段留空,则将取值为意图英文名 String
intent[i].entranceIntent 该意图为入口意图。取值:true(入口意图),false(对话意图)。 请注意,在商店技能中,所有意图均为对话意图,导入时该字段将不会被处理 Boolean
intent[i].confirmation 该意图的意图确认信息。 Object
intent[i].confirmation. required 该意图是否需要确认。取值:false(不需要确认),true(需要确认) Boolean
intent[i].confirmation. prompts 进行意图确认时的确认话术,这是一个string的list List
intent[i].assistWords 该意图的语料中包含的辅助词。若意图没有辅助词,该字段留空。 Map
intent[i].assistWords.* 辅助词的key-value键值对。格式为:“key”: “辅助词英文名” 若使用的是官方辅助词,则需要带上IFLYTEK.的前缀。 若使用的是自定义辅助词,则填写自定义实体的英文名。
intent[i].slots 该意图的语料中包含的词槽。若意图没有词槽,该字段留空。 Map
intent[i].slots.*slots[i] 该意图的语料中包含的某一个词槽信息。 Object
intent[i].slots.*slots[i]. order 该词槽的顺序 Integer
intent[i].slots.*slots[i]. entity 该词槽对应的实体的英文名。 若使用的是官方实体,则需要带上IFLYTEK.的前缀。 若使用的是自定义实体,则填写自定义实体的英文名。 String
intent[i].slots.*slots[i]. elicitation 该词槽的追问信息 Object
intent[i].slots.*slots[i]. elicitation.required 该词槽是否必须,若词槽必填,当用户语料中缺少该槽时,将会进行追问。取值:true(必填槽),false(非必填槽) Boolean
intent[i].slots.*slots[i]. elicitation.prompts 必填槽缺槽时的追问话术 List

请确保

  1. intent[i]的取值为意图的英文名,在.zip文件夹中有对应的意图存在。
  2. config.json文件中的意图信息,与意图英文名.json的意图信息完全相等,不存在多于或少于的情况。
  3. config.json文件中包含的实体、辅助词信息,与语料文件中引用的实体、辅助词信息一致,不存在多于或少于的情况。

意图英文名.json说明

config.json版本为2.0时,意图文件为.txt格式,2.1升级为.json格式,后续将支持更多字段。

示例

  1. [
  2. {
  3. "text": "{time}{city}天气怎么样"
  4. },
  5. {
  6. "text": "{今天:time}{广州:city}热不热"
  7. },
  8. {
  9. "text": "天气怎么样"
  10. }
  11. ]
Copy

字段说明

整个文件为一个List,每一句语料为一个Object,每个Object中可能包含以下字段
字段 说明 类型 是否必需
text 语料文本。 String

语料写法

语料的3种写法:
  1. 模板:{time}{city}天气怎么样。其中花括号中的内容为词槽。
  2. 贴弧:{今天:time}{广州:city}热不热。其中花括号中为显示的文本今天和对应的词槽time
  3. 纯文本:今天广州热不热。
模板写法支持可选符
{}代表词槽
[ ]代表可选,语料不包含可选内容也能命中。例:呼叫张三[的电话|的手机]
  • 呼叫张三
  • 呼叫张三的电话
  • 呼叫张三的手机
( )代表必选,语料必须包含才能命中。例如:(呼叫|联系)张三
  • 呼叫张三
  • 联系张三

注意

  • 一句语料至多有5个中括号和小括号。
  • 仅「模版语料」支持可选符写法**

实体导入

实体导入可选择批量覆盖和批量追加。支持excel、txt格式

excel格式

示例

词条名 别名
北京 帝都 首都 京城 皇城
合肥 霸都 安徽省省会 安徽省会

说明

在excel的第一列填写词条名,后面的列中填写该词条名对应的别名。

txt格式

示例

  1. 北京
  2. 帝都 北京
  3. 首都 北京
  4. 合肥
  5. 霸都 合肥
  6. 安徽省省会 合肥
  7. 庐州 合肥

说明

在txt的第一行填写词条名,回车后填写别名。别名TAB符分隔后填写对应的词条名。

审核发布


发布私有技能

技能发布前,保存并体验 只能在页面上的 快速体验 中验证效果,如果想要在AIUI应用中生效,必须点击 私有发布 按钮。

意图 2 - 图9

说明
  1. 私有技能,可在AIUI引用该技能。应用引用技能后才生效。
  2. 技能更新后,应用不会自动更新。通过移除后再次添加技能更新官方技能。通过在应用中生效来更新私有技能。更新后要测试

技能测试


在线测试

技能和实体的配置保存并构建完成后,在页面右侧的测试窗,输入“查询顺丰的12345”,可查看结构化数据结果。

意图 2 - 图10

测试返回

用户的语音输入经过语音识别后将会通过交互模型进行语义理解和后处理进行逻辑处理。 在测试时你会遇到以下几种情况:
  1. 测试窗正常返回了你预期的回复。
  2. 测试窗对话中未返回你预期的回复,但语义理解结果正确。
此时请确认你的技能是否已打开技能后处理,并查看后处理是否正确执行。
  1. 测试窗对话中未返回你预期的回复,且语义理解结果不正确。
此时请确认你的输入是否正确,若输入正确,你完善你的交互模型。 错误码说明
错误码 说明 处理方式
204 技能没有正常返回 1. 请检查输入的文本,是否被该技能中的常用表达所覆盖 2. 请检查是否打开了技能后处理 3. 请检查技能后处理是否按照2.1技能协议
正确返回
206 服务超时,一般是服务调用超时 查看你的服务收到的request,确定超时的服务
400 无效输入 查看你的服务收到的request,检查入参格式与取值是否合法

admin 2022年11月9日 14:21 转发文档 收藏文档