对话机器人 Rasa(二十八):添加逻辑的工作流/规范

更新日期: 2023-11-07 阅读次数: 727 字数: 575 分类: AI

总结的一些 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

查看合集

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

tags: rasa

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式