brunch

You can make anything
by writing

C.S.Lewis

by 하랑 Dec 29. 2017

[번역] 챗봇 제작 기술 선택을 위한 최상의 안내서

완벽한 챗봇은 어떻게 설계할까?

아래 글은 챗봇에 대한 동향을 전해주는 Chatbotsmagazine 의 인기글 중 하나인 The Ultimate Guide To Designing A Chatbot Tech Stack(원본 링크)를 번역한 글입니다.


이 글의 글쓴이인 Sébastien Fourault는 현업에서 디지털 전략 컨설턴트로 일하면서 크고 작은 기업을 위해 챗봇을 제작한 경험을 바탕으로, 챗봇의 목적과 고객의 요구사항에 따라 합리적인 비용으로 챗봇을 만들기 위해 필요한 기술 스택에 대해 이야기합니다.


이 글은 베트남어(링크)와, 중국어(링크)로 번역되기도 했는데요. 챗봇에 관심 있는 많은 분들과 함께 읽고 이야기 나누고 싶어 번역해 보았습니다.


챗봇 관련 사업에 종사하고 계시다면 아래 대화가 낯설지 않을 겁니다.

고객 - “챗봇 만들려면 어떤 기술이 필요해요?
본인 - “하나의 기술로 해결되지 않고, 여러 기술들이 결합된 기술 스택이 필요합니다. 각각의 기술은 각각의 문제밖에 해결하지 못하기 때문에 어떤 프로젝트인지에 따라 무엇을 해야 할지 바뀌죠.”
고객 - “그러니까 그래서 뭘 하면 됩니까?”
본인 - “그럼 이 10가지 질문에 먼저 답해주시겠어요?”

이 글에서는 고객에게 가장 효율적인 챗봇 기술 스택을 설계하기 위한 저만의 프레임워크를 자세히 설명해 보겠습니다.


현재 챗봇 시장은 완전 카오스 상태입니다. 정말로요!

A Chatbot Landscape by KeyReply

보시다시피 엄청 많은 회사에서 엄청 많은 것을 하고 있어요. 그래서 고객들은 어디에 얼마만큼의 돈을 써야 하는지 가늠하기가 어렵습니다. 

그래서 하나의 챗봇을 만들기 위한 프로젝트의 견적이 500만 원에서 5억 사이로 천차만별입니다. 물론 비싸다고 퀄리티가 더 좋다고 보장할 수는 없지요!


여러 회사에서 “모든 것을 해결해 줄 최고의 챗봇 솔루션!”이라며 너도나도 앞다투어 제품을 출시하고는 있지만 실제로는 엔지니어조차도 플랫폼, 프레임워크, 자연어 처리 (NLP) 기술, 메시징 앱, 코딩 없는 봇 빌더의 경계를 명확히 구분 짓기는 어려운 실정입니다.


어떻게 하면 딱 맞는 개발 스택을 고를 수 있을까요?

혁신의 법칙 (The rules of the innovation game)

봇을 설계할 때, 혁신의 세 가지 핵심 관점을 잊지 마세요. 

당신의 제품은 갖고 싶어야 하고 (desirable), 존속 가능하고 (viable), 실현 가능해야 (feasible) 합니다.

이 세 가지 기준은 기술 스택을 고를 때 기준점이 되어야 합니다: 서비스가 사용자 친화적인 가요? 필요한 기능이 모두 포함되어 있나요? 비용은 얼마나 들어가나요?


어떠한 기술을 선택할 것인가는 챗봇 프로젝트에서 세 번째 단계입니다. 

1. 챗봇 프로젝트의 적절한 사용 예시와 개발 범위를 고객과 협의한다: 가끔 기술적으로 구현이 불가능한 경우도 있고, 그다지 쓸만하지 않은 경우도 있고, 과도하게 비싸기도 하다. 작게 시작해서 스케일업 하는 것을 두려워하면 안 된다.

2. 챗봇의 대화 흐름을 설계한다. (RealtimeBoard나 BotMock을 사용할 수 있다.)

3. 가장 적절한 기술 스택을 선택한다.

