챗봇 Advanced 가이드

엔티티 태깅

엔티티는 인명, 기관명, 장소, 날짜와 상품명 등 대화를 대표할 수 있는 키워드를 의미합니다.

예를 들어, 사용자가 현재 피자를 주문하려고 하는 경우, 피자 이름 값을 '페퍼로니피자'로 보낼 수 있어야 합니다. 이 경우 페퍼로니피자를 엔티티로 정의해야 합니다.

태스크를 이용하는 경우 3가지 값을 채워서(피자 이름, 피자 수량, 사이드 메뉴) 태스크를 실행시켜야 한다면, 필수로 입력되어야 하는 값들을 엔티티로 지정해서 사용해야 합니다.

chatbot-03-059.png

엔티티를 생성하면 자동으로 Code에 엔티티 코드 값이 생성됩니다. 이 코드 값은 태스크에 등록된 액션메소드를 통해서 외부로 API를 호출할 때 X-KAA-USERENTITY header에 담겨GET/POST 방식으로 보내는 Value 값으로 대체됩니다.

위의 피자 선택 예시에서 아래와 같이 pizza=$[피자]를 입력하여 액션메소드를 생성하면, 챗봇 빌더 내부에는 pizza=$[00af15ee22914a948394441edfd60db3]로 변환되어 저장됩니다. 이후에 사용자가 '페퍼로니 피자'를 발화하여 해당 액션메소드가 실행된 경우 API 서버에는 pizza='페퍼로니 피자'라고 변환되어 전달됩니다.

https://beta-chatbot.ncloud.com/api/v1/actionmethod/echo?pizza=$[피자]

chatbot-03-061.png

chatbot-03-060.png

대화에서 엔티티를 태깅하는 방법은 다음과 같습니다.

  1. 먼저 '페퍼로니피자'를 마우스로 끌어 선택합니다.
  2. 엔티티 선택 창이 나타나면 엔티티를 선택합니다. 엔티티가 없는 경우 엔티티 생성을 클릭합니다.

chatbot-03-062.png

엔티티가 태깅된 경우에는 대화의 질문에 엔티티가 파란색으로 인식됩니다. 파란색으로 인식되지 않았을 경우에도 대화의 질문에 대해 엔티티 태깅을 할 필요는 없습니다. 왜냐하면 모델 학습 시에 엔티티에 있는 항목들을 자동으로 인식하여 태깅을 진행하기 때문입니다. 따라서 효과적으로 대화를 구성하려면 엔티티로 사용할 항목들을 프로젝트 초기에 잘 정의하고 진행해야 합니다.

대화 컴포넌트: 폼 + 액션메소드

폼은 사용자의 입력을 선택적으로 받을 수 있는 방법입니다.

시나리오 예시: 오늘 날씨 알려줘라는 질문에 #{도시선택}이라는 폼을 제공하도록 설계하였습니다. 그리고 서울을 선택하면 ${weather}라는 액션메소드를 실행하여 답변을 주는 시나리오입니다.

chatbot-03-063.png

  1. 엔티티를 생성합니다.

    '도시'라는 엔티티를 입력합니다. 대표어에는 '서울'과 '뉴욕'을 입력합니다.

    chatbot-03-064.png

  2. 액션메소드를 생성합니다.

    ${weather}를 생성합니다.

    호출할 URL은 GET 방식으로 city = 도시명을 넘기면 현재의 온도값을 보내주도록 개발되어 있다고 가정합니다. 호출 URL에서 넘겨줄 인자 값에 city=$[도시]를 입력하여 액션메소드를 생성합니다. 이 때 챗봇 빌더 내부에는 엔티티의 이름 대신 엔티티 Code 값으로 변환되어 저장됩니다.

    chatbot-03-065.png

    참고

    액션메소드 테스트를 위해서 간단하게 Serverless 함수를 하나 만들었습니다. 우측의 "echo 호출"버튼을 클릭하여 간단히 테스트하실 수 있습니다.

    https://beta-chatbot.ncloud.com/api/v1/actionmethod/echo?city=$[도시]
    
  3. 폼을 생성합니다.

    #{도시선택}을 생성합니다. 서울을 선택하거나 텍스트로 서울이라고 입력한 경우에 ${weather} 액션메소드가 호출됩니다.

    chatbot-03-066.png

  4. 대화를 생성합니다.

    발화 예시 질문에 '오늘 날씨 알려줘'라고 입력하고 답변에는 #{도시선택}을 입력합니다.

    학습을 클릭하고 테스트를 완료합니다

대화 컴포넌트: 폼 + 폼

챗봇 서비스에서는 폼을 사용하여 사용자의 선택을 제한하지 않아도 사용자의 자연스러운 입력을 통해서 서비스 구성이 가능합니다. 그러나 정해진 시나리오를 통해서 사용자의 선택을 이끌어가야 할 경우에는 폼을 연속해서 연결하거나 폼에서 대화로 연결하는 것이 가능합니다. 폼과 폼을 연결하는 방법은 다음과 같습니다.

chatbot-03-067.png

