对话机器人 Rasa(五):自动化测试

更新日期: 2023-05-08 阅读次数: 2099 字数: 620 分类: AI

自动化的必要性

手动跑一遍覆盖各种问题的对话,太耗费时间了。例如,即便最简单的有十几个意图识别的对话场景,手动测试一遍都需要很长时间。 而且记不住有哪些 rule ... 需要对照着 nlu.yml 文件才能记起来。

比较高效的方式是,跑一遍自动化测试,然后将失败的 case 摘出来,手动跑一遍交互式训练。

还有另外一个好处,就是之后现场演示的时候,可以照着自动化测试的 test case 来演示,以保证万无一失。避免像百度文心一言一样,发布会上连现场演示的勇气都没有。

测试文件

> ls tests/
test_stories.yml

似乎没有 test_rules.yml 这样的文件,只能用 test_stories.yml 了。对于我目前的简单规则场景,有种杀鸡用牛刀的感觉。

写两个测试

对应简单规则,可以把所有 rules 都写在一个 story 里。

- story: simple rules
  steps:
  - user: |
      你好
    intent: greet
  - action: utter_greet

  - user: |
      你是谁
    intent: bot_challenge
  - action: utter_iamabot

  - user: |
      人工客服联系方式
    intent: human_tel
  - action: utter_human_tel

  - user: |
      你真聪明
    intent: praise
  - action: utter_praise

  - user: |
      再见
    intent: goodbye
  - action: utter_goodbye

执行测试

rasa test

测试结果

全部通过的结果:

2023-04-19 16:40:55 INFO     rasa.core.test  - Finished collecting predictions.
2023-04-19 16:40:55 INFO     rasa.core.test  - Evaluation Results on CONVERSATION level:
2023-04-19 16:40:55 INFO     rasa.core.test  -  Correct:          7 / 7
2023-04-19 16:40:55 INFO     rasa.core.test  -  Accuracy:         1.000
2023-04-19 16:40:55 INFO     rasa.core.test  - Stories report saved to results/story_report.json.
...
// 下面这行日志没有意义,因为即便是失败的,也会有这条。
2023-04-19 16:41:53 INFO     rasa.nlu.test  - Every intent was predicted correctly by the model.

有一例失败的结果:

2023-04-19 17:29:57 INFO     rasa.core.test  - Evaluation Results on CONVERSATION level:
2023-04-19 17:29:57 INFO     rasa.core.test  -  Correct:          7 / 8
2023-04-19 17:29:57 INFO     rasa.core.test  -  Accuracy:         0.875
2023-04-19 17:29:57 INFO     rasa.core.test  - Stories report saved to results/story_report.json.

查看具体哪个 story 失败了

结果文件在 results/failed_test_stories.yml, 里面里有对应的失败 case 记录。

> cat results/failed_test_stories.yml
version: "3.1"
stories:
- story: oxygen_benefit (./tests/test_stories.yml)
  steps:
  - intent: oxygen_benefit  # predicted: greet: 你好
  - action: utter_oxygen_benefit

如果全部 test case 通过,则显示:

> cat results/failed_test_stories.yml
# None of the test stories failed - all good!¶

还有一个 warnings 文件,不知道有什么作用:

> cat results/stories_with_warnings.yml
# No warnings for test stories¶

参考

  • https://rasa.com/docs/rasa/testing-your-assistant/

查看合集

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

tags: rasa

关于作者 🌱

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