本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之电商零售Customer Service智能业务对话机器人主要业务功能所使用的微服务进行解析,并通过Rasa Interactive的调试来帮助理解其背后的逻辑。
一、Rasa对话机器人Debugging项目实战之电商零售对话机器人业务功能微服务解析与调试演示
- 订单状态查询微服务解析及Rasa Interactive调试
首先运行命令rasa run actions –debug以调试模式启动action server:
运行命令rasa interactive进入交互式对话模式:
输入信息:hi:
确认继续执行:
确认继续执行提示的action:
输入Yes确认,之后对话机器人给出以下选项供用户选择:
选择1查询订单状态:
继续执行提示所给的action:
可以看到提示信息是询问用户是否需要运行form,我们知道在Rasa框架中,一般是通过rule来激活form的,所以检查是否有相关的rule配置。检查rule文件找到了关于order status的配置,可以看到steps中描述的先执行action_deactivate_loop,再执行order_status_form的顺序与上面截图里给出的信息完全匹配。
继续执行form,这时form就处于激活状态了,可以清晰地看到当前请求的slot为”email”:
输入email信息:
确认继续执行:
可以看到slot email已经填充了刚才用户输入的email信息,继续执行提示action:
继续执行提示action查询订单状态:
这时可以看到对话机器人返回了查询结果,显示订单状态为returning:
Based on the latest order from hiheartfirst@gmail.com, it looks like your order is currently returning.
检查action server的输出日志,显示action server收到了从Rasa server通过HTTP POST方式发送的执行微服务action_order_status的请求,然后action server执行微服务完成后会把结果以HTTP response的方式返回给Rasa server:
检查domain,发现注册了这个微服务:
这是微服务类OrderStatus,它继承自Rasa SDK的Action,主要包括两个方法name()和run():
这是name方法,返回在domain中注册的微服务的action name:
这是run方法:
连接到数据库并获取cursor:
这是数据库信息,这里使用了SQLite数据库:
获取slot “email”的信息,然后作为参数值传入SQL查询语句中,之后通过cursor返回一条查询结果:
如果有查询结果,则从结果列表中取出第6个值(状态值)返回给用户
如果没有查询结果,则返回提示信息给用户
2. 用户反馈调查微服务解析及Rasa Interactive调试
查询完订单状态后,会提示运行survey_form,检查rule的配置,可以看到在执行完action_order_status之后就会执行survey_form:
我们可以在domain中找到这个form的定义:
执行form后输出如下:
可以看到用户需要选择rate(1到5的范围):
选择3,可以看到slot “rating”已经填充了值3:
根据form定义,还需要收集另外的信息,所以继续执行form:
这时会提示用户输入反馈信息:
确认继续执行,这时slot “open_feedback”填充了值:
继续执行,提示是否需要运行action_survey_submit:
确认执行:
这时检查action server输出日志,发现执行了微服务:
这是domain中注册的微服务action:
这是微服务类SurveySubmit,继承自Rasa SDK的Action:
这是name方法,返回在domain中注册的微服务的action name:
这是run方法,逻辑很简单,只是调用模板方法返回提示信息给用户,在实际开发场景中,可以把用户提供的反馈信息保存到数据库或者进行其它处理等等。需要注意的是在return语句中生成了一个SlotSet事件,这个事件会把对应slot的值设为True,这样做的目的在于当用户再次执行订单状态查询时,就不会再次请求用户提供反馈信息:
Rasa 3.x 源码高手之路:系统架构、内核算法、源码实现详解:
Rasa 3.x 源码高手之路:基于Transformer的对话机器人RasaPolice:
星空NLP对话机器人论文班:NLP领域10篇最高质量的对话机器人经典论文解密:
Rasa 3.X 智能对话机器人案例开发硬核实战高手之路 (7大项目Expert版本):
Advanced Python硬核实力高手实战之路:架构、算法、源码、案例(81讲):
NLP on Transformers 高手之路137课Pro版: