多轮对话管理

概述

意图识别与交互:准确识别用户意图,根据用户的回答动态决策,区别于传统的一问一答模式,通过多轮人机交互来解决复杂场景的任务,比如保险推荐、保单查询、预约等场景。

因子管理:因子是一段取数逻辑,负责参数的传递和数据获取,内含加密/加签,保证数据安全性。比如根据保单号查询保单、根据用户信息预约体检等。

实体管理:云客服本身提供了通用的实体类型,比如数字、性别、金额等,对于具有业务含义的实体,比如公司保险产品名称、银行卡名称,可以通过自定义实体来做到精确提取。

意图识别与交互

意图列表

左侧菜单服务配置 > 意图管理imageM标提醒:有改动但没有立刻生效。

新增意图

可以通过点击新增意图按钮,选择版本后,进入意图编辑页面,或者直接导入意图。新建意图分为 表格版图形版

intention2

如何备份:对于配置好的意图,可以通过导出意图,下载到本地,即使删除,也可以再通过导入找回。

如何查找:在右上角输入关键字并按搜索按钮或者回车,会返回意图名称包含关键字的意图列表。

如何修改:点击意图名称,会跳转到意图编辑页面,进行修改后保存。

如何删除:点击删除链接确认后可以删除意图,注意启用中的意图是无法直接删除的。

如何暂存/立即生效:如果修改意图后不选择立即生效(暂存),显示的意图不会受影响,通过意图测试,确认无误后,再点击生效,将改动同步到线上。

如何测试:在右侧意图测试的输入框内输入文本后回车即可测试意图。注意意图测试是测试意图的最新版(暂存版)。

意图管理(表格版)

表格版的意图编辑页面答题分为五个模块:基础信息、问句举例、对话管理、输出配置和关联聊天窗

intention3

基础信息

  • 意图名称:必填,意图名称保证唯一。

  • 展示意图名称开关:开关用来控制聊天窗是否带上意图名称,开启时,聊天窗交互展示会带上意图名称。image

    ①:意图名称。

    ②:交互内容。

问句举例

问句举例是触发意图的入口,可以配置多个样例句,样例句越多,意图识别能力也会越强。

例如我们要实现分期贷款场景的触发,我们列举了5个例句,如下图:

intention5

后台会对这些句子做适当的扩展和泛化,基于字面和语义相似度,用户再说类似于

说明

能贷款吗?

想要分期贷款

都可以进入到该意图。

问句举例不仅可以触发意图进入,在进入意图的同时可以通过关联交互来辅助信息抽取。

intention6

如上图所示,分别选中问句举例中的2000块和4个月,关联到分期金额和分期期数上,这样用户再说类似

说明

我想贷xx钱 我想贷点钱,xx还清

这样的句子,都会进入到意图,并且分期期数和分期金额已经拿到值,不需要再向用户发起反问。

重复提醒:当配置的意图比较多时,您可能会担心意图间的问句相似度很高而导致非预期的意图被触发。在每个问句被添加时,如果其他的意图有相似度很高的句子,这时会在页面右上角给出提示。image

对话管理

对话管理就是定制人机交互的过程。还是以分期贷款场景举例。为了完成分期贷款的业务,我们需要贷款的一些要素:分期期数、分期金额、贷款方式等信息。我们把一次用户咨询和机器人回复叫做一次交互。交互的目的就是为了获取这些要素,从而进行下一步的操作。如下图所示:

intention8

交互是顺序敏感的,通过左侧的箭头按钮可以调整顺序。

交互的交互名称、交互内容、实体类型、前置条件默认可见,点击展开后会显示交互码、关联因子、自动填充、重复次数、提示和上下文填充等配置项。image

  • 交互名称:点击铅笔修改后回车保存,意图里的交互名称不能重复。

  • 交互内容:包括交互内容、是否多选、选项类型、选项列表(因子列表)。点击铅笔弹出对话框,如下图所示:

intention10

交互内容可以输入文字,不能为空、选项类型可以选择问句或者因子。是否多选、选项类型和选项列表(因子列表)搭配起来用于候选项的配置。选项列表最终展示在聊天窗的效果如下图所示:

intention11

交互内容可以引入变量,通过@符号来引入交互,#符号来引入因子。在交互内容中输入@或者#,会提示对应的交互和因子:

intention12

上图展示了#提示因子的效果,注意#符号前面必须有空额或者在行首,同样的@符号可以提示交互:

