用Taskflow快速实现购物场景下的智能对话
魏亚非669 发布于2020-03 浏览:7681 回复:18
8
收藏
最后编辑于2021-12

一个智能对话场景的实现,往往包含两部分非常重要的工作,一部分是对话技能的搭建,另一部分是对话流程处理。今天,让我们用UNIT平台的对话流编辑器Taskflow演示如何快速实现购物场景下的智能对话流程

1. 创建对话技能与问答技能

新建⼀个购物客服的对话技能,创建响应意图、词槽,并添加训练数据,并经过效果评估合格后,训练⼀个可⽤的模型。

本次对话技能新增四个意图,分别为:

ELECTRONIC_RPODUCT,代表购买电⼦产品的意图;

INTENT_NO,代表没有的意图;

INTENT_SATISFIED,代表可以,满意的意图;

INTENT_DISSATISFIED,代表不⾏,不满意的意图。

其中购买意图包含user_type(商品类型)、user_type(商品型号)、user_price(商品价格)、user_product_name(商品名)、user_function(功能⽤途)等词槽。

另外需新建⼀个服务规定的问答技能,并添加类似于退货规定等的问答对。

以上技能的配置与训练需要在百度大脑UNIT平台上完成,针对每个对话意图输出一套可用的对话模型。

2. 对话流程配置

在对话技能和问答技能配置完成以后,就要进入对话流程配置。在配置对话流程时,首先新建机器⼈,对话流程控制选择Taskflow类型。其次,将已创建的对话技能和问答技能添加到机器⼈中,点击左侧功能栏的“对话流程”,就可以进⾏Taskflow的配置。

在购物场景中,以6个对话流为例详细为大家演示,对话流程的实现方法。

场景1:首先实现一段最简单的购买场景的对话

“我想买台电脑”

“您有价位,型号,⽤途之类的要求吗?”

“没有。”

“好的,那我为您推荐这台戴尔的最新款吧。”

1)新建⼀个 “询问需求”的对话答复节点,并在答复内容中选择默认的⾃定义话术答复,内容为“您有价位,型号,⽤途之类的要求吗?”

2)将开始节点与“询问需求”的对话答复节点连接起来,命名为“购买电⼦产品”,连线的条件设置成意图等于ELECTRONIC_RPODUCT。

3)新建⼀个 “产品推荐”的对话答复节点,并在答复内容中选择默认的⾃定义话术复,内容为“好的,那我为您推荐这台戴尔的最新款吧。”

4)将“询问需求”的节点与“产品推荐”连接起来,命名为“没有需求”,连线的条件设置为意图等于INTENT_NO。即可实现上述对话内容。

场景2:根据客户要求针对性推荐的情况

真实情况下对话可能会有更复杂的情况,⽐如说推荐时需要根据不同⽤户的不同需求做针对性推荐。不可能提前将所有的内容都预置到Taskflow的回复话术中,这就需要去查询业务系统了。当然,如果根据不同的时间存在推荐的动态更新,⽆论⽤户提没提要求,都可以通过经过业务系统给出对应的话术。

“我想买台电脑”

“您有价位,型号,⽤途之类的要求吗?”

“我想买来打游戏。”

“好的,那我为您推荐外星⼈游戏本。”

1)对话中提到了功能⽤途为打游戏,此时我们需要新建⼀个 “推荐内容查询”的资源调⽤节点,配置好业务系统的API,将⽤户的功能⽤途作为参数传给API,并设置好出参赋值给名为recommendation的全局变量,Taskflow的全局变量不需要声明,直接将名称填在全局变量中,后续调⽤即可。

2)将“询问需求”的节点与“推荐内容查询”连接起来,命名为“存在要求”,连线的条件设置为user_function已填充或者user_price已填充或者user_product_name已填充。