4. 애자일 방법론을 이용해서 개발하고, 베타테스터와 함께 실험하면서 봇의 대화 흐름, knowledge base, 봇 퍼스널리티를 개선한다.

5. 스케일 업한다! Analytics와 KPI를 분석해서 성취하고 싶은 목표와 비교한다.


1단계와 2단계에서는 최상의 기술을 선택하는 데 필요한 정보를 모두 모아야 합니다.

    첫째, 고객이 올바른 기술을 선택하는 것의 중요성을 이해하고 있는지 확인해야 합니다.

    둘째, 가장 현명한 선택을 하도록 고객에게 적절한 질문을 해야 합니다.


챗봇 제작에 필요한 기술을 어떻게 설명할 수 있을까요?

사용자는 메시징 플랫폼을 이용해 의사소통하고, 메시지는 자연어 처리(NLP) 기술을 통해 처리됩니다.

봇은 action을 수행하고, database나 API의 실시간 정보를 제공하거나 상담원에게 넘겨줄 수 있습니다.

사용자와 봇의 대화가 많아질수록 봇이 개선됩니다: machine learning. 사람이 개입해서 봇을 개선할 수도 있습니다: supervised learning.

이 설명은 매우 기초적이지만 봇에 대한 주요 개념이나 기술을 비전문가에게 설명하기에 매우 효율적입니다.


챗봇에 대한 10가지 가장 중요한 질문!

다음 10가지 항목은 봇을 제작할 때 어떤 기술들을 사용할지 결정하기 위해 누구든 꼭 짚고 넘어가야 할 내용입니다.

The 10 chatbots questions

1. 메시징 인터페이스 (Messaging interface)

어떤 메시징 플랫폼에 중심을 둘 것인가요? 사용자들은 어디에 있나요? 당신의 서비스를 모든 사람들이 볼 수 있어야 하나요? 아니면 특정한 사람들만 사용하나요? 사용자들은 어떤 디바이스를 이용하나요? (스마트폰, 노트북, 음성 등)

Facebook Messenger, Kik, Telegram, Allo, Line, Viber는 모바일에서 이용하기 좋고, 약 12억 명의 잠재 사용자가 있기 때문에 많은 고객에게 접근하기 좋습니다.

Wechat은 아시아 지역의 주요 플랫폼입니다.

