대화를 통해 추천하는 챗봇을 샘플로 보고, 배워보아요.
깃허브 수정요청

샘플챗봇 살펴보기

단비에이아이에 로그인한 후, 챗봇목록화면에서 “Sample Chatbot 가져오기”를 클릭하면 이미 만들어진 챗봇을 자신의 계정으로 복사해올 수 있습니다. 자신이 만들고자 하는 챗봇과 유사한 모델을 가져와서 조금씩 수정해보시기 바랍니다.

이번에 소개하려고 하는 챗봇은 의사결정나무봇, 디트입니다.

의사결정나무봇, 디트 살펴보기

보기를 주고 선택에 따라 대화를 다르게 이어가는 챗봇을 만들고 싶다면 의사결정나무봇, 디트를 참고해보세요! Sample Chatbot 가져오기 를 통해 의사결정나무봇, 디트 를 가져오면 챗봇을 확인할 수 있습니다.

의사결정나무봇, 디트 Frogue에서 만나보기

Sample Chatbot 가져오는 방법 확인하기

디트의 특징

  • Slot 노드의 파라미터를 통해 질문에 대한 답을 넘길 수 있습니다.
  • 넘어온 답이 무엇이냐에 따라 Split 노드를 통해 다음 노드를 어디로 연결할지 판단합니다.
  • Slot 노드와 Split 노드를 반복적으로 사용하여, 질문과 답을 주고받을 수 있습니다.

가장 흔한 추천, 대화를 통한 추천

“어서 오세요~ 노트북 하나 하실라고요? 추천해드릴까요?”
용산에 노트북 컴퓨터를 사러 가보신적이 있으신가요? 이렇게 시작되는 노트북 추천. 원리는 추천받는 고객이 누구인지, 노트북을 구매하려는 이유, 노트북을 어디다 사용할 것인지 알아낸 다음 판매원의 지식 한도내에서 고객별, 용도별 상품 구매가 일어날 가능성이 높은 가장 좋은 조건의 노트북을 3가지로 줄여서 제시하는 것입니다. 노트북은 백가지도 넘는데, 고객의 반응에 따라 3가지로 대폭 줄여주고, 특정한 상품 하나에 무게를 주어 최종 구매의사결정을 돕는 것이지요.

추천의 흐름

용산의 노트북 판매원은 처음 만난 고객에게 추천을 하기 위해서, 물어볼 수 밖에 없습니다. 그래픽 작업이나 게임을 하려면 그래픽 카드가 좋아야 할 것이고, 영업이나 수업할때 사용한다면 휴대성이 중요할 것입니다. 특정 브랜드 선호여부도 확인해야하고, 선호하는 컬러나 디자인도 있는지 확인해야 겠죠? 이런 추천을 스무고개 추천이라고 부릅니다. 마지막 답을 찾아가는 과정이 객관식 문제를 풀듯이 선택해 나가는 스무고개 게임과 비슷하기 때문이죠:)

이런 스무고개 추천은 보험상품추천, 신용카드추천, 중고차추천, 뮤지컬추천, 영화추천에서도 있을 수 있습니다.

의사결정나무 챗봇, 디트

단비아이엔씨에서는 챗봇을 어디에 적용하는 것이 좋을지 추천하는 챗봇을 간단히 만들어 보았습니다. 의사결정나무의 영어표현인 디씨전트리(Decision Tree)를 줄여서 디트라고 이름지어 보았습니다. 디트는 피노키오처럼(?) 나무로 만든 로봇입니다.

의사결정나무봇, 디트는 danbee.Ai에서 샘플챗봇 가져오기를 통해 어떻게 만들어졌는지 살펴보실 수 있습니다. 이 챗봇의 주안점은 아래와 같습니다.

  1. 하나의 파라미터로 SLOT과 SPLIT을 통해 의사결정을 찾아가는 과정을 만들었다는 점
  2. 사용자의 의사결정사항을 데이터로 쌓는다는 점

하나의 파라미터로 분기하는 법

