随着机器学习和自然语言处理技术的不断发展,智能对话系统效果有了很大的提升,并得到了工业界的广泛关注和应用。对于企业而言,智能对话系统的引入能够有效降低人力成本,向用户提供更高质量的服务并加速企业的智能化建设;对于个人而言,拥有机器人助理或是虚拟的智能聊天伙伴也成为了现实。
然而对话系统的研发对于大多数开发者而言仍然是一个很困难的工作,对技术和数据的要求都很高。因此,百度将积累多年的自然语言理解与交互技术对外开放,推出智能对话定制与服务平台 UNIT,将业界领先的技术能力输出给广大的开发者,大大降低对话系统的研发门槛。
智能对话系统使得用户能够通过自然语言的方式和机器进行交互来满足自身的需求,在对话系统的研究中,多轮对话一直都是研究人员的重点研究方向。在多轮对话过程中,系统需要理解用户当前所说的话,且综合历史对话信息给出合理答复返回给用户,这就是对话管理要解决的问题。
对话管理是对话系统的重要组成部分,它的对话状态跟踪、对话策略选择、话术生成等功能是实现人机对话,尤其是多轮对话的关键。
自1.0版本开始,UNIT 向广大开发者提供了基于词槽收集与规则触发的对话管理定制能力。随着业务的发展,开发者也不断向 UNIT 对话管理功能提出了更多的要求,包括对话流程的灵活配置、应答话术的动态生成、外部业务资源的接入与调用,不同对话流程之间的跳转与返回等等。
为了更好地满足这些需求,UNIT 经过长时间的技术积累,推出了新一代图形化对话流编辑器 Taskflow,以图形化拖拽界面与编程相结合的方式,助力对话系统开发者轻松搞定复杂对话系统。
图形化对话流编辑器Taskflow 能帮业务解决哪些问题
⼀个完整的对话流程,涉及到多个⽅⾯的功能,很多⼈与⼈习以为常的对话,机器人处理起来难度会⾼很多。这⾥我们以查询⼿机流量的场景为例:
用户:“我想查询这个⽉的流量。”
客服:“您好,您的当⽉流量剩余500兆。请问还有什么需要帮您的吗?”
用户:“好的,没有了。”用户:“我想查询这个⽉的流量。”
客服:“您好,您的当⽉流量剩余50兆。考虑到您的剩余流量不⾜,建议您续订⼀个流量加油包。”
用户:“有什么流量包?”
看起来很⾃然的两段对话,在智能对话系统⾥⾯其实包含了很多逻辑和流程。
在查询流量时,机器人需要访问业务系统接口,获取相应的数据。
获取到数据后,机器人需要基于数据动态⽣成答复话术。并且,根据不同的数据反馈(剩余流量的多少),对话需要进⼊不同的分⽀流程,就要求机器人根据条件判断控制流程分⽀。
除此之外,对话系统还需要应对随时可能插⼊的新话题,在多个对话流程之间灵活切换。
如果不借助⼯具,完全由业务系统处理,是⼀份不⼩的⼯作量,而图形化对话流编辑器 Taskflow,采⽤了组件化的思路,开发者只需要拖拽出相应的功能节点,完善节点配置项,⽆需⼀⾏代码,即可实现⼀个复杂的完整对话流程。
零代码配置让多轮对话流程更简单
最基本的多轮对话为⼀问⼀答,⽽真实对话场景中的多轮对话则复杂的多。比如客服场景中需要在接听的同时主动发起对话,再等待⽤户输⼊。
机器人:“很⾼兴为您服务,请问有什么可以帮您?”(主动发起对话,进⾏问候)
用户:“查下我这个⽉的流量。”(此时⽤户才表达⾃⼰的对话意图)
更多场景中对话不是⼀问⼀答的,需要同时回复⽤户多句话,多句回复的选择有时还需要结合⼀些条件判断。
机器人:“您好,您的剩余流量50兆。”
机器人:(剩余流量较少时) “考虑到您的剩余流量不⾜,建议您续订⼀个流量加油包。”
针对各种各样的对话流程,Taskflow 预置了多项对话能⼒,开发者通过不同的设置项,完成不同的对话需求:
可以⽆意图进⼊对话流程,主动向⽤户发起对话
配置⽆条件进⼊的连线,与开始节点连接,后续连接⼀个对话回复节点,从⽽实现进⼊对话意图后主动发起对话的效果。
通过配置选择是否等待⽤户输⼊,同时回复⽤户多句答复
在⼀个对话回复中,选择不等待⽤户输⼊,后续连接另⼀个对话回复节点,从⽽实现同时回复⽤户多句答复的效果。
更便捷地引入业务资源 降低接入成本
⼀个对话机器⼈在回复时,经常需要与业务系统配合使⽤,最普遍的情况是使⽤业务系统的数据资源。这种情况需要先通过智能对话模型,再转回到业务系统中,然后将获取到的资源与智能对话模型结合后,得到最终的回复。
用户:“您好,我想查询这个⽉的流量。”
机器人:“您好,您的当⽉流量剩余500兆。”
为了降低开发者开发与维护的难度,UNIT 赋予了 Taskflow 业务资源接⼊的能⼒,⽆需编写代码,简单⾼效。
可根据当前对话动态生成话术 使对话更人性化
对话机器⼈应避免对话过于单调,经常重复同⼀句话或某⼏句话。⽐如对话中询问想查询具体⽉份的流量,当得不到正确的答复时,机器⼈不宜重复同⼀句话如:“请问您想查询哪个⽉的流量?”,配置多个话术顺序或随机答复有助于提⾼体验。还有⼀些对话回复话术依赖⼀些特定词槽或变量的取值。
用户:“您好,我想查询这个⽉的流量。”
机器人:“您好,您的当⽉流量剩余500兆。”
基于上述问题,UNIT 在 Taskflow 都做了针对性的处理。
澄清时⽀持顺序、随机话术,多次澄清失败后⽀持⽤户选择继续对话或者中⽌对话。
赋予开发者最灵活的话术配置,可以在话术中配置变量、意图名称和词槽值,动态⽣成话术,不⽤再进⾏滞后的拼接处理。
实现复杂的话题插⼊与流转
真实对话中,还会经常出现对话意图切换的情况,但对于对话机器⼈如何做到⽆缝切换,最⼤程度的提升对话感知,则是⼀个不⼩的挑战。⽐如查询流量这个例⼦,机器⼈在询问⽤户具体时间时,⽤户提了其他的问题。
用户“我想查询这个⽉的流量。”
机器人:“您好,您的当⽉流量剩余50兆。考虑到您的剩余流量不⾜,建议您续订⼀个流量加油包。”
用户:“问个事,我如果套餐的流量⽤完了,接下来的流量要怎么收费?”
这⾥⽤户没有直接回答机器⼈的问题,⽽是开启了⼀个新话题。
针对这种现象,Taskflow 直接预置了打断恢复的功能,实现了多对话流程中⽆缝切换,机器⼈默认拥有多对话流程⽆缝切换的能⼒。开发者还可以通过配置开关,控制任意两个对话流程之间是否开启该能⼒,轻松获得顺畅的对话体验。未来 UNIT 还将赋予开发者更多的预置能⼒,尽最⼤努⼒降低开发者的配置门槛。
自定义编程支持更多复杂需求的实现
不同的业务场景都会⾯临不同的业务需求,相信不少开发者都⾯临过⼀些定制化的需求,需要⽐较复杂的代码逻辑才能处理。基于此,Taskflow 为开发者提供了⾃定义编程功能,⽆论是在条件判断时,应答回复时,获取业务系统数据资源时均可以使⽤⾃定义编程。此外,Taskflow 还设计了⼀个完全基于编程的⾃定义节点,满⾜开发者个性化的业务需求。
体验 Taskflow 的方法很简单,只需进入 http://unit.baidu.com 在新建机器人时,选择 Taskflow 型对话流配置即可。自推出以来,Taskflow 被广泛应用在各个业务场景中,智能订餐、汽车销售质检、来电助理等智能对话场景,都基于 Taskflow 轻松实现了。未来,UNIT 平台会不断优化 Taskflow 的能力,持续满足广大开发者和企业的业务需求。