Slack은 스타트업이나 개발자를 타겟으로 할 때 좋습니다. ChatOps 용도일 때 더욱 좋지요! (참고: https://www.atlassian.com/blog/software-teams/what-is-chatops-adoption-guide)

Skype과 Microsoft Teams는 기업에서 많이 사용합니다: 데이터 보안 이슈가 중요한 대기업 직원들을 위한 챗봇 프로젝트에 적합합니다.

Whatsapp은 아직 봇을 허용하고 있지 않지만 소문에는 곧 허용할 것 같다고 합니다.

Twilio는 SMS를 보낼 수 있는 서비스입니다. 스마트폰을 사용하지 않는 사용자가 많거나 플랫폼이 확실하지 않을 때 사용하면 좋습니다.

iMessage는 대부분의 사용자가 아이폰을 쓰는 경우에 사용하면 좋습니다.

웹사이트에 봇을 연동하고 싶다면 web widget이 좋습니다.

트위터 DM이나 트위터에서 트윗을 날리거나 대화를 공개하고 공유할 수 있도록 하는 경우 트위터가 좋겠죠.

메시지가 아닌 목소리를 사용하고 싶다면 Amazon Echo, Google Assistant, MS Cortana를 사용하면 됩니다. (그럼 챗봇이 아니고 보이스 봇이 되겠지요)


2. 봇의 흐름을 시각적으로 설계하기 (Graphical Botflow Building)

4 code-free bot building platforms

챗봇을 자체 제작한다면 원하는 대로 만들 수 있고 유용하지만 코딩이나 복잡한 기술 구성이 필요합니다. 

코딩 없이 챗봇을 만들면 커스터마이징에 제약이 있을 수 있지만 누구나 쉬운 인터페이스를 이용해서 봇을 수정할 수 있습니다. 그런 도구로는 Chatfuel, Converse.ai, Motion.ai, Smartly.ai, FlowXO, Octane.ai, Sequel, Gupshup이 있습니다.

가장 고려해야 할 질문은 개발자가 아닌 사람들이 바로바로 봇을 수정할 수 있어야 하는가?입니다. 봇을 자주 수정해야 하고 비개발직군의 실무자에게 자율성을 주고 싶다면 간단한 그래픽 인터페이스로 봇을 만들 수 있도록 해야겠죠.


3. 원활한 대화 (Fluid Conversations)

봇이 단순한 질문에 답변만 잘 하면 되나요? 혹은 실제 사람처럼 동작해야 하나요? (여러 개의 메시지를 보낸다던지, 옵션을 준다던지)

단순히 Q&A만 처리하는 솔루션은 많습니다. Microsoft의 QnA Maker나 Intercom의 Operator 같은 솔루션을 이용하여 Q&A만 쉽게 처리하고 싶다면 복잡하게 챗봇을 만들 필요는 없습니다.

자주 묻는 질문에 답변하는 기능만을 원한다면, 위의 도구를 활용해서 단 몇 분만에 챗봇을 완성할 수 있습니다!


4. 리치(Rich) & 인터랙티브(Interactive) 콘텐츠

Structures messages used in conversational UX design

봇이 텍스트만 주고받을 수 있어도 괜찮나요? 아니면 이미지나 버튼, quick reply, 리스트, 양식 입력까지 할 수 있어야 할까요?

SMS를 주요 채널로 활용할 경우와 같이 텍스트만을 사용해야 하는 경우도 있습니다.


5. NLP (Natural Language Processing 자연어 처리)

자연어 처리가 정말로 필요합니까? 정말?

챗봇에 대한 이야기를 나누다 보면 정말정말 똑똑한, 실제 사람에 가까운, 인공지능 챗봇이 필요하다는 이야기를 종종 듣습니다.


하지만 대부분의 경우에 단순히 순서도(flowchart)를 따라가는 방식 정도만 필요하고 자연어 처리는 전혀 필요하지 않습니다!


예를 들어, 제품 카탈로그를 보여준다던지 가게 영업시간을 알려주는 챗봇은 자연어 처리 기술이 필요 없습니다. 간단한 버튼이나 quick replies, 또는 좋은 선택지를 통해 만들 수 있겠죠.

The 6 biggest NLP platforms

사용자와 실제 대화를 해야 하는 봇을 만들고 싶다면 자연어 처리는 필수입니다! 위 자연어 처리 플랫폼은 각각 Facebook, IBM, Google, NuanceGroup, Microsoft에서 만들었고, 마지막 Recast는 자연어를 처리하기 위해 collaborative approach를 제안하는 프랑스 스타트업입니다.

개인적으로는 API.AI를 가장 좋아하는데요. 플랫폼에 직접 답을 입력할 수 있고, 간단한 대화를 할 수 있으며 supervised learning이 가능하고 다양한 언어를 지원합니다. 하지만 이건 제 개인적인 의견입니다.


6. 지도 학습 (Supervised Learning)

사람의 개입으로 어떻게 챗봇을 개선할 수 있는지 보여주는 그림

봇의 흐름을 개선하고, 의도를 추가하고, knowledge base를 늘려줄 사람이 없다면 챗봇은 아무 일도 할 수 없습니다. 이것을 지도 학습 (supervised learning) 또는 훈련 (training)이라고 합니다. 대화 중에 바로 할 수도 있고 대화가 끝난 후에 개선할 수도 있습니다.


개선하기 위해서는 세 가지 방법이 있습니다.

Live coaching: 봇의 능력에 대한 확신이 없거나 대화의 의도를 전혀 파악하지 못한다면 사람이 바로 개입해서 의도를 파악하도록 돕습니다.

Daily Training: 매일 담당자가 모든 대화를 들어가 보고 봇이 의도를 맞게 파악했는지 확인하고 교정합니다.

Weekly Improvement: 매주 팀이 모여서 새로 넣을 기능의 우선순위를 매기고 반영합니다. 사용자의 의견을 듣고 사용자의 행동 방식을 관찰하여 개선합니다. 하지만 사용자는 종종 예상하지 못하는 행동을 할 것이기 때문에 그것을 끊임없이 반영합니다.


7. 상담원 연결 (Human Handover)

상담원이 언제나 (봇이 말을 알아듣지 못하거나 사용자가 원할 때) 개입할 수 있는 환경을 갖출 수 있나요? 보통 고객이 가장 만족하는 상담은 자동화 챗봇이 해결해 줄 수 없을 때 상담원이 개입하는 경우입니다.

중간에 상담원이 개입하길 원한다면 알맞은 tech solution을 써야겠죠.

Facebook messenger를 이용하면 page manager에서 대화를 모두 볼 수 있습니다. 그리고 얼마 전에는 상담원 개입 프로토콜 ( protocol for developers)을 추가했다고 합니다.

Intercom의 Operator는 상담원이 개입할 수 있도록 만든 것으로 보입니다.

Chatfuel은 “live chat session” 버튼을 이용해서 원할 때 상담원과 대화할 수 있도록 만들었습니다.

Dashbot은 상담원 개입 기능이 있습니다.


8. API integration

다른 웹서비스들과 연동할 필요가 있다면 여러분이 선택한 서비스가 외부 연동을 지원하는지 확인하세요. 예를 들어 Chatfuel은 Zappier과 연동할 수 있지만 대부분의 WYSIWYG 플랫폼은 다른 웹서비스를 연결할 수 없습니다. 가장 유연한 방법은 REST APIs를 이용해서 스스로 봇 로직을 코딩하는 것입니다.


9. 언어 지원

타겟 사용자에 따라서 언어 지원이 챗봇 사용 기술 스택을 결정하는 데에 매우 중요한 요소가 될 수 있습니다. 대부분의 플랫폼에서 영어는 잘 동작하지만 다른 언어를 모두 포함하지는 않습니다. 어떨 때는 다른 언어가 지원은 되지만 잘 동작하지 않는 경우도 있고요. 이 기사를 보면 결정이 조금 더 수월할지도 모릅니다.


10. 가격

모든 소프트웨어 솔루션의 가격을 고려하고 사용자 증가를 예상해야겠죠. 이 기사에서는 license의 가격을 모두 확인해 볼 수 있어요. 

가장 흔한 과금 체계는:

무료 (with or without watermark)

Freemium (일정 메시지 개수 혹은 사용자 수까지 무료이거나 기능을 더 쓰려면 과금)

메시지 혹은 api request 당 과금

플랫폼의 사용자 수 당 과금

구독


제가 가장 좋아하는 스택

이제 어느 정도의 기술 스택을 고객에게 제안해야 하는지, 가격은 어떻게 책정해야 하는지 감이 좀 오실 거예요 :)