먼저 하나의 파라미터로 어떻게 의사결정 나무를 만들었는지 살펴보겠습니다. 파라미터 “answer”가 있습니다. 계속 답을 받아야 하기 때문에 Slot노드에서 “무조건 물어보기”에 체크되어 있습니다. “무조건 물어보기”가 체크되어 있으면, Slot노드의 특징인 “파라미터가 있을때는 물어보지 않는다.”는 특징이 해제됩니다. 즉, 파라미터가 있을때도 물어보고 입력된 값을 오버라이딩(Overriding, 기존의 값을 지우고 다시 씀)하게 됩니다. answer라는 값을 기준으로 Split노드에서는 적절히 분기해주면 됩니다.

디트의 대화흐름

사용자의 의사결정사항을 데이터로 쌓자!

사용자가 최종적으로 도달한 추천사항, 의사결정사항이 무엇인지 궁금하죠? 내가 직접 고객을 만나서 대화를 한다면 이야기를 다 듣고 말해줬기 때문에 어떤 것에 관심이 있는지 자연스럽게 알 수 있지만. 디지털 채널인 웹이나 모바일과 마찬가지로 챗봇은 고객과 소통을 대행해주는 대신, 데이터는 따로 모아서 모니터링을 해야합니다. 고객소통 과정에서 중요한 정보는 파라미터로 정리해서 수집하고, DB에 쌓으면 되는 것이죠.

하지만 DB를 새로 구축하는 것은 부담되죠. 그 DB를 여러 사람이 같이 보면서 의논하거나 분석하려면 또 뭔가 시스템을 만들어야 합니다. 무료로 제공되는 다양한 플랫폼 서비스와 연계하는 방안을 생각하게 되었습니다. 구글 스프레드시트에 쌓아주는 것이지요.

샘플로 가져오기한 디트를 선택한 다음 좌측 메뉴에서 대화흐름> 대화흐름 목록을 클릭하고 “챗봇선택도움”이라는 대화흐름내에 API노드 [구글스프레드시트에 로그남기기]를 수정하면, 자신이 만든 스프레드 시트에 입력이 됩니다.

챗봇이 받은 데이터를 구글스프레드 시트에 로그 남기는 법!

  1. 구글 스프레드 시트를 하나 만듭니다. 그리고 danbee.Ai에서 만든 API가 접근할 수 있게 권한을 부여합니다. (구글스프레드시트 우측상단에 [공유설정]에서 “초대할 사용자”에 sheets-api01@danbee-ai.iam.gserviceaccount.com를 추가하고, 수정권한을 부여)
  2. spreadsheetId는 구글 스프레드시트가 열려있는 URL상에서 “https://docs.google.com/spreadsheets/d/” 이하에 있는 44자리 글자입니다. 44자리 글자 부분을 복사해서 API설정 탭에 Body부분, spreadsheetId의 JSON 값을 바꿔주면, 해당 id의 스프레드시트에 데이터가 쌓이게 됩니다.
  3. range는 스프레드시트 Head에 해당하는 부분입니다. (그냥 두시는 것이 좋겠어요.)
  4. 아래 values부분에 배열로 정의된 항목들이 실제 쌓이게 됩니다. #{변수명}을 넣으면 사용자가 입력했거나 Function노드에서 처리한 변수에 담긴 값이 들어갑니다.

     {
         "spreadsheetId":"1hMY7GUxVoBQIJUR2Q5z509b2o08HONL3tqRe7N_F7W8",
         "range":"A1",
         "values":[
             ["#{fn_date('yyyy-MM-dd HH:mm:ss', 'day', 0)}", "#{email}", "#{idea}" , "#{bottype}"]
         ]
     }
    

여기까지 간단한 의사결정나무형태의 대화모델을 만들고, 추천하고, 관련 데이터를 수집하는 챗봇의 구조에 대한 설명이었습니다.

함께해요! 챗봇시대;)

단비아이엔씨는 함께 챗봇시대를 만들어갈 파트너, 인재를 찾고 있습니다.

contact@danbee.ai로 연락주세요!


함께해요! 챗봇시대:)

모든 사물, 디지털 매체와 말이 통하는 시대! 단비Ai와 함께 반드시 오게될 챗봇시대를 열어갔으면 좋겠습니다.
지금 여러분만의 챗봇을 🌱싹틔우세요!

사람은 단비를 만들고, 단비는 챗봇을 싹틔운다.

함께할 멋진 개발자기획자를 찾습니다. 어쩌면 💧단비가 여러분이 찾던 직장일 지도 모르죠?