Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之保险行业Insurance Bot架构设计、流程分析、状态管理及智能对话实验剖析(五十五)

84 篇文章 16 订阅

    本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之保险行业Insurance Bot架构设计、流程分析、状态管理及基于Rasa Interactive的智能对话实验进行分析。

一、Rasa对话机器人项目实战之保险行业Insurance Bot架构设计、流程分析、状态管理及基于Rasa Interactive的智能对话实验剖析

  1. 通过Rasa Visualize可视化工具详解保险行业Insurance Bot功能及架构设计

运行rasa visualize来启动对话流程可视化图:

这个项目的对话流程比较复杂,下面所示是局部的可视化流程图,主要涉及以下流程:

-用户对车辆进行投保,填写报价单并获取报价信息

-健康保险理赔流程

-丢失ID卡之后对获取新卡地址信息以及验证等流程

-用户请求地址信息变更流程

中间部分涉及的主要流程包括:

查询理赔账单信息,这里会使用form “pay_claim_form”,”scroll_claim_form”等:

 2.  Rasa 3.X架构中的Agent、NLU Pipelines、Dialogue Policies、Action Server、Tracker Store等详解

下面是Rasa提供的对话机器人架构图,解析如下

-Agent就是Rasa server,基于Sanic 构建

-Rasa server启动后会操作两大核心部分:NLU pipelines和Dialogue Policies

-用户通过channel和Rasa server进行交互

-Agent内部会使用核心组件Conversation Tracker来动态跟踪和更新整个对话的状态,包括intents,entities,slots和active loops等信息

-Tracker Lock用于识别与对话机器人连接的不同用户的身份信息

-Filesystem用于存放训练后的models和训练数据

-基于Rasa SDK的Action Server称为对话机器人的微服务,它是使用action和events来驱动的

-Agent和Action Server是基于HTTP进行通信的(使用aiohttp),并通过json封装数据,Rasa的Action Server是用Python实现,你也可以使用其它语言来自定义自己的Action Server

 3.  保险行业Insurance Bot案例对Rasa X各组件的应用示例

运行rasa interactive命令,会加载以下各个组件,并100%处理stories和rules数据:

在config.yml文件里使用了两个CountVectorFeaturizer,一个是基于token级别的,另一个是基于character级别的(设置了n-gram参数):

使用了DIETClassifier组件来输出intents和entities。使用EntitySynonymMapper运用同义词技术对不同形式的词汇表达转换为统一的表达方式:

使用ResponseSelector针对常见问答等场景根据提问进行response的匹配选择:

使用FallbackClassifier用于处理当预测intent获得的confidence低于threshold或者排名最高的两个intents之间的区分度过低的情况:

AugmentedMemoizationPolicy利用具有的“遗忘机制”可以在使用stories数据来进行匹配预测action方面具有更多的灵活性:

 4.  逐行解密Rasa shell启动过程内幕

运行命令rasa shell:

显示当前用户与对话机器人交互使用的channel为cmdline:

Rasa server运行地址:

加载模型,模型包含Dialogue Policies和NLU Pipeline相关的内容:

Rasa server成功运行标识:

 5.  剖析Rasa Interactive中NLU对Insurance Bot输入的Message的处理:Intents、Entities、Slots

输入信息后,对话机器人反馈识别到的intent和提取的entities是否正确:

可以检查nlu.yml关于intent “get_a_quote”的训练数据来进行验证:

确认后会设置slot “AA_quote_insurance_type”为auto,并提示是否运行”quote_form”:

在domain.yml中可以看到slot  “AA_quote_insurance_type”的定义,使用的slot类型为”CategoricalSlot”,其中提供了4个值,slot mapping的类型为”from entity”,也就是说,当从上面提到的用户输入信息中提取到entity “quote_insurance_type”的值为”auto”时,就会自动把这个值填充到这个slot中:

确认运行”quote_form”,对话机器人输出信息,这时对应的requested_slot设置为quote_number_persons:

检查domain.yml中关于”quote_form”的定义:

另外在domain文件中也可以看到对应的模板化responses的定义,也就是上面对话机器人使用的responses:

输入数量信息:

输出信息显示slot已经填充:

继续运行”quote_form”,会提示输入quote_state的信息:

输入state信息:

输出信息显示所有slots都已填充:

运行”action_get_quote”,输出信息:

这时对话流程可视化图更新如下:

 6.  解密Insurance Bot表单提交执行微服务action全生命周期流程及Slots状态管理

当”action_get_quote”运行完成后,可以看到下面的slots已经被清空,这是由action来进行操作的:

这是action类:

下面是run方法:

从tracker中获取各个slots信息:

对final_quote进行计算,并调用模板response输出信息:

在return语句中会重设所有slots的值为None:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值