intention13

  • 实体类型:它是信息抽取的核心,分为系统和自定义两大类,系统提供的实体一般是通用领域的实体,比如数字、货币、地点、年龄等类型,另一类自定义实体类型在 实体管理 中配置。

  • 前置条件:它是一个逻辑表达式,用来控制流程的跳转,只有当前置条件满足时,该交互才会有资格被执行。

    点击前置条件按钮,弹出规则编辑对话框:image

    ①区域:前置条件的操作对象分为交互、因子和常量,可以直接拖拽到输出规则。等额本息期数是变量名,数字是数据类型。

    ②区域:操作符可以直接拖拽到输出规则。

    ③区域:输出规则。

  • 说明:规则编辑对话框分为操作对象、操作符和规则表达式三块,操作对象和操作符可以被直接拖拽到输入规则区域。操作对象分为交互、因子和常量三大类,每个操作对象都对应一个数据类型。

  • 操作对象的数据类型:目前支持的数据类型为数字、字符串和布尔值。交互的数据类型由交互的实体类型决定,自定义的实体类型都是字符串。目前系统默认提供的实体中,数字、年龄和货币的数据类型为数字,其余均为字符串。因子的数据由因子的返回值类型决定。常量的数据类型可以自己选择数据类型。

  • 规则语法校验:点击规则编辑右下角的确定按钮,系统首先会帮您校验规则的合法性。比如减/乘/除操作符不能用于字符串、括号不匹配等。

    intention15

  • 交互码:如果想将交互得到的信息传递给因子,交互码就派上用场。每个交互经过实体抽取后都会得到一个值,交互码和值会构成一个键值对填充到因子的入参中,交互码和因子的入参key一一对应。比如我们定义了分期金额、贷款方式和期数的交互码:

    intention16

    如果我们还有一个分期贷款登记的因子,因子的参数与上图的一一对应:

    intention17

  • 关联因子&自动填充:如果选择了关联因子和自动填充,在意图被触发时会进行因子采集和填充,如果一旦填充成功,该交互的值就已经获取到,无需与用户多进行一轮交互。利用这个特性,我们可以实现类似这种功能:

    说明

    一个意图需要获取用户信息进行下一步动作,用户可能在登录状态下进入意图,也可能在非登录状态下进入意图,对于登录的用户不用询问,对于非登录的用户询问用户信息。

  • 重复次数&提示:在交互的过程中,机器人发起反问时,用户的回答非常模糊或者答非所问,我们可以通过设置重复次数和提示,来做到更友好的交互。

    intention18

  • 上下文填充:上下文特指交互过程中获取的信息,填充是将上下文填充到用户的query中。

输出配置

当所有满足条件(前置条件满足)的交互都获取到值后,会进入最终的输出配置。image

输出配置可以多条策略,一条策略包含一条规则和若干类型的输出。

策略也是顺序敏感的,可以停用/启用/删除,策略的规则和对话管理中的前置条件一样。策略的输出目前支持三种类型:通用文本、知识点和透传数据。

  • 通用文本:和对话管理的交互内容一样,支持用@符号引用交互,#符号引用因子。

  • 知识点:可以直接填写知识点id,注意它和通用文本都属于展示类信息,属于互斥关系。

  • 透传数据也是一段文本,它区分于通用文本和知识点这两类展示类信息,可以和它们并存,云客服不解析只做透传。

关联聊天窗

配置完基础信息、问句举例、对话管理和输出配置后,一个意图的逻辑就完成了,而聊天窗是意图生效的渠道,如果不配置,默认是对所有聊天窗生效,配置了就是仅对配置聊天窗生效。

意图测试

意图测试在右侧的固定区域:image

如何测试:在右上角文本框内输入文字并回车后,会展示返回结果和当前所处的意图以及一些调试信息。

与在聊天窗问答的区别:

  • 意图测试不感知意图状态,用最新(暂存)的意图,而聊天窗问答只会考虑启用状态的意图,且是生效过的意图。

  • 意图测试只会考虑意图,而聊天窗问答会考虑模板拦截、知识点问答、闲聊等各类模型。

意图管理(图形版)

图形版的意图是为了更好解决表格版中带分支场景的不直观、条件重复配置的问题。相比于表格版,图形版用流程图的凡是来做对话管理和输出配置,逻辑更加直观和清晰,并针对意图中断的情况设置了默认输出。image

基础信息

与表格版完全一致。

问句举例

与表格版完全一致。

对话管理

图形版意图和表格版意图的最主要差别就是图形版用有向图的方式(替代平铺的方式)来做对话管理。我们提供了表格版切换到图形版的功能,在意图列表页,点击切换到新版本,此时会新创建一个图形版的意图。

切换到图形版本后:

intention22

相比于平铺的方式,图形版的对话管理更加直观。看到这里您可能明白了,表格版中的交互就是图形版中的一个节点,表格版中交互的前置条件就是边。

  • 交互节点:双击交互节点,弹出交互节点对话框。image

    点击展开查看更多,可以查看交互码、重复提示等高级配置信息。

    image

    交互节点的节点名称、实体类型等配置项和表格版中的交互完全一样,但交互节点和表格版中的交互有两个差别:

    说明

    交互内容更加丰富:交互内容除了通用文本外,可以支持知识点和透传数据。 优先级:优先级的作用是决定不互斥的兄弟节点顺序。比如分期期数和分期金额,这两个交互节点不互斥,谁会被执行呢?

intention25

说明

优先级不一样,优先级大的在前。 如果优先级一样,按照边的原始添加先后顺序来决定。总之,顺序和节点在画布上的位置信息无关。

  • 边:点击添加关联按钮后,可以连接两个节点。image

    在边上双击,弹出规则编辑框。该规则编辑框与表格版意图中交互的前置条件一样。

    说明

    边的限制:开始节点不能有入边。 策略节点不能有出边。 连个节点间只允许有一条直连边。 允许有环,但出于安全考虑,对于全部由动作节点(自驱动类型的节点)构成的环,每个节点只会执行一次。

除了交互节点外,我们另外新增了两种节点类型:策略节点和动作节点。

  • 策略节点:策略节点类似表格版中的输出配置。

  • 动作节点:动作节点不需要与外界交互,属于自驱动的节点。一般用来一些额外的数据调用。举一个实际的应用场景:比如在网上催收业务中,进入意图后,需要给用户发送一条短信,在进行对话。

    image

    动作节点的内容就是一个因子集合:

    intention28

默认输出

当意图中断时,会走到默认输出,意图中断时交互节点抽取不到信息且超过了设定的重复次数。比如一个交互节点向用户咨询年龄,而用户一直故意岔开话题导致流程无法继续进行下去,意图就会中断。

默认输出实际上就是一条规则为空、状态启用的策略,在意图中断时作为兜底的文案输出。

关联聊天窗

与表格版的一致。

因子管理

意图识别与交互的核心之一就是数据调用,而前面提到过多次的因子,就是负责数据传递、外围API调用和结果解析。

点击左侧导航栏 服务配置 => 因子管理 进度到因子管理列表页。

因子编辑

image

除因子名称和返回值类型为必填项,其余均为非必填项。

  • 请求地址:一个URL,目前只支持HTTP协议。注意:IP/域名需要通过云客服审核。UTL也可以为空,我们把这种因子叫做虚拟因子。

  • 入参:入参由参数名、参数码、参数值和是否必须构成。系统目前有一个磨人的入参就是用户id,参数码为userId。因此在定义入参时无需考虑用户id,参数码也不要设置成userId。

    说明

    参数名:对参数的描述信息。

    参数码:作为参数传递的Key。

    参数值:如果您的接口有一些参数不需要从交互中获取但是需要传递,可以设置参数值来补位。

    是否必须:这个选项是用来减少意图交互过程中的没必要调用,没有特殊情况建议勾选。

  • 请求方式: GET/POST。

  • 请求加签&返回加密:加密开关。

  • 出参Key:参考入参。

  • 默认返回值:当因子调用发生异常时,默认值健作为返回值返回。

删除因子

不能删除启用状态的因子。

停用/启用因子

直接切换开关后可以改变因子的状态,停用的因子将不会发起数据调用。

重要

修改后的因子状态会被置为停用,重新启用后才会生效。

因子测试86C61E73-F89F-48ef-BDF5-BB3CC93F090C

输入参数后点击测试,调用结果会展示在测试对话框下方的灰色区域。

入参来源&出参规范

  • 入参来源:入参的值目前有两个来源:

    说明

    通过交互传入,交互码和入参码一一对应。

    通过访客名片传入,cinfo,extInfo中的key和入参码一一对应。

  • 出参规范:返回统一格式为:

    {
      success: true/false,
      message: "错误信息",
      data: {
          id: 12345678,
          age: 28,
          keyN: valueN
      }
    }

    其中 success 表示此次调用是否成功,若失败最好附上失败信息,失败信息放在 message 字段。 data 里的 key-value 就是具体的数据,若因子设置了出参 key,data 中对应 key 的值就是因子的值。比如设置出参 key 为 age ,那么这个因子的值就等于28.当然出参 key 也可以为空,此时会将整个 data 作为返回值。

实体/模型管理

意图识别与交互的另一个核心是信息提取。在交互过程中,信息提取主要分为两类:

  • 一类是从 query 中提取出有效信息,这类我们成为实体抽取。系统提供了日期、时间、城市、数字、金额等实体,而另外一些具有业务含义的实体,需要通过自定义来实现,比如银行卡名称、保险名、套餐名等。

  • 另一类是需要识别出 query 背后的真正含义,这类我们称为分类模型。比如我们需要根据 query 判断用户此时是否有空:

    说明

    当 query = “我在开车”、query = “我正在忙”等时,判断为没空。

    当 query = “你又什么问题”、query = “直接说吧”等时,判断为有空。

分类模型使用的是有监督的机器学习算法,因此分类模型需要一定量的打标语料。

实体编辑

进入到实体编辑页面后,填写实体名称和实体词表。

intention31

说明

实体名称唯一,也不能与系统默认的实体重名。词表由词(代表词)和同义词构成,在实体抽取过程中如果提取到同义词,也最终会转换成代表词。

实体抽取测试

新增一个意图,实体类型选择银行卡类型。

image

在聊天窗的测试效果:

intention33

说明

抽取到“商务卡”后,转换成代表词“公务卡”。