一、概述
在设计智能业务对话系统时,通常会考虑到不同的用户会使用不同的对话路径来与对话机器人进行交互,对于一个新用户来说,可能首先从打招呼开始,然后借助帮助信息来展开业务对话流程,对于已经比较熟悉业务流程的老用户来说,可能会有在当前的业务流程中穿插其它业务流程的情况。从对话系统的角度看,从头到尾正常执行完一个业务流程的路径被视为是一种”happy”的路径,而在对话流程中出现了跟当前业务流程无关的对话或者操作被视为是一种”unhappy”的路径。具体来说,针对上篇文章介绍的转账功能,可能有的用户在执行操作时,会中间插入其它的业务,这个时候对话机器人应该如何进行处理呢?我们先来看看下面这个对话流程:
首先用户开始一个转账业务流程,当对话机器人向用户询问转账接收人信息时,用户改变了继续进行现有流程对话,而是想先检查一下账户交易信息,这时对话机器人并不是简单地直接就开始一个新的业务流程,而是首先询问用户是否需要切换到交易查询流程:
We haven't completed the money transfer yet. Are you sure you want to switch to transaction search?
在上面的对话场景中,用户确认要切换到交易查询,那么接下来对话机器人会暂停当前的业务流程而开始交易查询流程,接下来会问用户需要查询哪一个商家的交易信息,用户选择了Starbucks,然后对话机器人反馈要求用户提供查询时间,在调用微服务完成交易查询之后,对话机器人会自动询问用户是否需要切换回原有的转账业务流程:
Would you like to go back to the money transfer now?
用户确认后输出如下:
可见确实又重新回到了交易查询之前的对话状态,即转账流程中询问用户转账接收人的环节。上面这个对话示例只是演示了对话系统在实际使用中可能会出现的一种场景。下面会使用Rasa框架提供的interactive交互模式来详细剖析背后的逻辑以及对相关的微服务进行解析。
二、Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务流程切换解析与调试
- Financial Bot转账业务流程与交易查询业务流程切换解析与调试
首先运行rasa interactive命令进入交互式模式:
运行rasa run actions –debug以调试模式启动action server,即运行注册的微服务:
输入信息:hi:
这时对话机器人正确识别了用户意图,确认继续执行:
确认继续执行:
确认继续执行:
确认继续执行,输入信息:I want to transfer money,可以看到正确识别了转账意图:
确认继续执行,可以看到提示是否需要运行form:
这是form的定义:
其中需要收集跟转账相关的信息如转账接收人(PERSON)和转账金额等信息。
继续运行form后提示用户确认是否需要进行转账:
选择选项1(Yes)确认:
由于确认要进行转账所以提示需要运行form:
继续运行form,这时可以看到对话机器人要求用户输入转账接收人:
但是现在用户改变了继续操作的想法,而是想先查询一下自己账户的交易情况,所以直接输入信息:I want to check my transaction records
这时意图识别为交易查询,显然与转账流程不符,这时就需要执行action_switch_forms_ask向用户询问是否需要切换form:
输入Yes确认后切换到交易查询流程:
这时可以看到slot “next_form_name”设置为“transaction_search_form”,然后提示用户是否需要继续进行:
确认继续执行action_switch_forms_affirm,这时可以看到slot “previous_form_name”的值被设为“transfer_money_form”:
继续执行提示的transaction_search_form:
这时就会提示用户输入交易查询需要的商家信息,根据提示输入Starbucks:
确认继续执行:
Slot “vendor_name”正确填充了信息,然后继续运行transaction_search_form:
接下来需要收集查询时间信息:
In which timeframe would you like to search for transactions?
输入:last month,
继续执行:
继续运行form,这时对话机器人反馈是否执行指定商家和时间段的交易查询:
Do you want to search for transactions with Starbucks between Mar 2022 and Apr 2022?
注意这里使用了两个slots来存储查询开始时间和结束时间。
继续执行:
选择选项1进行确认:
继续运行form完成信息收集后,这时提示是否运行微服务action_transaction_search:
运行微服务action_transaction_search查询交易信息,返回结果如下:
I found 15 transactions at Starbucks totalling $303.09.
这时对话机器人提示是否执行action_switch_back_ask,这是因为当前交易查询已完成,所以需要询问用户是否切换回之前的转账业务流程。
确认继续执行:
根据对话机器人反馈选择选项1 (Yes):
可以看到这时对话机器人提示是否需要运行transfer_money_form,表示当前对话已经切换回转账业务流程:
继续执行transfer_money_form:
确认继续执行转账流程:
选择选项1(Yes):
继续运行transfer_money_form,这时可以看到对话机器人给出的反馈:
Who do you want to transfer money to?
而且当前正在请求的slot为“PERSON”,说明已经成功切换回转账流程了:
Rasa 3.x 源码高手之路:系统架构、内核算法、源码实现详解:
Rasa 3.x 源码高手之路:基于Transformer的对话机器人RasaPolice:
星空NLP对话机器人论文班:NLP领域10篇最高质量的对话机器人经典论文解密:
Rasa 3.X 智能对话机器人案例开发硬核实战高手之路 (7大项目Expert版本):
Advanced Python硬核实力高手实战之路:架构、算法、源码、案例(81讲):
NLP on Transformers 高手之路137课Pro版: