问题现象
在某个对话流程之后,返回了两个按钮,点击一个按钮
- 预期的效果是:先返回一个 utter,然后进入 form 输入 loop。
- bug 表现:要么返回空,要么返回完全不着边际的一个 utter,或者触发一个没有任何关联的一个 custom action。
我本以为是这个 intent,触发 form loop 这个 story 写的有问题。
但实际上,发现这两个按钮都不正常了,甚至所有 intent 都无法在这个操作之后正常被识别。
排除 intent 识别问题
按钮 payload 中的指定意图,类似这样的格式。
/intent
这个是不会有识别问题的。因为其 confidence 就是 1.0。不会出现因为 confidence 不足,而 fallback 的情况。
实际测试也能证实这一点,在不进行任何操作之前,就在对话中输入
/intent
或者在 rasa shell 中输入此 intent,会发现,都能被正确的识别,并且返回预期的 utter 或者触发 action。
只有在某个特定的 story / rule 之后才会出现所有 intent 无法识别的诡异现象。
所以,一定是前一步的 story / rule 出现了问题。
定位 story / rule 的问题
此处是一个简单 rule,如:
- rule: intent_a
steps:
- intent: intent_a
- action: action_a
- slot_was_set:
- slot1: true
- slot2: true
- slot3: true
- slot4: true
- slot5: true
action_a 是一个 custom action,逻辑的最后会设置五个 slot 的值。
通过逐一注释排查每个 slot,发现是 slot 的 influence_conversation 配置问题。
例如,原 slot1 的配置为:
slot1:
type: text
influence_conversation: true
mappings:
- type: from_text
conditions:
- active_loop: slot1_form
requested_slot: slot1
但实际上这个 slot1 并不会影响流程,具体示例如:对话机器人 Rasa(十五):slot type 与 influence conversation
所以需要修改为:
slot1:
type: text
influence_conversation: false
mappings:
- type: custom
就一切正常了。
补充
这个问题非常诡异,有时候训练出的模型是正常的。但是今天怎么训练都生成不了一个可用的。
之前是侥幸,终于今天发现问题的根源了。
查看合集
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式