Rasa表单中途意外触发回退动作终止问题修复请求
问题解决:Rasa 3.6.20表单在phone字段卡住并触发回退动作
问题核心原因
- NLU管道未配置:
config.yml中设置pipeline: null,导致Rasa完全无法识别用户输入的意图和实体,phone实体无法被正确提取,表单判定该槽始终未填充,进而触发回退动作。 - phone槽映射错误:
domain.yml中phone槽的映射指定了自定义动作action_check_required_slots_for_form,但该动作未正确适配表单的槽收集逻辑,干扰了默认表单流程。 - 表单完成逻辑缺失:未配置表单收集完所有必填槽后的结束规则,导致表单流转逻辑不完整。
具体修复步骤
1. 配置NLU管道(修改config.yml)
添加基础NLU管道,确保能正常识别意图与实体:
recipe: default.v1 assistant_id: 20240508-161019-amortized-belvedere language: en pipeline: - name: WhitespaceTokenizer - name: RegexFeaturizer - name: LexicalSyntacticFeaturizer - name: CountVectorsFeaturizer - name: CountVectorsFeaturizer analyzer: char_wb min_ngram: 1 max_ngram: 4 - name: DIETClassifier epochs: 100 - name: EntitySynonymMapper - name: ResponseSelector epochs: 100 policies: - name: RulePolicy
2. 修正phone槽映射(修改domain.yml)
移除phone槽映射中的action指定,恢复默认表单处理逻辑:
slots: # 其他槽配置保持不变 phone: type: text influence_conversation: true mappings: - type: from_entity entity: phone
3. 添加表单完成规则(修改rules.yml)
新增规则,确保表单收集完所有必填槽后正确结束:
- rule: Submit form condition: - active_loop: basic_form - slot_was_set: - first_name - middle_name - last_name - email - us_number - phone - confirm_location - confirm_mail_address steps: - action: basic_form - active_loop: null - action: utter_submit # 可自定义提交后的回复动作,需在responses中添加对应配置
4. 移除不必要的自定义动作(可选)
若action_check_required_slots_for_form无特殊业务逻辑,建议从domain.yml中移除,避免干扰默认流程:
actions: - action_general_chat # 移除 - action_check_required_slots_for_form
5. 重新训练模型
执行命令重新训练Rasa模型:
rasa train
调试截图说明
- 表单自动停用截图:显示表单未完成槽收集就被自动停用,根源是NLU无法识别输入触发回退动作。
- 调试日志截图:日志明确显示预测了回退动作,槽值被清空,核心原因是
phone实体提取失败。 - 对话界面截图:对话在询问
phone字段后无法继续,触发回退逻辑中断流程。
内容的提问来源于stack exchange,提问作者Rutvi Rajesh
相关产品推荐
相关产品推荐

