RASA - 불행한 길
뉴스레터 양식을 작성할 때 잡담으로 넘어가거나 마음이 바뀌어 양식을 전혀 작성하지 않을 수 있습니다.
이제 이 두 가지 경우를 처리하겠습니다.
가벼운 대화
사용자가 뉴스레터 양식을 작성할 때 완전히 관련 없는 내용에 대해 이야기하기 시작할 수 있습니다. 이 경우 사용자가 원래대로 돌아가 양식을 완료할 수 있는 방법을 제공하고자 합니다.
사용자가 범위를 벗어났음을 의미하는 새 인텐트를 만듭니다. 이 인텐트에 몇 가지 교육 예제를 추가합니다.
# data/nlu.yml
# ... previous contents ...
- intent: chitchat
examples: |
- that's not what I want to do
- wait stop
- you're no help
- this is no help at all
- how old are you
- I want to order a pizza
- tell me the weather
- this isn't working
- I already told you that
- don't like that
- I don't want to tell you that
- none of your business
- that's not right
- stop asking
- nevermind
- I want to do something else
- I changed my mind
긍정 및 거부 의도 두 개를 더 추가합니다.
# data/nlu.yml
# ... previous contents ...
- intent: affirm
examples: |
- yes
- indeed
- of course
- that sounds good
- correct
- sure
- ok
- why not
- ok great
- yes I did
- yeah, great
- pretty good
- fine
- You bet
- I sure did
- more or less
- intent: deny
examples: |
- no
- never
- I don't think so
- no way
- not really
- none
- absolutely not
- no thanks
- didn't do any
- no I didn't
- could have been better
- not great
- nope
다른 모든 인텐트와 마찬가지로
domain.yml
파일에도 나열합니다.# domain.yml
# ... previous contents ...
intents:
# ... previous intents ...
- chitchat
- affirm
- deny
챗봇이 잡담 의도를 알아차리면 사용자가 계속할 것인지 묻습니다. 이에 대한 발화를 만들어 봅시다.
# domain.yml
# ... previous contents ...
utter_ask_continue:
- text: Sorry, I don't quite understand. Do you want to continue?
이제 이러한 의도와 응답을 하나의 스토리에 함께 넣어 보겠습니다.
# data/stories.yml
# ... previous contents ...
- story: newsletter form continue
steps:
- intent: subscribe
- action: newsletter_form
- active_loop: newsletter_form
- intent: chitchat
- action: utter_ask_continue
- intent: affirm
- action: newsletter_form
이 이야기에서 채팅 의도가 인식되면 챗봇은 사용자가 계속할 것인지 묻습니다. 그렇다면 양식이 다시 활성화됩니다.
이제
rasa train && rasa test
를 실행합니다.어시스턴트를 테스트해 봅시다.
좋아 보인다, 이제 두 번째 양식 질문 중에 잡담을 해보자.
무슨 일이에요? 피자 주문을 이메일 빈도로 간주하는 이유는 무엇입니까? 이에 답하기 위해 매우 유용한 새로운 rasa 명령
rasa interactive
을 소개하겠습니다.그러면 모델이 훈련되고 대화형 학습 세션이 시작되어 채팅을 통해 Rasa 모델에 대한 새로운 훈련 데이터를 생성합니다. 그러나 이를 사용하여 어시스턴트를 디버깅할 것입니다.
대화형 채팅 중에 어떤 의도가 표현되었는지에 대한 챗봇의 결정을 볼 수 있습니다.
따라야 할 조치:
어떤 법인이 인식되었는지:
이러한 결정을 수정할 수 있습니다.
챗봇이 피자 주문을 잡담 의도로 제대로 인식한 것을 볼 수 있습니다.
그렇다면 문제는 어디에 있습니까?
문제는 의도와 관계없이 주파수 슬롯이 항상 from_text로 채워진다는 것입니다.
의도가 inform_frequency인 경우에만 주파수 슬롯을 채워야 한다고 챗봇에 알려야 합니다.
domain.yml
파일에서 이를 수행하는 쉬운 방법이 있습니다.# domain.yml
# ... previous content ...
forms:
newsletter_form:
email:
- type: from_entity
entity: email
frequency:
- type: from_text
intent: inform_frequency
이제 주파수 슬롯은 의도가 inform_frequency인 경우에만 from_text로 채워집니다.
documentation에서 이에 대해 자세히 알아볼 수 있습니다.
이제 맞습니다!
양식 나가기
발생할 수 있는 두 번째 불행한 경로는 사용자가 양식을 전혀 계속하고 싶어하지 않는 것입니다. 이와 같은 경우 어시스턴트는 요청된 슬롯에 대한 요청을 중지해야 합니다.
여기에 대한 이야기가 있습니다.
# data/stories.yml
# ... previous contents ...
- story: newsletter form stop
steps:
- intent: subscribe
- action: newsletter_form
- active_loop: newsletter_form
- intent: chitchat
- action: utter_ask_continue
- intent: deny
- action: action_deactivate_loop
- active_loop: null
양식을 비활성화하고 요청된 슬롯을 재설정하는 기본 작업 action_deactivate_loop를 사용하여 상황을 처리합니다.
사용자가 양식을 취소한 후 챗봇이 질문을 중지한 것을 볼 수 있습니다.
documentation에서 불행한 경로에 대해 자세히 알아볼 수 있습니다.
다음 장에서는 이러한 불행한 경로를 테스트하는 방법을 살펴보겠습니다.
이 튜토리얼의 저장소:
펫7555 / rasa-dev-튜토리얼
이 튜토리얼의 끝에서 다음을 실행하여 리포지토리의 상태를 체크아웃할 수 있습니다.
git clone --branch 05-unhappy-paths [email protected]:petr7555/rasa-dev-tutorial.git
Reference
이 문제에 관하여(RASA - 불행한 길), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/petr7555/rasa-unhappy-paths-d49텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)