RASA - 불행한 경로 테스트
# tests/test_stories.yml
# ... previous contents ...
- story: Chitchat during email
steps:
- user: |
I want to subscribe
intent: subscribe
- action: newsletter_form
- active_loop: newsletter_form
- user: |
How's the weather?
intent: chitchat
- action: utter_ask_continue
- user: |
Yes, I do
intent: affirm
- action: newsletter_form
- active_loop: null
- action: utter_subscribed
- story: Chitchat during frequency
steps:
- user: |
I want to subscribe
intent: subscribe
- action: newsletter_form
- active_loop: newsletter_form
- user: |
my email is [[email protected]](email)
intent: inform_email
- action: newsletter_form
- user: |
How's the weather?
intent: chitchat
- action: utter_ask_continue
- user: |
Yes, I do
intent: affirm
- action: newsletter_form
- active_loop: null
- action: utter_subscribed
테스트를 실행하면 모두 통과합니다.
그러나 다른 테스트를 추가하여 이메일 중 중단과 빈도 중 중단을 모두 테스트하면 실패하는 것을 볼 수 있습니다.
results/failed_test_stories.yml
에서 실패한 이유를 알 수 있습니다.# results/failed_test_stories.yml
version: "2.0"
stories:
- story: Newsletter form two interruptions (/var/folders/ng/z4dw_m9d1bz6m08vw7nlwwwh0000gq/T/tmpqlha244q/7bc3772cad9348a589e105ce91f29c74_test_stories.yml)
steps:
- intent: subscribe
- action: newsletter_form
- active_loop: newsletter_form
- intent: chitchat
- action: utter_ask_continue
- intent: affirm
- action: newsletter_form
- slot_was_set:
- email: [email protected]
- intent: chitchat
- action: utter_ask_continue
- intent: affirm
- action: newsletter_form # predicted: action_two_stage_fallback
- active_loop: null
- action: utter_subscribed
이 문제를 해결하려면 대화형 채팅을 시작하십시오 –
rasa interactive
.채팅 내내 올바른 조치가 무엇인지 말했습니다. 채팅이 끝날 때 이 채팅을
data/stories.yml
에 저장하도록 선택했습니다.우리를 위해 만들어진 이야기를 조사해 봅시다.
# data/stories.yml
# ... previous content ...
- story: interactive_story_1
steps:
- intent: subscribe
- action: newsletter_form
- active_loop: newsletter_form
- slot_was_set:
- requested_slot: email
- intent: chitchat
- action: utter_ask_continue
- intent: affirm
- action: newsletter_form
- slot_was_set:
- requested_slot: email
- slot_was_set:
- email: [email protected]
- slot_was_set:
- email: [email protected]
- slot_was_set:
- requested_slot: frequency
- intent: chitchat
- action: utter_ask_continue
- intent: affirm
- action: newsletter_form
- slot_was_set:
- requested_slot: frequency
- slot_was_set:
- frequency: twice a week
- slot_was_set:
- requested_slot: null
- active_loop: null
- action: utter_subscribed
이제 이전에는 작업하지 않았던 새로운 유형의 단계를 살펴보겠습니다.
이 단계는 이메일이 현재 요청되고 있음을 나타냅니다.
- slot_was_set:
- requested_slot: email
이 단계는 이메일이 [email protected] 값으로 채워졌다는 것을 의미합니다. 테스트를 통과하기 위해 이 단계가 필요하지 않습니다.
- slot_was_set:
- email: [email protected]
이 단계는 주파수가 일주일에 두 번 값으로 채워졌다는 것입니다. 테스트를 통과하기 위해 이 단계도 필요하지 않습니다.
- slot_was_set:
- frequency: twice a week
이 단계는 더 이상 슬롯이 요청되지 않음을 의미합니다.
- slot_was_set:
- requested_slot: null
request_slot에 대한 자세한 내용은 my 또는 documentation 에서 확인할 수 있습니다.
불필요한 단계를 삭제하면 좀 더 간단한 이야기가 나옵니다.
# data/stories.yml
# ... previous content ...
- story: interactive_story_1
steps:
- intent: subscribe
- action: newsletter_form
- active_loop: newsletter_form
- slot_was_set:
- requested_slot: email
- intent: chitchat
- action: utter_ask_continue
- intent: affirm
- action: newsletter_form
- slot_was_set:
- requested_slot: email
- slot_was_set:
- requested_slot: frequency
- intent: chitchat
- action: utter_ask_continue
- intent: affirm
- action: newsletter_form
- slot_was_set:
- requested_slot: frequency
- active_loop: null
- action: utter_subscribed
또한
domain.yml
및 data/nlu.yml
에 적용된 변경 사항을 되돌리고 생성된 스토리만 유지했습니다.모델을 재교육하고 테스트를 다시 실행하면 이제 모두 통과합니다.
documentation에서 불행한 경로 테스트에 대해 자세히 알아볼 수 있습니다.
다음 장에서는 REST API를 통해 챗봇과 통신하는 방법을 살펴보겠습니다.
이 튜토리얼의 저장소:
펫7555 / rasa-dev-튜토리얼
이 튜토리얼의 끝에서 다음을 실행하여 리포지토리의 상태를 체크아웃할 수 있습니다.
git clone --branch 06-testing-unhappy-paths [email protected]:petr7555/rasa-dev-tutorial.git
Reference
이 문제에 관하여(RASA - 불행한 경로 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/petr7555/rasa-testing-unhappy-paths-3gh1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)