Google Dialogflow로 대화 제작하고 카카오톡 연동하기
지난 일요일(8/5), 서울창업허브와 비긴메이트에서 공동 주최하여 스타트업 업계에서 사용 중인 대표적인 개발 언어들의 트렌드와 비즈니스 접목 사례 등을 만나볼 수 있는 '개발기술연합세미나'가 열렸다. 아래와 같이 총 다섯개의 트랙(Python, Php, Front-end(Vue.js), Java, C#)으로 진행되었고, 나는 '트랙1 : Python'을 신청하여 세미나를 다녀왔다.
나는 대화형 인터페이스에 관심이 많고, UX 연구를 진행할 때 챗봇을 직접 개발하여 실험자극으로 활용할 수 있을 것이라는 생각에 이번 세미나를 신청했는데, 파이썬 트랙에 생각보다 정말 많은 사람들이 참가하여 놀랐다. 파이썬 트랙에만 200여명이 신청해서 장소를 대강당으로 변경해야 했다고 하니, 파이썬 언어와 챗봇에 대한 관심이 정말 어마어마하다는 것을 느꼈다.
파이썬/장고 교육을 주로 하시는 이진석 강사님께서 약 3시간에 걸쳐 진행해주신 챗봇 개발 강의는 알차고 재미있었다. 모든 과정을 차근차근 쉽게 설명해주셨기 때문에 비전공자인 나도 따라가는 데 큰 어려움을 겪지 않았다. (여러 번의 개발 강의를 들어봤지만 이런 일은 흔치 않다ㅎㅎ) 물론 개발 언어를 이해하거나 코드 자체를 짜는 과정을 배운다기 보다, 전반적인 프로세스에 대한 이해를 돕기 위한 과정이었기 때문일 수도 있지만, 강사님께서 강의자료에 모든 과정을 상세히 캡쳐해 담아주시고 강의 중간중간에 슬랙을 통해 질문을 받아 문제를 해결해주셨기 때문에 가능한 일이었던 것 같다.
강의는 다음과 같은 순서로 진행되었다. 복습도 해볼 겸 짤막하게 배운 내용들을 담아보고자 한다.
1) Google Dialogflow를 이용한 대화 설계
2) 구름IDE를 통한 장고 서버 구축
3) 만들어진 챗봇과 카카오톡 연동
1단계. Google Dialogflow로 대화흐름 설계하기
Google Dialogflow(https://dialogflow.com/)는 Google에서 2016년 인수한 api.ai 챗봇 플랫폼의 핵심 엔진을 Google의 머신러닝 엔진으로 변경하여 강화한 다이어로그 매니징 서비스로, 코드없이 웹에서 챗봇을 구성할 수 있으며 필요하다면 별도 서버와의 연계도 가능하다. 핵심 개념인 'Intent'(의도 분석)과 'Entity'(성분 분석)을 활용하여 거의 모든 대화를 만들어볼 수 있으며, 머신러닝 엔진으로 돌아가기 때문에 몇가지 인풋을 주면 학습하여 응용이 가능하다.(놀라워라!)
예전에 다른 챗봇 구축 플랫폼 'Chatfuel'(https://chatfuel.com/)을 활용하여 페이스북 챗봇을 만들어본적이 있는데, 구조는 비슷하지만 좀더 이용하기 쉽고 자동화되어있는 느낌이었다.(느낌적인 느낌인가..) '내일 3시에 예약되나요?'라는 질문을 입력했을 때 '내일'과 '3시'의 성분을 날짜와 시간이라고 자동 지정해주고, '금요일 정오에 예약되나요?'와 같은 구조가 유사한 질문은 굳이 입력해두지 않아도 앞서 입력된 성분을 학습하여 자동으로 인식하는 식이다.
Google Dialogflow 서비스를 이용하기 위해서는 Google ID를 통해 Dialogflow 사이트에 가입하고, Google Cloud Platform 역시 가입해 무료평가판을 얻으면 된다. 세미나에서는 간단한 실습을 위해 텍스트 메시지만 지원하는 Dialogflow Ver1을 활용했는데 Ver2에서는 오디오 메시지도 지원된다고 한다. Ver2로는 스피커 형식으로도 챗봇을 개발해볼 수 있을 것 같아 다음에 한번 활용해보려고 한다.
위의 DialogFlow의 챗봇 제작화면을 보면 인터페이스가 누구나 이해할 수 있게 설계되어있음을 알 수 있다. [1]에서 Intents(의도)를 만들고 (이 화면에서는 'bike-reservation-new') [2]에서 질문을 입력해 학습을 시킨다. [2]에 입력된 질문을 토대로 자동으로 [3]의 파라미터가 형성될 수 있고 수동으로 Entity(성분)을 입력할 수도 있다. [4]에서 Agent(챗봇)의 응답내용을 적는데, 화면에서 보이는 것처럼 Entity값을 넣어 질문에 따라 응답이 달라지도록 할 수 있다. 만약 필수 답변되어야 하는 Entity가 있다면 [5] Prompts에 필수 입력값을 유도하는 질문을 추가하면 된다. 마지막으로 [6]에서 직접 질문을 입력하면서 바로바로 테스트해볼 수 있다. (넘나 쉽고 간단한것! 역시 구글입니다)
2단계. 구름IDE를 통한 장고 서버 구축
외부 서버가 있으면 크롤링 등을 활용해 정보를 더 풍부하게 제공할 수 있다는 이점이 있다. 시간 관계상 이번 강의에서는 크롤링까지 진행하지는 않았지만, 네이버 주식 시세를 크롤링하여 챗봇을 통해 제공하는 등 보다 복잡하고 전문적인 정보도 챗봇으로 구축해볼 수 있다. 강의에서는 웹브라우저에서 사용할 수 있는 개발환경을 제공하는 '구름IDE'(https://ide.goorm.io/) 서비스를 통해 서버를 구축하였다. 별도의 서버세팅, 배포 과정 없이 코드를 구동시킬 수 있어 공수를 줄일 수 있지만, 실제 서비스 배포를 위한 것이라기보다 개발 목적으로 활용되다고 한다.
우선 구름IDE에 가입하여 프로젝트 컨테이너를 만들고, 아래와 같이 필요한 환경설정을 진행했다. (제작한 Dialogflow의 Client/Developer Access Token 및 Web Demo URL 적용)
이후 명령어를 입력해 프로젝트 초기화 작업을 수행하고, 서버 주소를 찾아 웹으로 띄우니 우리가 만들었던 챗봇 화면이 짜잔! 하고 나타났다. (이런게 참 비전공자에게 신기한 광경?이다)
3단계. 만들어진 챗봇과 카카오톡 연동
구름IDE 서버는 강사님이 올려주신 샘플 프로젝트 소스코드(https://github.com/allieus/demo-20180805-startup-dev.git)를 기반으로 만들어졌는데, 이 프로젝트에는 이미 카카오톡 연동 기능이 구현되어있다. Google Dialogflow는 Integration(통합) 기능을 통해 다양한 메신저(Facebook, Slack, Twitter, Line..)와의 연동이 가능한데 카카오톡과는 연동이 되지 않기 때문에 별도의 서버를 이용하여 연동을 하는 것이다. 카카오톡 연동은 플러스친구(https://center-pf.kakao.com/)에서 스마트채팅 기능을 통해 가능하다. 우선 플러스친구를 개설하고, API형을 선택해 서버 주소를 입력하면 끝이다. (간단간단..)
이렇게 해서 챗봇 개발 강의가 모두 마무리되었다. 강사님께서 친절하게 하나하나 설명해주신 덕에 자신감을 얻어 이런 챗봇, 저런 챗봇 만들어봐야지 하는 여러가지 아이디어가 떠오른다. 다음에는 아이디어를 직접 챗봇으로 구현해보며 배운 점들을 정리해보아야 겠다. 끗~
[참고]
이진석 강사님께서 운영하시는 사이트 정보
- 파이썬/장고 Q&A 서비스 : https://www.facebook.com/groups/askdjango
- 파이썬/장고 교육 VOD 서비스 : https://www.askcompany.kr