ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CLOVA Chatbot으로 간단한 자기소개봇 만들기
    Infra/ncloud 2023. 8. 19. 12:07

    CLOVA (출처 : 네이버 클라우드 플랫폼)

     

    혹시 CLOVA Chatbot이라고 들어보셨나요? CLOVA Chatbot은 네이버 클라우드 플랫폼에서 제공하는 챗봇 빌더 서비스입니다. 우리가 그림을 그리기 위해서 그림판이나 포토샵을 이용하듯이 챗봇을 만들기 위해서는 CLOVA Chatbot 같은 챗봇 빌더를 이용해서 원하는 챗봇을 자유자재로 구성하고 만들 수 있습니다.

     

    CLOVA Chatbot과 비슷한 제품으로는 Google의 Dialogflow, Kakao의 카카오i오픈빌더, 코난테크놀로지의 코난 챗봇 등이 있습니다. 조만간 8월 중순쯤에 나올 하이퍼클로바x 덕분에 CLOVA Chatbot도 덩달아 많은 주목과 관심을 받게 될 것 같은데요. 그래서 이번 시간에는 미리 하이퍼클로바x를 대비하는 차원에서 CLOVA Chatbot으로 간단한 챗봇 하나를 만들어보는 시간을 가져보도록 하겠습니다.

     

     

    NAVER CLOUD PLATFORM

    cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

    www.ncloud.com

     


     

    ✍🏻 CLOVA Chatbot 이용 신청하기

    먼저 CLOVA Chatbot은 네이버 클라우드 플랫폼 Console에 접속하셔서 Services 탭을 누르면 다음과 같이 CLOVA Chatbot을 찾을 수 있게 됩니다.

     

    네이버 클라우드 플랫폼 서비스 중에 클로바 챗봇 찾기

     

     이 때 주의사항은 이용신청 버튼을 클릭하면 나타나는 약관을 그냥 지나치지 마시고 꼭 주의해서 읽어보시길 권장드립니다. ‘챗봇’이라는 서비스는 기본적으로 AI 학습에 사용하기 위한 대화데이터와 대화기록을 어딘가에는 반드시 저장하도록 설계되어 있습니다.

     

     CLOVA Chatbot도 마찬가지로 클라우드 챗봇 서비스이기 때문에 고객에게 제공되는 대화 데이터를 구성할 때 실수로 개인정보 같은 민감 정보를 넣어버리는 불상사가 발생하지 않도록 주의해야 합니다. 특히 판매 용도로 사용한다면 과실 책임 등도 주의 깊게 확인해 볼 필요가 있습니다.

     

    클로바 챗봇 이용약관 제 5조

     

     이용 약관을 살펴보면 CLOVA Chatbot 서비스 이용약관 제5조를 통해 성능향상을 위해 데이터를 활용할 수 있다는 점과 이용자들에게 서비스 제공 시 해당 정책 관련해서 미리 공지를 해야 된다는 점을 확인해 볼 수 있습니다. 저 또한, CLOVA Chatbot을 이용해서 자기소개봇을 만들 것이기 때문에 중요한 개인정보가 담기지 않도록 주의하면서 진행해 보도록 하겠습니다.

     


     

    🏠 도메인 생성하기

     이용약관을 동의하고 나면 이제는 도메인을 만들어야 하는데요. 도메인은 챗봇을 정의하고 구분 짓는 하나의 단위입니다. 예를 들어 병원이라는 인프라를 챗봇으로 구축한다고 가정해 보겠습니다. 이 때는 병원 전체를 하나의 챗봇으로 만들어도 되지만 병원에는 안과도 있고 내과, 외과 등 다양한 부서가 있습니다. 그렇다면 챗봇을 설계할 때 병원 자체를 하나의 도메인으로 만들어서 관리를 할 것인지, 부서별로 나누어서 관리를 할 것인지 등을 고민해야 합니다.

     

     만약 하나의 챗봇으로 구성한다면 그만큼 관리포인트가 줄어들어서 유지보수가 쉬워지고 공통적인 질문에 대한 답변을 구성할 수 있다는 장점이 있는 대신 부서별로 챗봇을 만들어서 관리한다면 세분화된 질문&답변 셋을 구성할 수 있고 트래픽을 분산시킬 수 있어 효율적인 서버 운영이 가능해집니다.

     

    저는 간단하게 도메인 하나로 자기소개봇을 만들어보도록 하겠습니다.

     

    클로바 챗봇 도메인 생성

     

    위와 같이 도메인 이름과 도메인 코드를 원하는 형식으로 생성해 줍니다. 도메인 코드는 다른 챗봇의 코드와 중복되지 않는 고유한 값으로 설정해야 합니다. (공식홈페이지에 따르면 네임스페이스는 com.ncloud.chatbot.support와 같이 도메인 형식으로 입력할 것을 권장합니다.)

     

    다음으로 자연어 처리는 원하는 언어를 선택해 주시고 서비스 타입은 가장 싸게 이용할 수 있는 Trial을 선택합니다. Trial은 말 그대로 실험용 도메인 타입으로 총 5회까지 생성할 수 있고 1회 생성할 때마다 6개월 동안 사용 가능합니다. Trial 타입을 사용하면 대화 모델 빌드 10회 및 1,000건의 API 호출까지 무료로 사용 가능합니다. (Standard는 대화 모델 빌드 유료. 건당 20000원)

     

    여기서 중요한 것은 6개월이 지나면 저장해 놓은 질문&답변 데이터셋이 사라지므로 주의하셔야 합니다. 이 때는 타입을 Standard로 변경하거나 Trial 도메인을 다시 만들어서 데이터를 옮겨야 하는 살짝 귀찮은 과정이 있을 수 있습니다.

     

    도메인을 생성하고 나면 아래와 같이 도메인 목록에 나타나게 됩니다. 목록의 오른쪽 끝에 [빌더 실행하기] 버튼을 클릭하면 빌더를 실행할 수 있습니다. 기본 설정이 끝났으므로 다음으로는 직접 챗봇을 구성해 보도록 하겠습니다.

     

    클로바 챗봇 빌더 실행하기

     


     

    💬 대화 생성하기

    [빌더 실행하기] 버튼을 통해 CLOVA Chatbot 내부로 들어오면 다음과 같은 화면이 나타납니다. 앞서 도메인을 구성할 때 입력한 정보들을 간단히 확인하고 넘어가도록 하겠습니다.

     

    클로바 챗봇 빌더 내부 화면

     

     다음은 왼쪽 메뉴바에서 [공통 메시지] 메뉴를 클릭합니다. 공통 메시지에는 웰컴 메시지와 실패 메시지 등을 등록할 수 있는데 웰컴 메시지는 챗봇의 인사말이고 실패 메시지는 챗봇이 알아듣지 못할 경우 응답하는 메시지로 생각해 주시면 됩니다. 저는 챗봇의 인사말을 다음과 같이 입력해서 넣고 저장해 보도록 하겠습니다.

     

    공통 메시지 중 웰컴 메시지 작성

     

     그리고 다음은 실패 메시지로 넘어가서 다음과 같이 입력해 보도록 하겠습니다. 만약 답변을 여러 개를 등록해 놓으면 실제 서비스에서는 그중 하나를 랜덤으로 답변하게 됩니다.

     

    공통 메시지 중 실패 메시지 작성

     

     이제 공통 메시지 구성이 끝났으니 다음에는 대화 목록으로 이동해서 실제 대화를 생성해 보도록 하겠습니다. 왼쪽 메뉴바에서 [대화 목록] 메뉴를 클릭한 후 [대화 생성] 버튼을 클릭하여 대화를 생성합니다.

     

    대화 목록에서 대화 생성하기

     

    대화를 생성할 때는 웰컴 메시지, 실패 메시지와는 다르게 질문을 등록하는 탭이 있습니다. 일반적으로 챗봇 빌더는 질문과 답변을 하나의 셋으로 구성하여 등록합니다. 이 대화 셋은 일반적으로 필드에서 소통할 때 ‘의도(Intent)’라는 명칭으로 사용됩니다.

     

    자기소개 대화 생성

     

     질문을 위와 같이 여러 개를 등록해 놓는 이유는 고객 입장에서 어떤 식으로 질문할지 모르기 때문에 고객이 질문할 만한 다양한 문장들을 등록해서 원하는 답변으로 이어지게끔 구성을 해야 합니다. 이때 클로바에서는 의미가 비슷한 10개(최소 3개)의 질문들을 입력하는 것이 모델 학습에 좋다고 가이드하고 있습니다. 질문을 등록하고 나면 답변은 웰컴 메시지와 실패 메시지에서 작성했던 것처럼 비슷하게 답변을 구성해 주시면 됩니다.

     

     만약 일일이 대화를 구성하기가 귀찮다면 Built in 템플릿을 이용하셔도 좋습니다. 다음과 같이 왼쪽 상단에 [챗봇 설정] 버튼을 클릭하여 [Built in 템플릿] 탭으로 이동한 뒤 [자세히 보기] 버튼을 통해 질문&답변을 확인한 뒤 대화 셋이 마음에 든 다면 [템플릿 적용] 버튼을 클릭합니다.

     

    빌트인 템플릿 사용하기

     

    템플릿을 적용하고 나면 대화 목록에 적용한 대화 데이터 셋을 확인할 수 있습니다. 이 대화데이터 셋을 활용하여 질문과 답변을 원하는 대로 수정하고 삭제하시면 조금 더 수월하게 작업하실 수 있습니다.

     

    추가적으로 지금까지 만든 대화데이터는 엑셀파일로 다운로드 및 업로드가 가능합니다. 대화데이터를 다운로드 받아놓으면 다른 도메인으로 이전 시 대화데이터를 업로드하여 손쉽게 옮길 수 있고 또 다운로드를 통해 일일이 UI에서 수정하기보다는 엑셀에서 일괄적으로 빠르게 작업할 수도 있기 때문에 취향에 맞게 사용하시면 좋을 것 같습니다.

     

    단, 엑셀 업로드 시에는 가이드에서 요구하는 대로 포맷에 맞게 작성해서 올리시지 않으면 빌드에 실패할 수 있으니 이 점에 주의하시기 바랍니다. 이 때는 빌트인 템플릿을 다운로드 받아서 어떤 형식으로 작성해야 되는지 참고해 보는 것도 많은 도움이 될 것 같습니다.

     

    대화데이터 다운로드

     


     

    🧪 빌드 & 테스트하기

    대화데이터 생성을 완료했다면 이제 실제로 챗봇을 테스트해 보기 위해 빌드를 진행해 보겠습니다. 빌드는 오른쪽 상단 버튼을 클릭하여 진행할 수 있습니다. 빌드는 두 가지 종류로 대화 모델 빌드와 빠른 빌드가 있는데 대화 모델 빌드는 딥러닝 모델을 통해 대화데이터를 구성하게 되고 빠른 빌드는 AI 모델 없이 정규식 등으로만 질문을 분석하여 구성하는 빌드입니다.

     

    빠른 빌드 실행

     

    저는 빠른 빌드를 통해서 테스트를 진행해 보도록 하겠습니다. 빌드가 시작되면 아래처럼 빌드중이 표시가 됩니다. 빠른 빌드는 월 30회까지 무료 제공하고 있고 대화 모델 빌드는 5회까지 가능합니다. 빌드가 완료되면 하단의 테스트 버튼을 클릭해서 실제로 테스트해 보도록 하겠습니다.

     

    빠른 빌드 진행중

     

    화면 오른쪽 하단에 파란색 동그라미로 테스트 버튼이 있는데 해당 버튼을 클릭해서 테스트를 진행해 보겠습니다.

     

    웰컴으로 시작해서 테스트 진행하기

     

    위와 같은 화면이 나타나면 저희는 웰컴메시지를 등록해 놨으니 웰컴으로 시작 버튼을 클릭해 보겠습니다.

     

    대화창에서 테스트 해보기

     

    위와 같이 빌드한 대로 답변이 잘 생성되어 나온 것을 확인할 수 있었습니다. 다만 아쉬운 건 “자기소개 부탁해”와 “자기소개해줘”는 별 차이가 없는 질문임에도 불구하고 답변을 올바르게 못한다는 점은 조금 아쉬웠는데 이것이 빠른 빌드의 단점이라고 볼 수 있습니다.

     


     

    🎁 서비스 배포 및 Invoke URL 생성 

    다음은 빌드한 챗봇을 외부에서 사용할 수 있도록 연결해 보겠습니다. 오른쪽 상단에 서비스 배포 버튼을 클릭하면 지금까지 만든 챗봇을 배포할 수 있게 됩니다. 다음과 같이 상단 내비게이션바에서 [서비스 배포] 버튼을 클릭하여 배포를 진행합니다.

     

    챗봇 서비스 배포하기

     

    [확인] 버튼을 클릭 후 왼쪽 메뉴바 상단에 챗봇 설정 버튼을 클릭하여 메신저 연동 탭으로 이동합니다. 그러면 아래와 같이 6개의 채널 종류를 확인할 수 있습니다. 저는 여기서 Custom을 선택하여 사용해 보도록 하겠습니다.

     

    메신저 연동 중 Custom 선택하여 연동하기

     

    위와 같은 화면이 나타나면 자동 연동 버튼을 클릭하여 APIGW Invoke URL을 생성합니다. 연동을 위해서는 API Gateway 이용 신청이 되어 있어야 하므로 사전에 API Gateway를 미리 신청해 놓도록 합니다.

     


     

    🌎 API Gateway를 이용한 외부 연동

    다음은 API Gateway로 넘어와서 생성된 stage를 확인합니다. CLOVA API를 사용할 수 있도록 오른쪽 상단의 API 배포 버튼을 클릭합니다.

     

    API Gateway에서 API 배포하기

     

     이후에는 API가 정상적으로 동작하는지 확인해 보겠습니다. 현재까지 CLOVA에서 제공하고 있는 API는 Open, Send, getPersistentMenu 3개입니다.

     

     

    • Open : API 호출 시 CLOVA Chatbot이 웰컴 메시지로 응답
    • Send : 질문과 함께 API 호출 시 CLOVA Chatbot이 질문에 맞는 답변을 응답
    • getPersistentMenu : 고정 메뉴 목록 가져오기

     

    CLOVA Chatbot의 API 상세 명세는 아래 링크를 통해 확인할 수 있습니다. 단, 주의할 점은 API 가이드명세가 잘못되어 있어서 이 부분은 주의하시면 좋을 것 같습니다. 아마도 API가 업데이트되면서 문서까지 최신화되지는 못한 것 같습니다. bubbles가 content로 바뀌고 description이 details로 바뀌었습니다.

     

    CLOVA Chatbot API 명세 주의

     

     

    CLOVA Chatbot Custom API

     

    api.ncloud-docs.com

     

    이 중 저희가 사용할 것은 Send API이므로 Send API 테스트에 필요한 Request Body를 API Gateway의 모델로 등록해 보도록 하겠습니다. 다음과 같이 Models 탭으로 들어와 [추가] 버튼을 클릭합니다. Models를 만들 때 사용하는 스카마 타입은 JSON-schema 타입을 사용하므로 필요한 부분을 알맞게 넣어서 사용해 주시면 됩니다.

     

    클로바 챗봇 API를 테스트 하기 위한 Model 생성

     

    아래는 Model Schema 작성 예시입니다. Send API 명세를 활용하여 만들었으므로 아래의 JSON 코드를 사용하셔도 됩니다.

     

    {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        },
        "userId": {
          "type": "string"
        },
        "userIp": {
          "type": "string"
        },
        "timestamp": {
          "type": "number"
        },
        "content": {
          "type": "array",
          "items": {
            "type":"object",
            "properties": {
                "type" : {
                    "type":"string"
                },
                "data" : {
                    "type":"object",
                    "properties": {
                        "details" : {
                            "type" : "string"
                        }
                    }
                }
             }
          }
        },"event": {
            "type": "string"
        }
      },
      "required": ["userId", "timestamp", "bubbles"]
    }

     

     Model을 등록했다면 이제는 API를 한번 호출해 보도록 하겠습니다. API Gateway에서 Model을 사용하려면 POST API를 이용해야 합니다. 따라서 [POST] 탭을 클릭하고 [TEST] 탭으로 이동한 뒤 도메인을 선택해 주고 domainId와 signature를 입력합니다. domainId와 signature는 앞서 Custom 연동할 때 생성한 InvokeURL의 엔드포인트에서 확인할 수 있습니다.

     

    클로바 챗봇 API 테스트하기

     

    아래는 SendAPI request Body의 작성 예시입니다.

     

    {
        "userId": "chucoding",
        "timestamp":20230818,
        "content": [{ 
              "type": "text",
              "data": {
                  "details":"자기소개 부탁해"
              }
         }],
         "event": "send"
    }

     

    API 호출이 정상적으로 작동하면 다음과 같이 나타나게 됩니다.

     

    클로바 챗봇 API 테스트 결과

     


     

    🌠 마치며

    이로써 CLOVA Chatbot을 통해 서비스 이용 신청부터 API Gateway 연동까지 쭉 한번 살펴보았는데요. 챗봇 빌더의 기능은 여기서 끝이 아니라 사실 이보다 더 많은 기능들을 담고 있는데 전부 소개해드리지 못해 아쉽습니다. 지금 보여드린 건 정말 빙산의 일각 정도이기 때문에 프로덕션 수준의 챗봇을 구성하실 계획이시라면 꼭 한번 네이버 클라우드 가이드문서를 확인해 주시면 좋을 것 같습니다.

     

    개인적으로는 CLOVA Chatbot을 외부에서 사용할 수 있도록 API를 연동하려면 API Gateway를 활용해서 서버리스로 구축해야 된다는 점이 다른 챗봇 빌더들에 비해 신선한 느낌이 들어서 좋았습니다. 다만, 이에 대한 설명이 다소 빈약했던 점들은 조금 아쉬웠습니다. 특히 가이드에 API 명세가 잘못되어 있어서 버그 찾기가 정말 힘들었습니다.(잘 동작하는 다른 API의 response schema 보고 유추해서 찾아냈습니다.)

     

    그래도 이전에 API Gateway를 한번 이용해 본 적이 있기 때문에 더 많은 시간을 쏟지 않았다는 점이 그나마 다행이었고 API Gateway를 조금 더 심도 있게 파헤쳐볼 수 있는 시간을 가질 수 있어서 좋았습니다. 특히 챗봇 응답에 대한 API도 서버리스로 구현할 수 있다는 점이 재밌었습니다. 만약 콜드 타임이 적용된다면 그만큼 답변 속도가 느려질 텐데 서비스하기 괜찮을까? 하는 의문이 들기는 했는데 다음에 시간이 된다면 성능 테스트도 한번 해보고 싶다는 생각이 듭니다.

     

    댓글

Designed by Tistory.