本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之保险行业Insurance Bot进行调试,并使用Rasa提供的interactive learning的模式对交互过程中出现的不符合预期的行为进行纠正。纠正包括两个方面,一是intent预测纠正,另外一方面是针对action的预测纠正,然后通过生成新的训练数据来改进对话机器人。
一、Rasa对话机器人项目实战之保险行业Insurance Bot调试、interactive learning解密及项目总结
- 使用Debugging模式解密Insurance Bot中的Check Claim Status全生命周期
下面是对话机器人给出的选项:
选择第1个选项后输出信息:
选择Yes后输出信息:
这时如果随意输入ID值,就不能通过验证:
下面是调试信息,显示对slot “claim_id”的值进行验证:
为了进行验证,需要调用action server的微服务”validate_get_claim_form”:
在action server输出信息里可以看到收到了这条要求执行验证action的请求:
这是action类:
在下面的验证方法里,会从模拟测试数据中获取用户理赔信息,然后从tracker中获取slot “claim_id”,如果slot的值在用户理赔信息中不存在,则判定为无效的claim_id:
这是模拟测试数据之一:
使用测试数据中的claim_id值作为输出,可以看到通过了验证并显示claim的状态信息:
2. 使用Debugging模式解密Insurance Bot中的Pay Claim 全生命周期
输入Yes后输出信息:
输入金额信息:
输入Yes后输出信息,这时已经执行了支付操作:
下面是tracker的状态,包含了以下信息:
-用户intent信息
-依次显示了执行的各个action以及激活的form信息
-每个action和form使用的slots信息
ActionPayClaim类:
下面是run方法,首先从tracker中获取各个slots的值,然后检查用户理赔信息,对当前用户请求的claim_id所对应的balance金额进行更新,最后在return语句里对所有slots的值设置为None:
3. 使用Rasa Interactive Learning启动Insurance Bot过程
运行命令rasa interactive启动交互式模式,注意下面的输出信息显示是直接加载训练好的模型,这是因为模型在加载前没有修改所以不需要重新训练:
4. 使用Rasa Interactive Learning解密Insurance Bot的order a new card的全生命周期
输入信息hi,然后输出信息:
运行action “utter_greet”输出信息如下:
选择第2个选项,输出信息:
并提示需要验证地址信息:
输入Yes后会输出地址信息让用户进行确认:
确认运行微服务action:
这是action类:
下面是run方法,只是输出信息而已,在实际生产环境中需要和第三方服务进行集成:
5. 使用Rasa Interactive Learning解密Insurance Bot的file a claim的全生命周期及纠正Insurance Bot的NLU行为和Policies Prediction行为
输入信息,这时intent为”bot_challenge”:
确认后输出信息:
再次输入同样的信息后,可以看到第2次识别到的intent为”nlu_fallback”,这是因为confidence低于了定义在config.yml中的FallbackClassifier的threshold:
然后会使用rules.yml中定义的rule进行处理:
这是在domain.yml中定义的模板化response:
再次输入同样信息得到intent为”bot_challenge”时,选择No,则返回下面的intent list:
这时选择ask_for_help,输出信息:
确认执行action后输出信息:
确认执行action后输出信息:
选择下面第4个选项:
这是form定义:
输入理赔金额信息:
确认以下信息:
这是微服务action:
这是run方法中当选择确认时的业务逻辑操作:
Slots信息如下:
输入信息:
输出信息:
根据提示输入claim id信息:
可以看到intent为”deny”是不正确的,所以输入No,这时返回intent list:
选择inform,并执行”pay_claim_form”,输出信息:
再次输入claim id:
可以看到intent为”deny”是不正确的,输入No,这时返回intent list:
再次选择inform,执行后提示是否要执行fallback action:
输入No,返回action list:
选择执行action_pay_claim,这时从action server输出看由于缺少数据导致执行微服务action报错:
6. 基于使用Rasa Interactive Learning生成的新增数据分析及对话机器人训练
在交互式模式下选择No,导出刚刚交互时使用的训练数据:
然后进行训练: