对话机器人 Rasa(二十三):重置 slot 的值

发布时间: 2023-09-09 21:18:44 作者: 大象笔记

需求

在每次 rasa form 获取用户输入之后,将这个过程中用到的 slot 值重置。 即,置为 None。

防止下次进入同一个 form 时,slot 非空的情况导致未提示用户输入就进入之后的流程。

slot 重置

custom action 中,return 列表中加入 SlotSet 即可。例如:

在获取用户名之后,将用户名重置:

return [
	SlotSet("name", None),
]

错误的做法

SlotSet("name", None),

return [
]

这样,并不会生效。

custom action 中 return SlotSet 和不 return,有什么区别

在 Rasa 的自定义动作(custom action)中,使用 return SlotSet(...) 将会设置一个或多个 slot 的值,并将其返回给 Rasa 对话引擎。而不返回 SlotSet 对象,则不会更新或设置任何 slot 的值。

区别在于返回 SlotSet 对象时,Rasa 会将更新后的 slot 值应用于当前对话的跟踪器(Tracker),并将其存储在后续对话中使用。这样,Rasa 将了解到该 slot 的最新值,并可以在后续的对话中使用它来进行条件判断、回答用户问题等。

注意

细心会发现这里设置 slot 为 None,并没有同步体现在 story 或 rule 中。实际测试确实没有问题。

但是,一定要注意:

slot,action 凡是在 custom action 中 return 的,在 story 中都需要准确写出,否则会导致 slot 值设置失败,一直为 None。

除非是 slot 为 None 的情况,不需要在 story 中体现。但是为了逻辑清晰,还是加上比较好。

查看合集

📖 对话机器人 Rasa 中文系列教程

参考

我是一名山东烟台的开发者,联系作者