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

文章目录

    总结的一些 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 中文系列教程

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式