总结的一些 Rasa 开发过程中的经验和技巧,持续更新中 ...
第一步:流程图/对话逻辑图
- 原始的流程是怎样的
- 新流程逻辑分支 1 是怎样的
- 新流程逻辑分支 2 是怎样的
- 新流程逻辑分支 N 是怎样的
- 新流程逻辑抽象合并
第二步:utter_xxx 回复内容
domain.yml 中补充新增的 utter。
因为有了 utter,剩下的任务就把逻辑串联起来。
与此同时,通过完成简单的小任务,减少项目进度焦虑。
utter_xxx 前加上 intent
方便在 domain.yml 内可以搜索到所有的逻辑,省去了去 stories / rules 文件中去查找逻辑对应关系。
例如:
utter_xxx 前加上:
# intent: xxx
如果有多个 intent 可以触发此 utter,则:
# intent: xxx1
# intent: xxx2
大段注释添加到 custom action 中
对于复杂逻辑处理,将注释添加到 custom action 中, 越详细越好。不建议将逻辑整理到独立的文档中,或者在线文档中, 越接近代码的地方,越方便理解。提高查找效率。
rule or story
能用 rule 的,尽量使用 rule。保持逻辑的简洁。
能用一个 action 表达的,不用两个及多个。
yml 中不要使用多行文本
domain.yml 中尽量不要使用多行文本,虽然格式上支持,但是容易引起训练出来的模型逻辑错误。
如必须使用大段多行文本内容,可以提取出来作为一个独立的文件,然后用 URL 链接指向这个文本文件。 前端做拉取 & 解析即可。
这样还有一个好处,就是存储的日志中,也会简化很多。
两个不同 form 触发的 utter 不要用相同
否则会造成逻辑混淆。
例如下面的 utter_enter_forget_info 与 utter_enter_forget_info2,即便内容是完全一样的, 也不要共用,会造成逻辑混淆。虽然不会报错,但是在实际对话过程中,逻辑会乱。
- story: enter_info_for_search_1
steps:
- intent: enter_info_for_search_1
- action: utter_enter_forget_info
- action: forget_info_1_form
- active_loop: forget_info_1_form
- story: enter_info_for_search_2
steps:
- intent: enter_info_for_search_2
- action: utter_enter_forget_info2
- action: forget_info_2_form
- active_loop: forget_info_2_form
查看合集
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式