답변에서 #{서비스추천} 폼을 호출합니다. #{서비스추천}에서는 선택에 따라서 #{게임서비스} 폼이나 #{모바일 및 웹서비스} 폼을 호출합니다.

대화 컴포넌트: 폼 + 대화

챗봇 서비스에서는 폼을 사용하여 사용자의 선택을 제한하지 않아도 사용자의 자연스러운 입력을 통해서 서비스 구성이 가능합니다. 그러나 정해진 시나리오를 통해서 사용자의 선택을 이끌어가야 할 경우에는 폼을 연속해서 연결하거나 폼에서 대화로 연결하는 것이 가능합니다. 폼과 대화를 연결하는 방법은 다음과 같습니다.

chatbot-03-068.png

답변에서 #{모바일 및 웹서비스} 폼을 호출합니다. #{모바일 및 웹서비스}에서는 선택에 따라서 '모바일 서비스'대화웹 서비스 대화를 호출합니다.

대화 컴포넌트: 태스크

태스크는 복잡한 피자 주문이나 택배 반품과 같이 여러 가지 정보를 수집한 후 최종 액션(정보 컨펌)을 실행하여 대화를 마무리할 수 있는 기능입니다. 흔히 챗봇에서 말하는 슬롯 채우기(Slot Filling) 기능입니다.

태스크의 필수 엔티티가 인지되면 태스크가 실행되며, 태스크에서 지정한 필수 엔티티 값을 챗봇 이용자에게 받습니다. 필수 엔티티 값이 다 채워지면 종료 시 호출할 폼이 실행되는 구조입니다.

  • 필수 엔티티가 모두 채워지지 않으면 반복하여 입력을 요청합니다. 태스크에서 빠져나오려면 '그만'이라는 키워드를 입력합니다.
  • 필수 엔티티가 모두 채워진 후 처음으로 호출되는 액션메소드에는 채워진 엔티티 값을 한꺼번에 Flush합니다.
  • 종료 시 호출할 폼에서 사용자의 선택에 대한 최종 컨펌(Confirm)을 받도록 설계할 수 있습니다.
  • 다수의 태스크를 구성하였을 경우 필수 엔티티를 중복으로 사용하실 수 없습니다.

피자를 주문하는 태스크 사용 대화 예시입니다.

  1. 사용자는 피자 종류: 페퍼로니 피자를 선택합니다.
  2. 사용자는 피자 사이즈 : 라지를 선택합니다.
  3. 사용자는 음료수: 콜라를 선택합니다.
  4. 3가지 선택사항을 한꺼번에 주문 서버로 넘깁니다.
  5. 종료 시 호출할 폼에서는 선택한 사항을 컨펌할지 Yes/No로 물어봅니다.

태스크 설계하기

  1. 필수 엔티티 설계하기

    • 피자, 피자사이즈, 음료수 엔티티를 만듭니다.

      chatbot-03-069.png

  2. 수집된 엔티티를 발송할 액션메소드 만들기

    필수 엔티티가 모두 채워진 후 처음으로 호출되는 액션메소드에는 태스크에서 채워진 엔티티 값을 한꺼번에 전달(Flush)합니다. 전달한 이후에는 엔티티 값이 다시 초기화됩니다.

    chatbot-03-072.png

  3. 종료 시 호출될 폼 만들기

    종료 시 호출할 폼에서 "예" 선택지의 답변 부분에 ${태스크종료시호출할액션메소드}를 호출하도록 지정합니다. 태스크의 엔티티가 모두 채워진 후에 첫 번째로 액션메소드를 실행시킵니다.

    chatbot-03-073.png

  4. 태스크 만들기

    앞에서 만들어진 엔티티와 액션메소드 그리고 폼을 조합하여 태스크를 설정합니다.

    chatbot-03-074.png

  5. 학습을 수행하고 완성된 태스크를 테스트합니다.

태스크에서 빠져나오기

일단 태스크 대화로 진입하면 이 태스크가 마무리될 때까지 이 대화 안에서 머물기 때문에 태스크를 사용하는 케이스를 명확하게 해야 하고, 이 태스크에서 빠져나올 수 있게 하는 방법도 구현해야 합니다. 챗봇에서는 '그만'이라는 키워드가 지정되어 있습니다. 태스크 대화 중에도 다른 대화를 시작하면 챗봇은 답변을 합니다. 이때는 태스크의 답변과 다른 대화의 답변이 함께 표시가 됩니다.

실제 간단한 챗봇 대화 생성에는 복잡한 태스크를 사용하지 않아도 됩니다. 이때는 사용자의 대화를 견고하게 작성하는 것이 챗봇의 성능을 높일 수 있습니다.

Excel Template

Excel Template 다운로드

  • 대화 템플릿
  • 엔티티(Entity) 템플릿
  • 대화 유형 템플릿
  • 액션메소드(ActionMethod) 템플릿
  • 폼(Form) 템플릿
  • 태스크(Task) 템플릿

연관 정보 바로가기

도메인 생성, 대화 목록과 컴포넌트 관리 및 통계 관리와 관련하여 아래 사용 가이드를 참고하실 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...