开发者学堂课程【AI语音技能云开发实践-1024程序员节创造营公益课:【你说,我在 】创建意图,实现查天气的单轮对话】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/897/detail/14309
【你说,我在 】创建意图,实现查天气的单轮对话
目录:
一、如何让技能更好玩?
二、问答环节
一、如何让技能更好玩?(例如:天气查询)
1、先创建意图,配置语调,用户说话的语句需要尽可能输全,在保存。
2、创建实体:实体值也要尽量输全,避免影响用户体验,公共实体也方便创建。
例:当用户说到杭州两字时,会自动到参数中的关联实体中的城市里,也会有对应的日期。
3、如果用户没有说城市,可以设置精灵追问”请问是哪一个城市呢“。
在多轮对话中的设置中跟模板差不多
4、代码设置:
//处理名称为 welcome 的意图
if("welcome ".equals(task Query .get Intent Name()){
task Result .set Reply
("欢进使用天气小莹,使用小莹可以查询天气哟):
else if (""query weather ".equals(task Query .get Intent Name())f
//处理名称为 weather 的意图
//query weather 意图中 date 总数设置了默认值,请求数据中一定会携带 date 参数,只需要判断 city 参数有没有。
if (para map .get("city") = null)
task Result .set Reply
(“您要查询哪个城市的天气”);
return ask Reply(task Result ,"city", task Query .get Intent Id()):
}
TODO 根据参数获联实际天气信息。这里使用mock数据替代
task Result .set Reply(param Map .get("city")+ param Map .get(sys .date
(公共实体))+天气晴");
}else if (""query Air Quality ".equals(task Query .get Intent Name()))
处理名称为 query Air Quality 的意图
//query Air Quality 意图中 date 参数设置了默认值,请求数据中一定会携带 date 参数,只需要判断 city 参数有没有。
if (param Map .get("city") =null){
task Result .set Reply
("您想要查询哪个城市的空气质量"):
return ask Reply(task Result ,“city"". task Query .get Intent Id());
}
显示部署成功后,点击测试就可以进行在线测试真机测试。
二、问答环节
1、问:代码是不是都可以自己拉下来?
答:目前来说,举个例子,拿天气查询和地理小百科等几个常规的应用来说,做了一个模板,在云开发也有一些支持的三种语言,如果用模板生成的话,可以稍微进行修改。
自己开发小应用的话,有一些自己的逻辑和思考,也可以参考平台上面的文档,里面有一些具体的指导和逻辑,结合文档可以自己开发一个属于自己的技能和应用。
2、问:如果在核端代码里调用Y5是否允许
答:这个是允许的,我们对与天猫精灵的应用来说,它服务端的部署这里介绍的是 fast,因为运营成本比较低,阿里云也帮我们解决了运营和服务器的问题。
其实也是支持自己参与到服务器,这样是可以直接请求到服务器里面的,这个服务器也是可以直接调用别人的代码或者服务器。
3、问:通过 sexy the play 来实现多轮上下文交互
答:可以通过 sexy the play 的方式来实现多轮上下文交互,其实这里可以用引导的方式,但它重点的其实还是在于你。刚刚演示的那个页面上面的意图的配置方面,比方说,这个里面介绍的一个多轮的配置,那这个里面的配置还是命中在这个查询天气的意图里面,只是在问其他的城市或其他的时间来实现了一个多轮。
假设还有其他形式的多轮,它的核心是说,能够让音箱播出你想它播出的话,也就是说这个话里就很灵活;比方说,假设实现了一个其他的意图或者其他的功能,那你甚至可以引导用户往你的那个意图上面说,这样就实现了一个功能广泛强大的多轮的这个形式。
4、问:返回的响应内容大小是否有限制?
答:这个的话是有一定限制的,但是目前的话,因为音箱播放它总的来说是要播放出语音方式,这个当前的限制和在文本的这个情况下呢,一般来说不太会出超过这个限制的场景。
5、问:怎么算是终端当前的多轮对话?
答:怎么算是终止当时的多轮对话,这个其实是刚刚说到的主要是看你的意图怎么配置;比方说,刚刚查询天气的意图里,查询天气里面这个多人,但实际上多人是一个很广泛的。
其实就是一个和用户的自然的对话,让我们理解比较两个人在对话,不断的对话其实就是一个多轮。
6、问:必须先使用技能第二次化型技能,然后才有反馈?
答:合并成一步的话,在线测试这个地方,上面有一个引导,就是说,可以说这段词,也可以调用词。再跟着语调,也是可以的。但调用词这个,是一定要的。
7、问:意图有什么注意事项?
答:意图的核心注意事项,比如:在测“那北京呢”,语调中其实是没有“那”这个语气词的,意图里面就匹配不到,所以在配置意图时,要注意到一些语气词、说话时的方式和说话的习惯,如果语调的覆盖面不大的话,可能会造成一些用户的话识别不出来,这种问题比较严重。
8、问:语调不包含或只包含部分关键信息,对缺少的必要信息有几种方法
答:在设置意图语调中,开发者一般会很明确关键的信息是什么,可以看到是有参数名称的;参数获取的方式就是接受这个请求,然后从参数里面去取出来看有没有。
9、问:发布一个技能需要审批吗?
答:是需要的,因为现在发布技能是把大家当作开发者来看待的;这个任务发布之后是会投放到天猫精灵上面的,也就是说,发布之后是可以使用到的,这个是必须要经过审批的。
根据不同的审批形式,审批时间是不一样的,大概会在3~5天之内结束。
10、问:如果我说这个地方天气如何,它的回答是不是可以改?
答:是可以改的,那个部分完全是开发者自定义;如果是开发一个查天气的,一般是用户问哪个地区的天气就要回答那个地区的天气。也可以挟带其他内容。
11、问:关键字到后台的时候有很多个,一般用哪个好?
答:实体配置有很多个,假设“城市”,城市在全国范围内有成千上百个城市,为了用户不管查询的是哪个城市的天气,都要保证能查询到那个城市的天气;别名只是辅助查询。
12、问:如果一句话同时响应两句话,精灵会怎么回应?
答:这个可能需要开发者来解决,换句话说,用户说一句话,应用上面有两句话出现了反应,可能在设计上会有一些问题。相当于用户说了一句话,你也不知道给用户提供哪个意图,应该避免把一个语调配置在两个意图中。
13、问:技能设置可以不会到开发市场?
答:目前来说,这个只能给定制机开发,一般是私有的,不会放到公共场合去;举个例子,如果你开发了一个技能,不想给到公用的,那你开发的就是私有的,私有和公有的区别在于会不会在公共场合出现。
14、问:遇到方言或者英文能够处理吗?
答:是需要单独进行处理,方言和英文的发音是有很多的
15、问:意图里的模板应该不走深度训练?
答:是会走的,深度训练是一个通用的语调模型训练
16、问:公有智能必须设置调用词吗?
答:必须要设置调用词的,因为调用词能够准确的帮助用户进入应用,它是有这个作用的,公有本身内容就多,用户说大量的话时调用的内容也不是单个,所以必须要设置调用词。
17、问:语调的加语气词中间加停顿的话,会不会匹配不出啊?
答:不会那么容易匹配不出,我们的语调训练有一定的加强,不会如此极端。