3)新建一个“产品推荐”的对话答复节点,并在答复内容中选择默认的⾃定义话术答复,这⾥需要进⾏话术的动态拼接了。假设资源调用中返回的Json格式,推荐内容都保存在result中。则此处的答复话术为“好的,为您推荐{$recommendation.result}。”

 

还有⼀种可能性,⽤户直接指定了具体型号,此时就不存在推荐的问题了,我们需要调⽤业务系统查询是否有货,然后回复⽤户。

“我想买台电脑”

“您有价位,型号,⽤途之类的要求吗?”

“我想买Mookbook最新款”

“这款价格是18888,我们有现货,可以马上发货“

1)新建一个“指定型号”的对话答复节点,并在答复内容中选择默认的⾃定义话术答复,这⾥需要进⾏话术的动态拼接了。假设资源调⽤中返回的Json格式,推荐内容都保存在result中。则此处的答复话术为“这款价格是18888,我们有现货,可以马上发货”

2)将“推荐内容查询”的节点与“产品推荐”连接起来,此处连线设置为user_product_name未填充。

3)将“推荐内容查询”的节点与“指定型号”连接起来,此处连线条件设置为user_product_name已填充。点击发布,就可以与机器⼈进⾏对话了。

场景3:⽤户直接说出要求情况

真实情况下⽤户的说法多种多样,可能不需要询问,就说出来了⾃⼰的要求。

“我想买台打游戏的电脑”

“好的,那我为您推荐外星⼈游戏本。”

只需要将开始节点和“推荐内容查询”节点连接,条件设置为意图等于ELECTRONIC_RPODUCT且user_function已填充,或者user_price已填充,或者user_product_name已填充。

场景4:添加意图确认

当推荐完成后,需要追问⽤户是否满意,来完成此次对话。

“我想买台打游戏的电脑”

“好的,那我为您推荐外星⼈游戏本。”

“您觉得这个推荐符合您的要求吗?”

“可以。”

“好的,很⾼兴为您服务,您可以添加到购物车中直接购买。”

可以很明显的看到,这⾥的对话已经不是简单的⼀问⼀答了。推荐的时候会紧跟着询问⼀句是否满意,这⾥就需要新增⼀个对话节点,将“产品推荐”和“指定型号”两个节点的⾼级选项中是否等待⽤户输⼊项改为否,就可以实现答复多句的功能了。最后再配置⼀个结束语的节点,就完成了这个对话状态的配置。

场景5:⽤户切换对话意图的情况

当⽤户询问完产品后,经常会话题⼀转,询问商城的各种服务政策。⽽且还要求回到原话题中继续对话。

“我想买台电脑。”

“您有价位,型号,⽤途之类的要求吗?”

“没有。“

“好的,那我为您推荐外星⼈游戏本。”

“您觉得这个推荐符合您的要求吗?”

“收到不满意我可以退货吗?”

“除⼈为因素及特价商品外,本店售出的电⼦产品3⽇内可⽆条件退货,7⽇内可⽆条件换货。”

“那您喜欢这款推荐的产品嘛?”

1)Taskflow默认⽀持意图的切换跳转。只需要在开始节点直接拖拽出另外⼀条询问规定的流程即可。

2)新增“规定回复”的 对话回复节点,因为问答技能本⾝已经包含了问题和答案,这⾥选择使⽤技能应答。

3)将开始节点和“规定回复”连接起来,命名为“规定咨询”,条件设置为问答技能的问答对ID不为空。

4)Taskflow还预置了打断回复的能⼒。当节点被打断后可以⾃动回复,重复之前的回复内容,我们也可以在⾼级选项中配置打断回复话术,使对话更⾃然。

场景6:推荐后⽤户不满意的情况

现实对话中经常存在这种情况,当我们询问了⽤户的要求做了推荐之后,他有可能对推荐满意,有可能会提出新的要求,⽐如嫌弃价格太⾼,不想要这个品牌的设备等等,此时我们就需要再去询问⽤户更多的信息,⽐如下⾯的对话。

“我想买台电脑。”

“您有价位,型号,⽤途之类的要求吗?”

“我想打游戏。“

“好的,那我为您推荐外星⼈游戏本。”

“我不想要外星⼈。”

“⾮常抱歉没能达到您的要求,我给您重新推荐。”

“您价格上有要求吗?”

“⼀万五以内都能接受。”

“您有想买的型号吗?”

“戴尔吧。”

“好的,那我为您推荐戴尔今年的最新款。”

1)我们拖拽⼀个对话答复节点,配置内容为“⾮常抱歉没能达到您的要求,我给您重新推荐。”并将⾼级选项-是否等待⽤户输⼊设置为否。

2)我们拖拽三个词槽收集节点,对应user_price(商品价格)、user_product_name(商品名)、user_function(功能⽤途)三个词槽,对应的澄清话术分别为“您价格上有要求吗?”,“您有想买的型号吗?”,“您准备买来做什么⽤呢?”,且为了保证对话体验,将⾼级选项-是否强制填充设置为否。

3)然后将开始节点与对话答复节点连接,命名为“不满意”,条件设置为意图等于INTENT_DISSATISFIED

4)并将最后⼀个节点与“推荐内容查询”连接,默认⽆条件。

5)在这⾥要讲⼀下词槽收集节点的特性,如果该词槽已填充,则会直接跳过进⼊到下⼀个对话节点,所以虽然我们配置了三个词槽收集节点,因为最开始已经说了⽤途为打游戏,该词槽的澄清会直接跳过。

6)这样就可以实现当推荐后⽤户不满意时,可以再次补充详细的信息,进⾏第⼆轮推荐。

收藏
点赞
8
个赞
共18条回复 最后由199******49回复于2021-12
#19199******49回复于2021-12

其中购买意图包含user_type(商品类型)、user_type(商品型号) 

这块写错了

0
#18wangwei8638回复于2021-01

图示化,很友好

0
#17wangwei8638回复于2020-12
#10 心若00止水回复
大佬,能出个UNIT对话完成怎么调用自己的服务的demo么?

调用服务API 就可以了

0
#16loansaas回复于2020-12

0
#15loansaas回复于2020-12

你好,请问“不满意答复节点”为什么要从”开始节点“引出呢,应该从“推荐答复节点“引出一个判断条件如图

1
#14135******17回复于2020-11

有完整的例子可以参考吗?

0
#13松子易回复于2020-04
#11 846255313回复
这个人写的词槽有没有

其中购买意图包含user_type(商品类型)、user_type(商品型号)、user_price(商品价格)、user_product_name(商品名)、user_function(功能⽤途)等词槽。

您好,词槽在准备工作内容中已经提到过了。

0
#12松子易回复于2020-04
#10 心若00止水回复
大佬,能出个UNIT对话完成怎么调用自己的服务的demo么?

调用自己服务,您可以参考资源调用节点的使用说明。

https://ai.baidu.com/ai-doc/UNIT/vk5ce5a1m

0
#11846255313回复于2020-04

这个人写的词槽有没有

0
#10心若00止水回复于2020-04

大佬,能出个UNIT对话完成怎么调用自己的服务的demo么?

0
#9西南交大开源回复于2020-03

不错

0
#8幸福8村回复于2020-03

这个例子有资源可以直接导入参考吗

0
#7蓝兰兰111回复于2020-03

赞,写的很详细了

0
#6才能我浪费99回复于2020-03

非常棒的功能

0
#5魏亚非669回复于2020-03
#3 某雨啊回复
图太模糊了,可以更新一下吗

已更新,再看下哈

0
#4wangwei8638回复于2020-03

很方便定制

 

0
#3某雨啊回复于2020-03

图太模糊了,可以更新一下吗

0
#2松子易回复于2020-03

欢迎大家使用~

0
TOP
切换版块