多轮对话(新画布)
基本概念
多轮对话可理解为是根据上下文内容,进行连续的,以达到解决某一类特定任务为目的的对话。也即是说,无法在用户与机器人的一次问答中完全达到对话目的,则可理解为多轮对话。具体示例如下图所示:
在多轮对话示例中,用户可直接询问今天杭州天气,此时机器人可直接进行杭州天气回复,但由于并非所有用户都会在询问天气时加上地址,所以此时机器人必然反问用户地址信息后再回复天气信息。也就是说,对于机器人而言,判断一段对话是否为多轮对话,不应看达成对话目的的最简洁对话方式的问答轮次,而是最复杂对话方式的对话轮次。
功能组成部分
机器人多轮对话大致是由:预设用户可能输入信息、预设机器人回复内容和触发规则这三部分组成的。机器人能够与用户进行多轮对话,是因为人工已提前预设好有关用户可能输入信息和对应的机器人回复内容,用户输入信息后则会触发机器人进行回复内容播报。
预设输入信息
意图
概念:意图可理解为是不同表达形式的同一类型的内容。如用户说:“你真棒啊、太厉害了、你好专业、你语气太温柔了吧”等都可以归于“用户表扬意图”。
作用:通过新建意图可配置用户可能输入的信息。以查天气为例,设置“查天气意图”和对应意图的回复内容,当用户输入信息是有关查天气,则将触发匹配“查天气意图”,机器人将输出对应的回复内容。
实体
概念:实体是同类型单词的合集,如:城市、日期、颜色等。
作用:对同一个意图加上不同的属性时,则会衍生出一个新的意图,如“查天气意图”加上“地址”属性后,则会衍生出“查询杭州天气意图”“查询北京天气意图”“查询江西天气意图”等意图,且所衍生出的各意图对应回复内容不尽相同。通过实体配置则可将此类意图归结为“查询某地址天气意图”,此处地址即为一个实体,对应的通过调用实体信息的方式配置对应意图的回复内容,大大提升了列举意图及其对应回复内容的效率。
预设回复内容
节点
概念:节点可理解为是在整个多轮对话流中的一个个对话状态。
作用:可在节点中配置机器人回复内容。此外,机器人回复后,用户可能会根据机器人回复内容再做出信息输入,可在节点中进行意图的引用以预设用户可能输入的信息。
意图与实体可在“对话流节点”中调用,具体调用方法可参考《对话流设计》;
对话设计中,除了设计正常用户回复流程,还需要在“节点”中对以下各种异常情况进行设计:
用户无输入
拒识:机器人不理解用户意图;
不确定:机器人不确定用户意图。
对话流
概念:对话流由一个个节点连接形成的,表示多轮对话的整体流程。
作用:对话流是对节点能力的集成,用以完成整体多轮对话的对话目的。
触发规则
多轮对话中,用户的输入信息在触发已经设置的意图后,机器人会对该意图下的回复内容进行播报,而触发这一动作是通过机器人内置算法自动实现的。
示例
应某业务需求,现在要对用户当前体温状态进行了解,并对体温在37度以上和以下的用户进行不同的话术回复。有关对话流设计可参考如下图:
当以上对话流设计完成后,需进行对话流发布使其生效,且要绑定到机器人上,机器人则可具备多轮对话的能力。具体有关对话流发布于绑定操作可参见《对话流设计》。
参数 | 描述 |
对话流 | 对话流是由一个个节点连接形成的,表示多轮对话的整体流程。 |
意图 | 意图用来定义对话工厂内用户表述的一种意向,比如查天气、订机票、是本人等。 |
实体 | 实体是同类型单词的合集,如:城市、日期、颜色等。语义通过实体进行理解,然后抽取并输出机器可以理解的格式。 |
槽位 | 在填槽节点上配置的槽位,使用 slotVars['完整槽位名'] 或 slotVars['完整槽位名.origin']语法进行引用,求值结果为对应的槽位值,该值在当前开启意图内有效。 |
变量 | 客户自己在平台机器人内定义的变量,使用 botVars['变量名称']语法进行引用,求值结果为对应的变量值,该值在整通对话有效。 |
服务返回参数 | 全局服务、自定义函数内返回的参数,使用 svcVars['xxx']语法进行引用,该值在整通对话有效。 |
环境参数 | 上游系统随路传入的变量,使用 envVars['环境参数名称']语法进行引用,求值结果为对应的变量值,该值仅当前轮对话有效。 |
系统参数 | 机器人问答过程中,系统自动维护的变量,使用 sysVars['xxx']语法进行引用,在整通对话有效。 |