Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务功能微服务解析与调试(九十三)

84 篇文章 16 订阅

一、Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务流程解析与演示

在设计和开发智能业务对话机器人时,需要考虑用户在与对话机器人进行多轮对话的过程中,会穿插进行多个业务流程的处理,对话机器人需要根据用户意图进行相应的操作。先来看下这段对话:

刚开始用户想查询账户进账情况,这时对话机器人提供3个vendor让用户选择,用户选择其中一个vendor查询指定时间段的进账情况,之后用户想查一下关于另一个vendor的交易情况,查询结果如下:

下面通过debug模式解析对话机器人是如何识别用户意图并通过与Rasa action server运行的相关微服务进行交互来完成对话过程的。

二、通过Rasa debug模式详解对话业务流程

输入信息:what did I earn?

启动Rasa DAG框架中的各个NLU组件,用来分析上面用户输入信息,这些组件包括DIETClassifier,SpacyNLP等等。

以下输出显示了识别到的用户意图为check_earnings,显然这是正确的,这里没有提取entities:

同时对话跟踪器会记录相应的事件:

这里会根据用户意图提取slot信息:

检查domain文件,可以看到这个slot的定义:

可以看到这个slot是由触发的intent来填充的,值就是deposit,与上面日志信息一致。

接下来就是使用配置的各个policies来进行预测,首先使用AugmentedMemoizationPolicy来进行预测,预测得到的action是transaction_search_form:

然后在日志中发现这条消息:

检查rules文件,确实存在这样的rule:

根据识别到的intent可以看出对应的对话机器人的下一个action就是transaction_search_form。

虽然看起来已经可以根据上面的rule来确定对话机器人接下来应该采取的action了,但是由于在我们的配置中还有其它的policy,譬如下面这个基于机器学习的TEDPolicy,它是基于用户输入信息识别到的意图来进行预测的,从预测结果看和上面rule的预测结果一致:

那么最后Rasa core来选择哪一个预测结果呢?从下面的输出信息可以看到最终选择的是RulePolicy的预测结果,这是因为这个policy的优先级最高(RulePolicy的预测confidence最高为1.00,而TEDPolicy的概率始终小于1.00)。

接下来就是运行transaction_search_form来激活form,然后对slot进行验证,这个逻辑是在验证微服务validate_transaction_search_form中完成的。

这时对话机器人输出如下信息:

这是因为已经激活了form “transaction_search_form”,下面是这个form的定义:

由于已经收集了slot “search_type”的值,从form定义中可以看到接下来需要收集vendor_name的信息,所以才会有上面对话机器人输出的关于询问用户vendor的信息。

根据前面给出的对话示例输入vendor:

从以下输出看使用了DIETClassifier来提取entity “vendor_name”的值:

这里需要使用验证微服务对填充到slot的值进行验证:

这是Rasa core调用验证微服务的日志信息:

根据form定义,接下来需要向用户收集时间信息:

所以对话机器人输出如下信息给用户:

按照对话示例输入时间信息:

可以看到这里使用了功能很强的DucklingEntityExtractor来提取时间信息,并且把last three weeks这句话分解为具体的时间格式的值分别放入from和to两个变量中:

从以下输出清晰看到通过触发SlotSet事件来设置slot的过程,key为time,而value则由from和to两部分组成:

这里同样会调用微服务对刚刚填充了值的slot “time”进行验证:

接下来请求下一个slot信息,也就是让用户确认是否需要提交form:

对话机器人输出如下:

选择1:Yes,对话机器人返回查询结果如下:

检查action server微服务日志,发现调用了微服务action_transaction_search:

三、业务流程微服务解析:

关于validate_transaction_search_form,这个微服务继承了Rasa SDK提供的form验证框架,这里可以看到直接继承的是一个自定义验证微服务类CustomFormValidationAction。在validate_transaction_search_form类中定义了关于slot “search_type”的验证方法。

这个方法使用了Python的coroutine机制,逻辑很简单,就是判断slot设置的值是否存在于预定义的列表中,如果不存在则说明值无效,需要重置这个slot的值为None:

这是验证vendor_name的方法,其逻辑是检查这个vendor是否存在于数据库中,如果存在则设置到这个slot “vendor_name”中,否则重置slot的值为None:

这是验证time的方法,首先从tracker中获取slot time的值,然后根据时间值进行解析,如果能够正确解析则设置slot的值,否则设置slot值为None:

下面是关于微服务类ActionTransactionSearch,它继承自Rasa SDK提供的接口Action:

这是name方法,返回这个微服务类在domain中配置的名称:

这是run方法,定义了微服务类的运行逻辑,首先定义了一个slots的初始化列表:

如果用户确认提交form,那么就会执行以下逻辑,即从对话跟踪器中取出各个slots的值,作为参数传入数据库查询语句中进行查询:

调用模板方法输出查询结果给用户,如果用户取消提交form,则调用另外的模板方法输出信息。在方法的return语句中会调用方法前面定义的slots初始化列表来触发SlotSet事件,目的是清空当前各个slots的值,以便为后续根据用户意图进行业务流程处理做好准备。

Rasa 3.x 源码高手之路:系统架构、内核算法、源码实现详解:

https://appz0c1mshy7438.h5.xiaoeknow.com/v1/auth?redirect_url=https%3A%2F%2Fappz0c1mshy7438.h5.xiaoeknow.com%2Fv1%2Fgoods%2Fgoods_detail%2Fp_62353091e4b0beaee43652c9%3Fentry%3D2%26entry_type%3D2001%26share_type%3D5%26share_user_id%3Du_621b7b85b8dc5_3yDAYnFXeM%26type%3D3

Rasa 3.x 源码高手之路:基于Transformer的对话机器人RasaPolice:

https://appz0c1mshy7438.h5.xiaoeknow.com/v1/auth?redirect_url=https%3A%2F%2Fappz0c1mshy7438.h5.xiaoeknow.com%2Fv1%2Fgoods%2Fgoods_detail%2Fp_62353421e4b04d7e2fd83665%3Fentry%3D2%26entry_type%3D2001%26share_type%3D5%26share_user_id%3Du_621b7b85b8dc5_3yDAYnFXeM%26type%3D3

星空NLP对话机器人论文班:NLP领域10篇最高质量的对话机器人经典论文解密:

https://appz0c1mshy7438.h5.xiaoeknow.com/v1/goods/goods_detail/p_623874b7e4b04e8d90256da1?type=3&share_type=5&share_user_id=u_621b7b85b8dc5_3yDAYnFXeM&entry=2&entry_type=2001

Rasa 3.X 智能对话机器人案例开发硬核实战高手之路 (7大项目Expert版本):

https://appz0c1mshy7438.h5.xiaoeknow.com/v1/goods/goods_detail/p_62276dd8e4b0beaee431c848?type=3&share_type=5&share_user_id=u_621b7b85b8dc5_3yDAYnFXeM&entry=2&entry_type=2001

Advanced Python硬核实力高手实战之路:架构、算法、源码、案例(81讲):

https://appz0c1mshy7438.h5.xiaoeknow.com/v1/goods/goods_detail/p_6227e564e4b0beaee431ce2a?type=3&share_type=5&share_user_id=u_621b7b85b8dc5_3yDAYnFXeM&entry=2&entry_type=2001

NLP on Transformers 高手之路137课Pro版:

https://appz0c1mshy7438.h5.xiaoeknow.com/v1/goods/goods_detail/p_621c0289e4b04d7e2fd0365a?type=3&share_type=5&share_user_id=u_621b7b85b8dc5_3yDAYnFXeM&entry=2&entry_type=2001

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值