本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之电商零售Customer Service智能业务对话机器人运行过程中出现的问题进行剖析,并使用Rasa interactive模式来演示如何逐步调试问题并解决问题。
一、Rasa项目实战之电商零售Customer Service智能业务对话机器人运行流程及项目Bug调试全程演示
- 使用Rase shell --debug模式测试电商零售Customer Service项目及问题Bug思考
运行命令rasa shell –debug以调试模式启动Rasa server:
运行命令rasa run actions –debug 启动action server:
继续查询商品库存状态:
获得的反馈如下:
从上面信息看,虽然前面用户输入信息已经说明size为8,但是对话机器人仍然请求size,说明可能是对话机器人没有正确提取出关于size的实体信息,检查输出信息,发现size的信息已经正确提取,但是在slot “size”里没有设置值:
继续输入size信息:
当直接输入size时,slot “size”正确填充了值:
说明在slot “size”填充时存在bug,不能根据提取到的entity的值自动填充到”size”。
2. 使用Rasa Interactive来尝试解决项目Bug
针对上面出现的slot “size”没有正确填充值的bug,运行命令rasa interactive启动interactive模式来进行调试:
Rasa server启动完成,进入对话交互式模式:
Rasa interactive模式除了帮助定位问题外,还可以对不符合预期的对话预测行为进行纠正。
输入信息,然后根据反馈可以看到正确提取了size的值:
输入Yes继续执行,根据输出信息可以看到slot “size”的值为None,说明并没有把提取的值填充到这个slot中:
由于对话机器人提示要执行的action不是预期的,所以输入No:
这时对话机器人给出下列action list:
我们预期的是执行form “product_stock_form”,所以选择这个form来执行:
可以看到requested_slot是”size”
输入size信息:
确认intent识别正确,输入Yes继续执行,可以看到slot “size”已经正确填充了值:
继续执行form “product_stock_form”,这时可以看到requested_slot为”color”,并且对话机器人要求用户输入商品颜色信息:
输入信息,可以看到正确提取了颜色实体信息:
输入Yes确认继续执行,从输出信息可以看到slots “color”和”size”都已被正确填充:
输入Yes确认运行form “product_stock_form”,可以看到由于这个form所需信息都已收集完毕,所以设置active_loop为null来使form进入不激活状态:
根据提示执行微服务action “action_product_search”,可以看到返回了查询结果:
You're in luck! We have those in stock.
需要注意的是原先填充了值的slots “color”和”size”被重置为None,从而为下一次查询做好准备:
最后运行form “survey_form”,选择rating选项5:
输出信息如下:
3. 调整slot配置测试及问题解决方案剖析
检查domain.yml文件里的slot mapping:
可以发现slot “size”的填充必须满足form “product_stock_form”被激活的条件,但是从rule的定义看当识别intent为“product_stock”时并没有激活form。
可以调整size的mappings,如下图所示,copy原有的mapping来增加一个mapping,然后在这个新增mapping的conditions里指定intent:product_stock,这样当识别到这个intent时,就会把提取到的entity的值映射到slot “size”中。
保存训练数据: