1. fallback
解决机器人无法处理的情况。如,用户表达不清楚,超出机器人能提供服务的范围,这时需要“兜底”的fallback操作。
a. NLU fallback
负责处理NLU阶段理解用户意图困难或模糊的情况。FallbackClassifier组件,可见pipline。
如:
pipline:
- name: FallbackClassifier
threshold: 0.6
ambiguity_threshold: 0.1
若所有意图分类组件预测出的结果中,最高的置信度小于0.6(threshold值)或最高的前2个意图得分之差不超过0.1(ambiguity_threshold),NLU的意图就会被替换成nlu_fallback。
rules:
- rules: 要求用户重说一次
steps:
- intent: nlu_fallback
- action: utter_please_rephrase
将nlu_fallback映射成utter_please_rephrase,一旦nlu_fallback意图出现,就一定会执行utter_please_rephrase动作,utter_please_rephrase动作会渲染同名模板,用户可以得到fallback消息。
b. 策略 fallback
预测下一个动作时,若置信度不高,或得分最高的2个动作间得分差很小,需要fallback。
pipline:
- name: RulePolicy
core_fallback_threshold: 0.3
core_fallback_action_name: "action_default_fallback"
enable_fallback_prediction: True
若所有的策略预测动作得分小于0.3(core_fallback_threshold)时,选择action_default_fallback作为输出动作。默认的core_fallback_threshold会渲染名为utter_default模板,返回给用户。
2. 意图触发动作
a. 内建意图触发动作
RulePolicy为action_restart、action_session_start、action_action_back提供了对应的意图restart、session_start、back,建立意图到动作的映射。当这些意图出现时会自动触发对应的动作,实现会话级别的控制。
通过输入/restart、/session_start、/back表达action_restart、action_session_start、action_action_back意图,从而完成执行对应动作的目的。
b. 自定义意图触发动作
保证当某个意图出现时,无论什么样的上下文都能百分百触发某个或多个特定的动作。——RulePolicy。
rules:
- rule: 从some_intent 到some_action 的映射
steps:
- intent: some_intent
- action: some_action
用户表达了some_intent的意图后,PulePolicy能百分百触发some_action动作。
参考文献:
[1] 孔小泉,王冠.Rasa实战:构建开源对话机器人[M].电子工业出版社.2022:201.
[2] RASA官方文档 https://rasa.com/docs/rasa/rules