Gavin老师Transformer直播课感悟 - Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务功能微服务解析与调试(八十一)

84 篇文章 16 订阅

    本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之银行金融Financial Bot智能业务对话机器人的主要业务功能所使用的微服务进行解析,并通过Rasa Interactive的调试来帮助理解其背后的逻辑。

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

  1. Financial Bot进行账户余额查询及Rasa Interactive调试

首先运行命令rasa run actions –debug启动action server:

运行命令rasa interactive进入交互式对话模式:

输入信息:

确认执行后输出:

执行action “utter_greet”:

执行action “utter_help”,对话机器人提供下列反馈供用户选择:

输入查询账户余额信息:

执行action “action_show_balance”,返回了查询结果:

可视化流程图更新如下,可以很清晰地看到到目前为止整个对话执行过程:

检查action server输出的调试信息,当用户确认执行action_show_balance之后,Rasa server会调用在action server上运行的微服务action_show_balance,实际上会执行微服务的run方法,处理完成后会把结果通过HTTP response的方式返回给Rasa server:

这是在domain中注册的微服务:

ActionShowBalance是查询账户余额的微服务类,继承自Rasa SDK的Action,包含了两个方法name和run:

这是name方法,返回在domain文件中注册的action name:

这是run方法,首先从tracker中获取slot “account_type”的值,如果是credit类型,则从数据库中取得当前要求查询余额的用户(sender_id)的卡片信息:

-如果当前用户提供的卡片信息存在并且可以在数据库中找到,那么就会根据当前卡片信息查询信用卡余额并返回结果给用户:

-如果当前用户没有提供卡片信息用于查询,那么会根据用户的sender_id从数据库中查询出该用户所有的卡片信息,通过循环的方式来获取每一张卡片的余额信息:

-如果不是credit类型,则通过用户id查询用户账户余额,在这里会检查另一个slot “amount_transferred”是否有值,如果有值表示存在转账金额,会对账户余额进行相应的处理:

检查对话输出信息,发现slot “account_type”的值为None,那么就不会执行上面的credit这段代码逻辑,而是查询用户账户余额信息:

下面这段代码逻辑用于检查是否存在用户需要切换业务场景的情况:

 2.  Financial Bot进行transactions消费查询及Rasa Interactive调试

输入查询消费交易的信息,从输出结果看,对话机器人正确识别了”last month”的时间:

确认继续执行:

运行form “transaction_search_form”来收集信息:

这时检查action server的输出日志,可以看到调用了验证action来对form收集的信息进行验证:

这是验证类,包括了对search_type,vendor_name,time等信息的验证方法:

根据requested_slot “vendor_name”输入选择的vendor信息:

确认继续执行:

运行form “transaction_search_form”:

可视化流程图更新如下:

继续根据对话机器人反馈进行选择,这里选择1:

运行form “transaction_search_form”,之后会输出信息询问用户是否需要查询时间段为上个月的关于Target的交易信息:

这时检查action server的输出日志,可以看到执行了微服务action_ask_transaction_search_form_zz_confirm_form:

检查domain文件,注册了这个action:

这是微服务类ActionAskTransactionSearchFormConfirm,继承自Action:

其中name方法定义了在domain中注册这个微服务的action name:

选择1执行:

运行form “transaction_search_form”:

当form收集完信息后,可以看到requested_slot为null,active_loop也设置为null来使当前运行的form进入不激活状态。

根据提示运行action “action_transaction_search”,返回的查询结果如下,查到了关于Target的13笔交易及总金额,然后会把查询时使用的所有slots都设置为空:

可视化流程图更新如下:

检查action server的输出日志,可以看到执行了action “action_transaction_search”:

这是domain文件中注册的微服务:

这是微服务类,它继承自Rasa SDK的Action:

方法name返回domain中使用的action name,Rasa server会根据这个name来调用action server上运行的微服务,需要注意的是这个name也必须是唯一能标识这个微服务的名称:

这是方法run,首先对各个slots进行初始化赋值:

从tracker中获取各个slots的值,然后从数据库中查询出所有符合条件的交易信息:

注意这里使用了第三方工具包SQLAlchemy来进行数据库查询:

调用dispatcher返回查询结果信息给用户,在return语句中通过使用slots初始化列表来产生SlotSet事件,通过这个事件可以把tracker中的各个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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值