저는 이 정도의 스택을 가장 좋아합니다

자연어 처리와  supervised learning을 위해서는 API.ai가 좋습니다. 가벼운 잡담을 하기 좋고 불어를 쓰기 좋아요. 인터페이스도 좋습니다.

분석을 하거나 상담원이 개입하기 위해서는 Dashbot이 좋습니다. 통계가 자세히 나오고, 연동하기 좋고 transcript가 좋습니다. (분석을 위한 플랫폼에서 벤치마킹하기 좋습니다.)

NodeJS framework로는 Botpress가 좋습니다. 셋업이 빠르고 유연해요.

메시징 인터페이스는 Facebook 메신저가 좋아요. 12억 명의 사용자가 쓰고 있고 대화하기에 좋은 UX입니다.

데이터베이스로는 Airtable이 비개발자도 쉽게 사용하기에 좋습니다.

프로젝트에 따라서 (Spotify, Youtube, Google Maps) 다양한 API를 쓸 수 있습니다.

봇 스택 고민을 시작할 때 더 많은 정보가 필요하시면 http://stack.botsfloor.com/ 를 참고하세요.


성공적인 챗봇 제작을 위한 5가지 체크리스트가 궁금하시다면 https://brunch.co.kr/@hrcloser/4를 참고해 주세요.


CLOSER는 CS에 최적화된 챗봇 플랫폼입니다.  

https://closer.ai/


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari