自动化的必要性
手动跑一遍覆盖各种问题的对话,太耗费时间了。例如,即便最简单的有十几个意图识别的对话场景,手动测试一遍都需要很长时间。 而且记不住有哪些 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/
查看合集
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式