RASA - 불행한 경로 테스트

16497 단어 chatbotairasanlp
에서 우리는 newsletter_form에 대해 두 가지 불행한 경로를 작성했습니다. 이제 해당 경로가 원하는 대로 작동하는지 테스트해 보겠습니다.

# 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.ymldata/nlu.yml에 적용된 변경 사항을 되돌리고 생성된 스토리만 유지했습니다.

모델을 재교육하고 테스트를 다시 실행하면 이제 모두 통과합니다.



documentation에서 불행한 경로 테스트에 대해 자세히 알아볼 수 있습니다.

다음 장에서는 REST API를 통해 챗봇과 통신하는 방법을 살펴보겠습니다.

이 튜토리얼의 저장소:


펫7555 / rasa-dev-튜토리얼






이 튜토리얼의 끝에서 다음을 실행하여 리포지토리의 상태를 체크아웃할 수 있습니다.

git clone --branch 06-testing-unhappy-paths [email protected]:petr7555/rasa-dev-tutorial.git

좋은 웹페이지 즐겨찾기