硅谷硬核Rasa课程、Rasa培训、Rasa面试系列之:Rasa 3.x Rules
规则是一种训练数据,用于训练助手的对话管理模式。规则描述应始终遵循相同路径的简短对话。
不要过度使用规则。规则对于处理小的特定对话模式非常有用,但与故事不同,规则不能概括为看不见的对话路径。将规则和故事结合起来,让你的助手更加健壮,能够处理实际的用户行为。
如果你不能决定是写一个故事还是一个规则来实现某个行为,请参阅编写对话数据的最佳实践。
有关在Rasa助手中实现规则的其他示例,请参阅我们的规则示例机器人。
https://github.com/RasaHQ/rasa/tree/main/examples/rules
Rules example bot
规则示例机器人
rasa/actions.py at main · RasaHQ/rasa · GitHub
https://github.com/RasaHQ/rasa/blob/main/examples/rules/data/nlu.yml
rasa/rules.yml at main · RasaHQ/rasa · GitHub
rasa/config.yml at main · RasaHQ/rasa · GitHub
rasa/domain.yml at main · RasaHQ/rasa · GitHub
rasa/endpoints.yml at main · RasaHQ/rasa · GitHub
Writing a Rule
在开始编写规则之前,必须确保将规则策略添加到模型配置中:
然后可以将规则添加到训练数据的规则部分。
要表明规则可以在对话中的任何时候应用,请从启动对话的意图开始,然后添加助手应执行的操作。
此示例规则适用于会话开始,以及正在进行的会话的中间发送问候语。
如果只在训练数据中作为规则出现,而在故事中不出现的对话回合,在预测时将被仅限机器学习的策略(如TEDPolicy)忽略。
例如,如果您如上所述定义问候语规则,并且没有将其添加到任何故事中,则在RulePolicy预测“打招呼”后,TEDPolicy将进行预测,就好像没有发生“打招呼(greet)”及“打招呼答复”(utter_greet)一样。
Rules for the Conversation Start
对话开始的规则:要编写只在对话开始时适用的规则,请将conversation_start: true添加到规则
如果用户在稍后的对话中发送了带有问候意图的消息,则规则将不匹配。
Rules with Conditions
条件描述了适用规则必须满足的要求。为此,请在条件condition 键下添加有关先前对话的任何信息:
条件下可能包含的信息包括slot_was_set事件和active_loop事件
Skip Waiting for User Input at the End of a Rule
跳过在规则末尾等待用户输入:默认情况下,当完成最后一步时,规则将等待下一条用户消息:
如果要将下一个动作预测交给另一个故事或规则,请将wait_for_user_input:false添加到规则中:
这表明助手在等待更多用户输入之前应该执行另一个操作。
Rules and Forms
当表单处于活动状态时,机器人bot将根据表单的定义进行预测,而忽略规则。在下列情况下,规则再次适用:
- 该表单将填充所有必需的插槽
- 表单拒绝执行(有关更多详细信息,请参阅处理不愉快路径)
Rasa官网链接: https://rasa.co