SlideShare a Scribd company logo
Chatbot 기초 개념에 대한 이해 및
IBM Watson Assistant 기반
Chatbot 만들기
2019.11.18
작성자: 정교윤
1
목차
• Chatbot 의 정의 및 사용 목적
• Chatbot 의 활용 용도
• Chatbot 의 종류 및 예시
• Chatbot 개발 프로세스
• Chatbot 개발 및 서비스 배포 실습 (Hands-On)
2
Chatbot 의 정의 및
사용 목적
3
Chatbot (챗봇) 이란?
• 옥스포드 사전의 정의에 따르면, Chatbot
은 아래의 한 문장으로 표현된다.
• “A computer program designed to
simulate conversation with human users,
especially over the Internet.”
• 좀 더 구체적으로 말하자면, Chatbot 은 웹
사이트, 어플리케이션 혹은 인스턴스 메신
저 (카카오톡, 페이스북, 텔레그램 등)과 연
동된 가상 친구로서 텍스트 메시지를 통해
우리와 소통하는 비서이자 사업가들이 고객
들과 더 가깝게 소통할 수 있도록 도와주는
통로로서의 역할을 수행한다.
• 이러한 Chatbot은 사용자들과 소통을 위한
자동화된 시스템이라고 정의할 수 있다.
4
Chatbot 의 역사
5
출처: https://www.altexsoft.com/blog/business/a-comprehensive-guide-to-chatbots-best-practices-for-building-conversational-interfaces/
ELIZA - 독일계 미국인 컴퓨터 공학자이자
MIT 공대 교수였던 Joseph Weizenbaum 에
의해 개발된 컴퓨터 프로그램으로, 심리치료사
와의 대화를 흉내내며 몇 가지 주요 단어들과 패
턴을 인식하여 그에 맞게 대답할 수 있는 세계
최초의 챗봇
Watson - 원래 의미는 미국 뉴욕주 요크타운에 위치한
Thomas J. Watson Research Center 에 있는 슈퍼컴퓨터라
고 볼 수도 있지만, 소프트웨적인 측면에서는 자연어 기반의 질
의응답을 할 수 있는 인공지능 시스템을 의미하며, 이시스템은
2006년에 Principal Investigator로 IBM에 재직했던 David
Ferrucci 가 주도한 DeepQA project의 결과물로 탄생함
Siri - 스티브 잡스가 생전에 마지막으로 참여하고 기획했
던 iPhone 4s 에 탑재된 인공지능 기반 음성 챗봇으로
서 원래 이 챗봇의 음성인식엔진은 미 국방성 산하 연구
개발 조직인 방위고등연구계획국(DARPA) 의 자금지원
으로 진행된 CALO project 의 결과물이었으나 스티브
잡스의 지시로 Siri를 2010년에 애플이 완전히 인수하면
서 비공개 소프트웨어로 전환되었고 아이폰, 아이패드 및
맥용 머신에만 탑재되어 있음
Chatbot 이 왜 필요한가?
• Chatbot 을 활용하면 비즈니스에는 도움이 별로 되지 않
으면서 반복적으로 시간을 소모해야 하는 대면 업무와 고
객이 요청하는 수많은 요구사항들을 실시간으로 처리할
수 있으므로 비용절감효과가 발생한다.
• 뿐만 아니라 Chatbot 이 엄청난 속도로 고객의 요청사항
을 처리하는 것을 경험한 소비자들은 해당 기업에 대해
더욱 더 강한 신뢰를 보내며 해당 기업의 브랜드와 제품
에 대해 강한 충성도를 보여주므로 도입할 만한 가치가
있다.
6
고객은 왜 Chatbot 을
선택하는가?
• 2017년 11월에 열린 제4회 인터넷 과학 국제 컨퍼런스에
서 공개된 연구 보고서에 사람들이 Chatbot 과 소통하
길 선택하는지에 대해 몇 가지 이유가 명시되어 있다.
이 연구조사에 따르면, 사람들이 Chatbot을 사용하도록
동기부여하는 몇 가지 요인은 아래와 같다.
• 생산성 측면 - Chatbot은 정보에 빠르고 효율적으로 접
근할 수 있도록 도와준다.
• 엔터테인먼트 측면 - Chatbot은 고객들에게 재밌는 팁
을 제공해서 사람들을 웃게 하거나 고객들이 할 일이 없
을 때 심심하지 않게 도와준다.
• 소셜 및 관계 측면 - Chatbot은 고객들이 외로움을 피
할 수 있도록 도와주며 타인의 시선에 대해 신경쓰지 않
고 대화할 수 있고 대화 기술을 개선할 수 있도록 도와준
다.
• 호기심 측면 - Chatbot 으로 인해 고객의 호기심이 증폭
된다. 즉, 고객들은 Chatbot의 기능에 대해 자세히 알아
보고 싶어하며 새로운 것을 시도해보고 싶어한다.
7
Chatbot 의 활용 용도
8
–Christina Milian
“I think chatbots are the future of engagement
between a fan and a brand or celebrity.”
9
Chatbot은 어떻게
비즈니스에서 활용되는가?
고객 서비스 개선
쇼핑 프로세스 단순화
개인화된 소통방식
고객의 응답률 개선
반복된 업무 자동화
10
1. 상담원 응답을 기다릴 필요가 없음
2. FAQ 사이트에서 답변 검색할 필요 없음
고객이 Chatbot에게 사고자 하는 물건 정보만 전달하면
Chatbot이 자동으로 판매부서에 전달하여 재고가 있는지 확
인하여 전달하므로 불필요한 소통 제거 효과 발생
Chatbot은 많은 양의 긴 정보를 보여주는 대신 고객의 경험
에 기초하여 간결하게 구체적인 답변만 보여주므로 고객이
Chatbot 과 대화에 집중할 수록 고객은 구매 욕구가 상승한
다.
페이스북 페이지에서 고객에게 물어보는 질문은 90% 가
까이 답변이 되지 않는 상태로 남아있는 반면, Chatbot이 제
시한 질문에 대해서는 고객이 100% 답변을 하므로 더 많은
방문자가 고객이 될 가능성이 높아진다.
상당수 고객이 사는 곳, 직장, 배송 여부와 같은 반복된 질문
을 듣고 답변을 하고 있는데 Chatbot을 쓰면 이러한 소통을
대신 해주므로 노동자의 업무부담을 줄일 수 있다.
Chatbot 의 종류 및 예시
11
어떤 종류의 Chatbot이 있는가?
• Chatbot 이 고객이 자주 묻는 질문에 대한 답변자뿐만 아니라 기업의 제품에 대해 구매의도가 있는 고
객들의 니즈를 발굴할 수 있는 도구 (Lead Generation)로서 비즈니스의 다양한 영역의 업무를 할 수
있게 되면서 Chatbot은 사용 범위가 점점 확장되고 있다. 여러 케이스가 존재하지만 대표적으로
Chatbot은 크게 5가지 종류로 분류할 수 있다.
• FAQ assistants - 고객이 기업에 대해 많이 하는 간단한 질문에 대해 친절하게 답변해주는 역할
• Navigation Bots - 고객이 원하는 정보가 담긴 블로그나 지도 등을 보여줘서 검색 스트레스를 줄여줌
• Lead generation and retention bots - 특정 쇼핑몰에 방문했을 때 고객의 구매의도 및 취향을 파악
해서 고객에게 맞는 맞춤형 상품을 추천하고 재구매를 하게 해주는 역할
• Transaction bots - 예를 들면 Chatbot이 사람 대신 고객으로부터 주문을 받아 정보를 사람에게 전달
하여 직접 고객에게 배송할 수 있도록 도와주는 역할
• Internal assistant chatbots - 회사 내의 직원들이 관리부서 직원에게 각종 질문 및 서비스를 요청하
는 경우가 많은데 관리부서 직원 대신 Chatbot이 업무를 처리해주는 역할 (예: 휴가 및 경조사 규정등
을 알려주는 업무 혹은 비용 처리 업무 대행)
12
챗봇 예시 - 숙박업
• Hotel Search Chatbot Demo - GoHero.AI
• 출처: https://www.youtube.com/watch?v=7LWY8rwpTnI
13
챗봇 예시 - 식음료 업계
• Table booking chatbot - ADEO WEB
• 출처: https://www.youtube.com/watch?v=Y84M_7AiJto
14
챗봇 예시 - 헬스케어 업계
• Healthcare Chatbot Demo - Avaya Messaging Automation
• 출처: https://www.youtube.com/watch?v=nvOJQ4JttP0
15
챗봇 예시 - 소매 및 패션 업계
• Retailer & Brand Chatbot offers to consumers powered by AI - TrendBrew
• 출처: https://www.youtube.com/watch?v=74JEJlpX9w4
16
챗봇 예시 - Google Duplex
• Google Duplex A.I. - How Does it Work? - ColdFusion
• 출처: https://www.youtube.com/watch?v=IuIpgArEZig
17
Chatbot 개발 프로세스
18
Chatbot 개발 프로세스
목적 정의
고객과 소통할
플랫폼 선택
개발 방식 선택 개발, 맞춤화 및 배포
Chatbot이 반드시 수행
해야 하는 기능 정의 및 목
록 생성
Chatbot이 동작하는
Channel 을 선택
(예: 자사 웹사이트,
Facebook,
Telegram)
Chatbot의 동작 기반인
Bot Engine을 자체 개발할 것
인지 검증된 기업의 Builder
Platform을 써서
개발할 것인지 선택
Chatbot의 동작 알고리
즘 정리 및 답변에 대한 데이
터베이스 구축 및 유닛 테스
트 및 사용자 테스트 수행
19
Chatbot 시스템 내부 구조
20
출처: https://wiprodigital.com/2019/07/11/conversational-ai-and-chatbots-the-new-digital-frontier/
Channels Bot Engine Enterprise System
Channels
21
Bot Engine
22
출처: https://chatbotslife.com/ultimate-guide-to-leveraging-nlp-machine-learning-for-you-chatbot-531ff2dd870c
Enterprise System
23
출처: https://www.sileron.com/en/sap-s4hana-cloud-erp/
Chatbot 개발 비용 구조 예시
24
출처: https://www.cleveroad.com/blog/how-to-create-a-chatbot-for-business--step-by-step-guide-with-an-estimation
Chatbot 대화 수준 정의
25
출처: https://chatbotslife.com/ultimate-guide-to-leveraging-nlp-machine-learning-for-you-chatbot-531ff2dd870c
Chatbot 관련 기본 용어
• Intents: to convey purpose or goal
• Entities: make logical decisions based on user input
• Dialogs: design a conversation
• Slots: collect important information to fulfill an
intent
• Digressions and Handlers: handle unexpected
conversations.
26
Chatbot 개발 및 서비스 배
포 실습 (Hands-On)
27
전체 실습 프로세스
IBM Cloud 에 로그온
IBM Watson Assistant 활성화
및 다이얼로그 완성
IBM Cloud Functions 의 Action
생성 및 코딩
IBM Watson Assistant의 다이얼
로그와 Action을 연결
IBM Node-Red에서
Telegram과 연결
Telegram 에서 Chatbot 동작
확인
28
강의 관련 GitHub Repository
29
https://github.com/KyoYoon/ibm_watson_chatbot_lecture_basic
실습에 들어가기 전에..
• Chrome 브라우저 설치
• Gmail 계정 생성 및 Google Colab 접속
• Telegram 다운로드 및 설치 후 Bot 생성
• Open API 신청
• IBM 계정 생성
• IBM Cloud 접속 후 활성화
30
Chrome Browser 설치
31
Gmail 계정 생성
32
Google Colab 접속 (1)
33
Google Colab 접속 (2)
34
Telegram 다운로드 후 설치
35
Telegram 가입 후 로그인
36
Telegram Bot 만들기 (1)
1.
@BotFather
입력 후 검색
2. 최상단에 뜬
BotFather
선택
37
Telegram Bot 만들기 (2)
3. /newbot 이
라고 입력 후
엔터
38
Telegram Bot 만들기 (3)
4. name 을
watson_chat_<your_name>_bot
으로 입력 후 엔터
5. username 을
watson_chat_<your_name>_b
ot 으로 입력 후 엔터
6. Token 을 복사해서 따
로 저장 (매우 중요!)
39
Telegram Bot 만들기 (4)
7.
@watson_chat_<your_name>_bot
입력 후 검색한 후 결과에 나오는 Bot
선택
40
공공 인공지능 오픈 API DATA
서비스 포털에서 대화처리 API 신청 (1)
41
공공 인공지능 오픈 API DATA
서비스 포털에서 대화처리 API 신청 (2)
42
공공 인공지능 오픈 API DATA
서비스 포털에서 대화처리 API 신청 (3)
43
공공 인공지능 오픈 API DATA
서비스 포털에서 대화처리 API 신청 (4)
44
공공 인공지능 오픈 API DATA
서비스 포털에서 대화처리 API 신청 (5)
45
공공 인공지능 오픈 API DATA
서비스 포털에서 대화처리 API 신청 (6)
왼쪽과 같이 관리자로부터 메일이
오면 양식을 그대로 복사해서 붙여
넣기 후 관련 내용 기입해서 답장
을 보내면 관리자가 확인 키 발급
을 진행하게 됨
46
공공 인공지능 오픈 API DATA
서비스 포털에서 대화처리 API 신청 (7)
47
IBM 계정 생성 (1)
48
https://www.ibm.com/kr-ko
IBM 계정 생성 (2)
49
IBM 계정 생성 (3)
50
IBM 계정 생성 (4)
51
IBM 계정 생성 (5)
52
IBM 계정 생성 (6)
53
IBM 계정 생성 (7)
54
IBM Cloud 로그인 및 활성화
1.공공장소에서 동일한 네트워크에 여러 명이 접
속한 뒤에 처음 IBM Cloud 접속 후 활성화를
진행하면 IBM에서 활성화를 차단하므로 먼저
본인 스마트폰과 테터링을 먼저 해야 됨
-> 집에서 혼자 이 작업을 진행할 때는 필요없음
55
https://cloud.ibm.com/
IBM Cloud 로그인 및 활성화
56
https://cloud.ibm.com/
IBM Cloud 로그인 및 활성화
57
IBM Cloud 로그인 및 활성화
58
IBM Cloud 로그인 및 활성화
59
IBM Cloud 로그인 및 활성화
60
IBM Cloud 로그인 및 활성화
61
IBM Cloud 로그인 및 활성화
62
IBM Cloud 리소스 목록 (초기)
63
IBM Cloud 리소스 목록 (최종)
64
IBM Watson Assistant 활성화
65
IBM Watson Assistant 활성화
66
IBM Watson Assistant 활성화
67
IBM Watson Assistant 활성화
68
IBM Watson Assistant 활성화
69
IBM Watson Assistant 활성화
70
IBM Watson Assistant
하부 구성요소
71
IBM Watson
Assistant
IBM Cloud
Assistant #1 Assistant #2
Skill 1 Skill 2 Skill 1 Skill 2
Intent #1 ~ n
Entity @1 ~ n
Dialog
Intent #1 ~ n
Entity @1 ~ n
Dialog
Intent #1 ~ n
Entity @1 ~ n
Dialog
Intent #1 ~ n
Entity @1 ~ n
Dialog
실습 #1
72
레스토랑 예약 챗봇 (영어)
73
레스토랑
영업시간 문의
레스토랑
위치 문의
이 레스토랑은
본점과 분점 총
2개의 매장이
있다고 가정하고
챗봇이 질문
레스토랑 예약 챗봇 (영어)
74
레스토랑
테이블 예약 문의
챗봇이
레스토랑
위치, 시간,
총 인원 정보
요청
#1 레스토랑 위치
답변함
챗봇이
예약 날짜에 관해
질문
#2 “내일”이라고
답변함
챗봇이
예약 시간에 관해
질문
#3 “저녁7시”
라고 답변함
챗봇이
예약 인원에 관해
질문
#4 “3명”이
라고 답변함
챗봇이
최종 예약
확인 통보
Skill 만들기 -
Restaurant Booking App
75
Skill 만들기 -
Restaurant Booking App
76
Intent 만들기 -
#hours_of_operation
77
Intent 만들기 -
#hours_of_operation
78
User examples
what time do you open
when are the hours
when can I come in
when do you close
when is the store available
Intent 만들기 -
#hours_of_operation
79
Intent 만들기 -
#hours_of_operation
80
Intent 만들기 -
#book_table
81
Intent 만들기 -
#book_table
82
User examples
Can I book a table for 4 people, at 7pm?
can i book a table?
Can I reserve a table for 10 people at 8pm?
can I reserve a table?
I'd like to book a table
I'd like to book a table for 3 people, at 10am
I'd like to reserve a table
I'd like to reserve a table for 7 people, at 6pm
Intent 만들기 -
#book_table
83
Intent 만들기 -
#locations
84
Intent 만들기 -
#locations
85
User examples
can you tell me where it is?
can you tell me where the restaurant is?
how can i get there?
please, let me know the address of the restaurant
please, let me know the location of the restaurant
please, tell me the address of the restaurant
please, tell me the location of the restaurant
plz, let me know the address of it
Where is the store at
Intent 만들기 -
#locations
86
User examples
plz, let me know the location
plz, let me know the location of it
plz, tell me the address
plz, tell me the address of it
plz, tell me the location of it
what's the address of the restaurant?
where is the restaurant
where is the restaurant located?
where is it
Intent 만들기 -
#locations
87
완성된 Intent
88
Entity 만들기 -
@locations
89
Entity 만들기 -
@locations
90
Entity 만들기 -
@locations
91
Entity 만들기 -
System Entity
92
Dialog 만들기 전에…
93
출처: https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-overview#dialog-overview-variety
Dialog 만들기 (초기 화면)
94
Dialog 만들기 -
“Welcome” Node
95
Dialog 만들기 -
“Hours of Operation” Node
96
Dialog 만들기 -
“Hours of Operation” Node
97
#3
그냥 사용자가 다음 질문을
할 때까지 기다리는 옵션으
로 설정
#1
사용자가 해당 Intent 에
부합하는 질문을 할 때만 챗봇
이 동작하도록 정의
#2
사용자의 질문에 챗봇이
대답할 답변 정의
#4
이 노드의 이름 정의
Dialog 만들기 -
“Hours of Operation” Node
98
사용자가 챗봇에게 던진 질문
챗봇이 사용자의 질문에 답변함
챗봇이 사용자의 질문의 intent를
#hours_of_operation 으로
파악함
Dialog 만들기 -
“Locations” Node
99
#1
사용자가 해당 Intent 에
부합하는 질문을 할 때만 챗봇
이 동작하도록 정의
#2
이 레스토랑은 같은 상호로 2개가 있으므로
이 Intent에 대해 챗봇이 다르게
반응하도록 하기 위해 Customize를
클릭해서 설정을 변경해야 함
Dialog 만들기 -
“Locations” Node
100
Dialog 만들기 -
“Locations” Node
101
Dialog 만들기 -
“Locations” Node
102
Dialog 만들기 -
“Locations” Node
103
Dialog 만들기 -
“Locations” Node
104
Dialog 만들기 -
“Locations” Node
105
Dialog 만들기 -
“Locations” Node
106
Dialog 만들기 -
“Locations” Node
107
Dialog 만들기 -
“Locations” Node
108
Dialog 만들기 -
“Book Table” Node
109
Dialog 만들기 -
“Book Table” Node
110
Dialog 만들기 -
“Book Table” Node
111
Dialog 만들기 -
“Book Table” Node
112
CHECK FOR SAVE IT AS
IF NOT
PRESENT, ASK
TYPE
@locations $locations Which store did you want
to go to? First or Main? Required
@sys-date $date What day do want to
come in? Required
@sys-time $time What time did you want
to arrive? Required
@sys-number $number How many people in your
party? Required
Dialog 만들기 -
“Book Table” Node
113
Dialog 만들기 -
“Book Table” Node
114
Dialog 만들기 -
“Book Table” Node
115
Dialog 테스트 -
“Book Table” Node
116
Dialog 테스트 -
“Book Table” Node
117
Dialog 테스트 -
“Book Table” Node
118
사용자는 예약을 끝내서 식사를 잘 했고 약 2주가 지난 후 다시 이 레스토랑에서 식사를 하기로 해서
챗봇에게 “Can I book a room?”라고 말했는데 이전 예약 정보가 그대로 남아서
예약이 되었다는 황당한 메시지를 받게 된다.
이 문제를 어떻게 수정해야 할까?
Dialog 수정 -
“Book Table” node
119
테이블 예약이 끝나면 고객이 챗봇과 대화를 할 이유가 없어지므로 일단 대화가 처음부터 다시 시작되어야 한다.
아래와 같이 “The assistant should” 부분에서 아래 옵션을 “Jump to”로 바꿔준 후 테이블 예약 관련 노드에서
Welcome 노드로 이동하도록 마우스를 클릭한 후 옵션을 Respond로 주면 된다.
Dialog 수정 -
“Welcome” Node
120
그 다음은 대화가 끝나고 난 후 대화를 재시작할 때 기존에 저장되어 있는 Context Variable을 어떻게
초기화할 수 있을지 방법에 대해 생각해보아야 한다.
대화의 시작은 Welcome Node 이므로 Welcome Node 가 실행될 때 기존에 있던 Context Variable을
초기화해주는 것이 해결책이다.
아래와 같이 오른쪽 마우스 클릭 후 Open JSON Editor를 클릭해서 context variable들을 초기화하는
셋팅을 넣을 준비를 한다.
Dialog 수정 -
“Welcome” Node
121
{
“output":{ … },
"context": {
"locations": null,
"time": null,
"date": null,
"number": null }
}
아래와 같이 JSON Editor에서 빨간 색으로 된 부분을 추가하여 Context Variable 들의 값들을 전부 null 로
셋팅한다.
이렇게 되면 기존 데이터는 다 사라지고 완전히 처음 상태로 돌아가서 대화를 시작할 수 있게 된다.
Context variable
초기화
Dialog 수정 -
“Welcome” Node
122
대화가 재시작될 때 아래와 같이 기존에 값이 저장된 Context Variable의 값이 전부 null 로 바뀌게 된다.
Dialog 테스트 -
“Book Table” Node
123
수정을 다 한 후 다시 테스트를 하게 되면 아래와 같이 대화가 재시작될 때 기존에 저장된 정보들은 다 사라졌으므로
예약 관련 질문을 해서 필수 정보가 언급이 되어 있지 않으면 챗봇이 다시 정보를 달라고 요청하게 된다.
Dialog 수정 -
“Welcome” Node
124
이제, Intent, Entity, Dialog 전부 완성하였고 테스트를 완료하였으니 Node-Red를 통해 텔레그램 메신저에
배포할 차례이다. 그 전에 Welcome 노드를 수정해야 하는데 그 이유는 텔레그램은 대화가 시작과 동시에
“/start”라는 문자를 전송하는데 이를 Watson Assistant 가 인지를 못한다.
따라서, 이와 관련된 Entity를 하나 만들고 이 Entity를 Welcome Node 에 적용해보도록 하자.
Dialog 수정 -
“Welcome” Node
125
아래와 같이 telegram_start 라는 이름으로 Entity를 하나 만들고 추가할 값으로 /start 를 넣고 저장한다.
Dialog 수정 -
“Welcome” Node
126
아래와 같이 @telegram_start 를 Welcome Node의 “If assistant recognizes” 부분에
or 조건으로 연결해서 저장한다.
Node-Red 란 무엇인가?
127
IBM Cloud 안에서 만든 모든 어플리케이션들을 사용자가 사용하는 플랫폼 혹은 하드웨어에
배포를 해서 실사용자들이 쉽게 해당 어플리케이션들을 쓸 수 있도록 해주는 프로그래밍 툴
https://nodered.org/
IBM Node-Red Starter Kit 설치
128
IBM Node-Red Starter Kit 설치
129
IBM Node-Red Starter Kit 설치
130
IBM Node-Red Starter Kit 설치
131
IBM Node-Red Starter Kit 설치
132
IBM Node-Red Starter Kit 설치
133
IBM Node-Red Starter Kit 설치
134
IBM Node-Red Starter Kit 설치
135
IBM Node-Red Starter Kit 설치
136
IBM Node-Red Starter Kit 설치
137
IBM Node-Red Starter Kit 설치
138
IBM Node-Red Starter Kit 설치
139
IBM Node-Red 로그인
140
Node-Red 로그인
Node-Red: an open source logic engine that allows programmers of any level to easily write code
that can connect to APIs, hardware, IoT devices or online services
141
Node-Red 로그인
142
IBM Node-Red 에
Telegram connector 설치
143
IBM Node-Red 에
Telegram connector 설치
144
IBM Node-Red 에
Telegram connector 설치완료
145
Chat Flow 만들기
146
Chat Flow 만들기
147
Chat Flow 만들기
148
Chat Flow 만들기
149
1st function - Prepare for Conversation
<Source Code>
msg.chatId = msg.payload.chatId;
msg.payload = msg.payload.content;
return msg;
Chat Flow 만들기
150
2nd function - Prepare for Telegram
<Source Code>
msg.payload = {
chatId : msg.chatId,
type : "message",
content : msg.payload.output.text[0]
};
return msg;
Chat Flow 배포
151
IBM Node-Red Flow (완성)
152
Telegram 에서 작동 확인
153
IBM Cloud 리소스 목록 확인
154
실습 #2
155
위키 QnA 챗봇 (한국어)
156
서울의 면적이 얼마야?
605.2 km
나폴레옹이 누구야?
나폴레옹 3세 또는 샤를 루이
나폴레옹 보나파르트(프랑스
어: Charles …
위키 QnA 챗봇 개발하기 전에..
• 앞서 이전 슬라이드에서 소개한 대로 공공 인공지능 오픈 API DATA 서비스 포털에서 신청한 API Key
가 본인 메일로 전달되었는지 확인
• 공공 인공지능 오픈 API DATA 서비스 포털에서 API 사용 관련 파이선 소스코드 확인 후 이해 (대화처
리 API를 사용할 예정임)
• Google Colab(구글 코랩)으로 접속한 후 주피터 노트북 파일 생성 후 상기 포털에 나온 파이선 소스코
드를 붙여넣고 수정 후 해당 API의 사용법 및 동작 원리와 실행 결과가 무엇인지 확인 (Gmail 계정이
필요하며, 소스코드를 보면서 JSON 형식으로 된 문자열에서 원하는 결과값과 관련된 Key에 접근하여
Value를 추출 후 챗봇이 사용자에게 전달할 답변을 생성하는 프로세스를 이해할 수 있어야 함)
• Cloud(클라우드)가 무엇인지 왜 쓰는 것인지에 대한 간단한 이해 (글로벌 IT 기업들이 내세우는 자사
클라우드의 핵심 기능 중 하나인 Auto Scailing 이 무엇인지 간략히 이해할 필요가 있음)
• Web Hook 및 Serverless Function 개념에 대한 이해 (챗봇이 사용자의 질문에 답변을 할 때 Watson
Assistant에 설정한 답변 외에 외부 데이터를 가져와서 답변을 하기 위해서는, IBM 클라우드 안에서
Serverless Function에 속하는 Action을 생성 후 해당 Action안에 해당 데이터를 가져오는 소스코드
작성 후 해당 Action의 URL을 Watson Assistant 내에 있는 해당 Skill 에 Web Hook으로 설정해주는
작업이 필수적으로 요구됨)
157
본인 메일에서 API Key 확인
158
대화 처리 오픈 API 키 사용 예제
확인 (Python Code)
159
Google Colab 에서
해당 Python Code 코딩 후 실행
160
Google Colab 에서
해당 Python Code 결과 확인
161
대화처리 API 실행 후 반환결과
(JSON 형식) 분석 - 답변 추출 성공
162
질문: “나폴레옹은 누구야?”
대화처리 API 실행 후 반환결과
(JSON 형식) 분석 - 답변 없음
163
질문: “abvfdddd”
대화처리 API 실행 후 반환결과
(JSON 형식) 분석 - 정의 불가
164
질문: “#@!!! ㅌㅌㅌㅌ”
대화처리 API 실행 후 반환결과
(JSON 형식) 분석 - 색다른 답변
165
질문: “나는 누구야?”
Google Colab에서 절차식으로 작성된 현재 코드
를 OOP 개념에 맞게 Class로 재작성 및 테스트 (1)
166
Google Colab에서 절차식으로 작성된 현재 코드
를 OOP 개념에 맞게 Class로 재작성 및 테스트 (2)
167
Cloud 의 정의
168
Cloud는 하드웨어, 개발 플랫폼 혹은 서비스와 같은 가상화된 리소스를 쉽게 사용하고 접근할 수 있도록 설계된
거대한 리소스 풀을 의미하며, 기존 물리 서버와 달리 인터넷 트래픽 증감에 따라 리소스의 규모를 줄이거나 늘릴 수
있도록 하는 기능이 포함된다.
Cloud 서비스 제공 기업은 고객에게 전기처럼 IT 인프라, 플랫폼 및 소프트웨어를 제한된 기간과 시간 내에 사용할 수
있고 그에 맞게 요금을 낼 수 있도록 하는 구독형 서비스를 제공한다.
Cloud를 사용하면서 고객이 지불하는 요금에는 Cloud 서비스 제공 기업이 따로 전 세계의 소프트웨어 벤더,
하드웨어 벤더들과 별도로 소프트웨어 라이선스 계약을 맺은 비용이 함께 포함되어 있어서 사용자가 라이선스에 대해
신경쓰지 않고 서버, OS, Software들을 사용할 수 있다.
출처: http://ccr.sigcomm.org/online/files/p50-v39n1l-vaqueroA.pdf
Cloud 의 종류
169
출처: https://www.journaldev.com/25061/cloud-computing
Cloud 의 핵심 기능
(Auto Scaling)
170
Cloud에서 Scaling의 의미는 Cloud 내의 가용한 리소스의 성능을 늘렸다가 줄였다가 하는 것을 의미한다.
Cloud와 달리 일반적인 물리 서버에서는 이러한 동작을 사람이 직접 물리적으로 설정을 해서 성능을 높였다면,
글로벌 IT 기업이 운영하는 Cloud 에서는 자체 개발한 내부 소프트웨어로 리소스를 모니터링해서 자동으로
리소스의 성능을 줄였다가 높였다가 할 수 있는 서비스를 제공한다.
이 자동화된 서비스를 Auto Scaling이라고 한다.
Cloud 내부의 소프트웨어
가 내/외부 트래픽의 증감을
모니터링하여 자동으로
Scaling을 해줌
(Auto Scaling)
출처: https://www.nitrix-reloaded.com/2016/10/01/scalability-scale-outin-vs-scale-updown-horizontal-scaling-vs-vertical-scaling/
Web Hook & Serverless
Function in Chatbot
171
Webhook은 서버에서 어떠한 작업이 수행 되었을 때 해당 작업이 수행되었음을 HTTP POST로 알리는 개념이며,
Webhook을 구현한 웹 애플리케이션은, 특정 작업이 수행될 때 URL에 대해 POST방식으로 요청을 생성한다.
챗봇 개발시에 대화 중간에 챗봇이 외부에서 데이터를 부르기 위해서는 Webhook을 구현한 어플리케이션을 URL로
호출할 수 있어야 하며 현재 IBM Cloud 에는 Skill 에서 Webhook URL을 정의할 수 있고 Node 별로 Webhook을
활성화시켜 Webhook을 통해 외부 데이터를 호출해서 대화창에 보여줄 수 있도록 하고 있다.
Serverless Function 은 쉽게 설명하자면 서버를 거치지 않고 Function을 호출할 수 있는 아키텍쳐 내에서 설계된
Function을 말하며 이 서비스를 사용하는 개발자는 서버를 소유하지 않고 Function만 호출할 수 있으므로 비용이 절
약되고 복잡한 로직을 처리하는 기능이 아니라 주기적으로 호출하거나 특정 이벤트 시에만 호출하는 기능을 쉽게
구현할 수 있어서 많이 애용되고 있다.
IBM Cloud 에서는 IBM Cloud Function 이라는 서비스가 Serverless Function을 지원하는 서비스인데 챗봇 실행
중에 챗봇이 외부 데이터를 가져오려면 개발자가 파이썬 코드로 외부 서버의 API를 통해 데이터를 가져오는 코드를 작
성할 수 있어야 하는데 이를 지원하는 서비스가 바로 IBM Cloud Function이다.
IBM Cloud Function 내에서 실제 기능을 수행하는 함수를 Action이라고 하며 이 Action 안에서 파이썬으로 코딩을
해서 외부 데이터 호출 로직을 넣을 수 있고 이 Action 자체가 URL을 가지고 있는데 이를 IBM Watson Assistant
의 Skill 내의 Webhook 에 이 URL을 넣어서 대화 중간에 특정 상황에 대해 해당 Action을 실행시킬 수 있다.
IBM Cloud Function 내에
Action 만들기
172
IBM Cloud Function 내에
Action 만들기
173
IBM Cloud Function 내에
Action 만들기
174
IBM Cloud Function 내에
Action 만들기
175
IBM Cloud Function 내에
Action 만들기
176
IBM Cloud Function 내에
Action 만들기
177
IBM Cloud Function 내에
Action 만들기
178
IBM Cloud Function 내에
Action 테스트
179
IBM Cloud Function 내에
Action의 Endpoints에서 정보 추출
180
IBM Cloud Function 내에
Action의 Endpoints에서 정보 추출
181
IBM Watson Assistant에서
Skill 생성 - Wiki_QA_App
182
Skill에서 Entity 생성 -
@telegram_start
183
Dialog 에서 Node 수정 -
“환영 인사” Node
184
Skill 에서 Webhook 설정
185
Skill 에서 Web Hook 설정
186
Skill 에서 Web Hook 설정
187
Skill 에서 Web Hook 설정
188
Dialog 에서 Node 생성 -
“위키” Node 및 입력 파라메터 셋팅
189
Dialog 의 특정 Node에
Web Hook 적용 전 숙지사항
190
출처: https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-webhooks
“위키” Node 에 Webhook 활성화
191
“위키” Node 에 Webhook 관련
결과값 세팅
192
IBM Watson Assistant 내에서
테스트
193
Node-Red 에서 새로운 플로우
생성 후 Chat Flow 만들고 배포
194
텔레그램에서 최종 확인
195
실습 #3
196
트위터 챗봇 (영어)
197
트위터 챗봇 개발하기 전에..
• 먼저 트위터 (https://twitter.com/ )에 접속해서 로그온을 해야 함 (계정이
없으면 회원가입을 해서 생성해야 함)
• 트위터 API를 사용하기 위해 트위터 개발자 사이트(https://
developer.twitter.com/en/apply-for-access.html )에 접속해서 약관에
동의하고 사용해야 될 이유와 목적 등을 영어로 기술하여 신청을 함
• 트위터 측에서 확인을 거쳐 신청할 때 사용한 메일로 인증 키 정보를 받아
야 하며 Consumer key (API key), Consumer Secret (API Secret),
Access Token, and Access Token Secret 총 4개를 받게 됨
• 인증 키 정보를 확인 후 구글 코랩에서 트위터의 트윗 정보를 가져오는 코
드를 작성하고 키 정보를 문자열 형태로 기입한 후 실행하여 제대로 정보
를 가져오는지 확인
198
트위터 회원가입
199
트위터 회원가입
200
트위터 개발자 사이트 접속
201
트위터 API 신청
202
트위터 API 신청
203
트위터 API 신청
204
트위터 API 신청
205
<예문>
Through Twitter API or Twitter data, I'd like to create a chatbot for showing
users recent tweets and the relevant information to enable them to utilize those things.
Since I'm a beginner as a chatbot developer, I just want to use a function of showing
last tweets on my chatbot. That's it.
트위터 API 신청
206
트위터 API 신청
207
트위터 API 신청
208
트위터 API 신청
209
트위터 API 신청
210
트위터 API 신청
211
트위터 API 신청
212
예문: This app is about showing users last tweets posted from twitter members.
트위터 API 신청
213
예문: This app is just to retrieve last tweets posted from twitter member.
I'd like to create a chatbot for showing users a couple of recent tweets. That's it .
트위터 API 신청
214
트위터 API 신청
215
트위터 API 신청
216
트위터 API 신청
217
구글 코랩에서 테스트 코드
작성 및 실행
218
구글 코랩에서 테스트 코드
작성 및 실행
219
IBM Cloud Function 내에
Action 만들기
220
IBM Cloud Function 내에
Action 만들기
221
IBM Cloud Function 내에
Action 만들기
222
IBM Cloud Function 내에
Action 만들기
223
IBM Cloud Function 내에
Action 만들기
224
IBM Cloud Function 내에
Action 만들기
225
IBM Cloud Function 내에
Action 만들기
226
IBM Cloud Function 내에
Action 만들기
227
Parameter Name: account
Parameter Value: “@withMBC”
IBM Cloud Function 내에
Action 테스트
228
IBM Watson Assistant에서
Skill 생성 - Show_Last_Three_Tweets_App
229
Skill에서 Intent 생성 - #twitter
230
Skill에서 Intent 생성 - #twitter
231
Skill에서 Intent 생성 - #twitter
232
User examples
@blackmirror
any news from twitter
hey give me the last 3 tweets
news on the event from twitter
show me some news from twitter
show me the last 3 tweets
show me what social media is saying about the event
Skill에서 Intent 생성 - #twitter
233
User examples
some tweets
twitter @account
twitter messages
twitts please
what people is saying about the show
what people is saying on twitter
what the social media is telling about the event ?
Skill에서 Intent 생성 - #twitter
234
Skill에서 Entity 생성 - @account
235
accountNames / Patterns / @([A-Za-z0-9_]+)
Skill에서 Entity 생성 -
@telegram_start
236
Skill에서 System Entity 설정
237
Dialog 에서 Node 수정 -
“Welcome” Node
238
Dialog 에서 Node 생성 -
“Twitter - last three tweets” Node
239
<? @account.literal ?> -> 사용자가 입력한 문장 중 @account 에 속한 Entity의 패턴에 맞는 단어만 추출
Sub Node 생성 -
“Account Specified” Node
240
Sub Node 생성 -
“Account NOT Specified” Node
241
“Twitter - last three tweets”
Node 수정
242
“Twitter - last three tweets”
Node 수정확인
243
IBM Cloud Function 내에 Action
의 Endpoints에서 정보 추출
244
IBM Cloud Function 내에 Action
의 Endpoints에서 정보 추출
245
Skill 에서 Web Hook 설정
246
Skill 에서 Web Hook 설정
247
Skill 에서 Web Hook 설정확인
248
“Account Specified” Node에
Web Hook 활성화
249
“Account Specified” Node에서
Web Hook에 보낼 파라메터 설정
250
Skill Refresh 후
Webhook 활성화 확인
251
“Account Specified” Node에
Web Hook 실행결과 세팅
252
1. Web Hook 호출이 성공적으로 끝났을 경우
Last Tweets for $account:<br> - <? $webhook_result_1.response.result.message[0] ?> <br> - <?
$webhook_result_1.response.result.message[1] ?><br> - <? $webhook_result_1.response.result.message[2] ?>
2. Web Hook 호출이 실패했을 경우
I couldn't find the account - please try again with e.g. @blackmirror @stranger_things
최종 실행 결과 확인
253
Node-Red 에서 Chat Flow 배포
254
Telegram에서 최종 확인
255
Reference (1)
• https://medium.com/swlh/what-is-a-chatbot-and-how-to-use-
it-for-your-business-976ec2e0a99f
• https://www.digitaldoughnut.com/articles/2019/april/the-five-
types-of-chatbot-use-for-businesses
• https://developer.ibm.com/recipes/tutorials/how-to-create-a-
watson-chatbot-on-nodered/
• https://medium.com/ibm-watson/chatting-with-watson-to-
hook-any-tweets-webhook-tutorial-bf0fac67d604
• https://www.entrepreneur.com/article/337430
256
Reference (2)
• https://medium.com/ibm-garage/designing-a-chatbot-
with-ibm-watson-assistant-7e11b94c2b3d
• https://developer.ibm.com/events/how-to-build-your-
own-chatbot/
• https://medium.com/deep-math-machine-learning-ai/
chapter-11-chatbots-to-question-answer-systems-
e06c648ac22a
• https://chatbotslife.com/ultimate-guide-to-leveraging-
nlp-machine-learning-for-you-chatbot-531ff2dd870c
257
Reference (3)
• https://brunch.co.kr/@dol74/142
• https://www.slideshare.net/alexglee/ai-chatbot-191433017?
fbclid=IwAR2CsBwwaqN-
K1Tg7S_NtGBaJEkMouRoKvNXE0KHWDr0KPepFgpgM3askaE
• https://medium.com/landbot-io/creating-conversational-experiences-ii-build-
and-design-20ac88d7ee72
• https://developer.ibm.com/kr/watson/2017/01/13/watsonchatbot-1-watson-
conversation/
• https://developer.ibm.com/kr/watson/watson-service/2017/02/26/watson-
conversation-ui-%ed%88%b4-%ec%82%ac%ec%9a%a9%eb%b2%95/
• https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-
overview#dialog-overview-variety
258
Reference (4)
• https://www.youtube.com/watch?v=OPdOCUPGMIQ
• https://www.youtube.com/watch?v=o-uhdw6bIyI
• https://www.youtube.com/watch?v=XkhAMe9gSFU
• https://developer.ibm.com/answers/questions/390108/how-can-i-
restart-a-conversation-which-clears-all/
• https://discourse.nodered.org/t/node-red-telegram-polling-error/
16765/8
• http://blog.drakejin.me/Serverless-1/
• https://union.parti.xyz/posts/22676
259
Thank You!
260

More Related Content

PPTX
AP9 Q1 - Week 1-1 Kahulugan ng Ekonomiks MELC-Based.pptx
PPTX
literature review slides.pptx
PDF
e-Commerce Chatbot Day1
PDF
[마인즈랩] 챗봇 소개서 201707
PDF
Chatbot Extension 개요 및 Chatbot Builder 사용법
PDF
Designing Effective Interview Chatbots: Automatic Chatbot Profiling and Desig...
PPTX
Chatbot Extension 개요 및 사용법
PPTX
Chatbot의 개요
AP9 Q1 - Week 1-1 Kahulugan ng Ekonomiks MELC-Based.pptx
literature review slides.pptx
e-Commerce Chatbot Day1
[마인즈랩] 챗봇 소개서 201707
Chatbot Extension 개요 및 Chatbot Builder 사용법
Designing Effective Interview Chatbots: Automatic Chatbot Profiling and Desig...
Chatbot Extension 개요 및 사용법
Chatbot의 개요

Similar to IBM Watson Assistant 기반 챗봇 제작 기초 강좌 (2019.11.18) (20)

PDF
Oracle Digital Assistant 소개
PDF
[2016 데이터 그랜드 컨퍼런스] 4 5(인공지능). 머니브레인 앱의 시대는 가고 인공지능 봇의 시대가 온다
PPTX
Commerce chatbot - 11번가 대화형 커머스 챗봇 적용 사례
PPTX
Rpa definiftion
PPTX
H사 RPA Definiton
PDF
[Rightbrain] AI서비스와 UX의 역할 - 챗봇/AI스피커 사업소개서
PDF
Do you know DUNA? - Chatbot SaaS
PDF
RPA (ROBOTIC PROCESS AUTOMATION)
PDF
AI 유저리서치를 할 수 있을까?
PDF
인터렉 1주차 과제
PDF
Clova ai-business-day-session-4
PDF
허브스팟 - Service hub [고객의견 청취]
PDF
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안
PDF
Oracle innovation summit chatbot
PDF
ITCT 사용자 중심 디자인 특강 - spoqa 남유정 UX designer
PPTX
챗봇 스터디
PDF
여기컨_스타트업 기획자의 월화수목금_이수지
PPTX
1인칭 관점에서 본 챗봇(Chotbot) 서비스
PDF
[Partner TechForum] 딥러닝 기반의 챗봇 기술을 활용한 구축 사례
PDF
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
Oracle Digital Assistant 소개
[2016 데이터 그랜드 컨퍼런스] 4 5(인공지능). 머니브레인 앱의 시대는 가고 인공지능 봇의 시대가 온다
Commerce chatbot - 11번가 대화형 커머스 챗봇 적용 사례
Rpa definiftion
H사 RPA Definiton
[Rightbrain] AI서비스와 UX의 역할 - 챗봇/AI스피커 사업소개서
Do you know DUNA? - Chatbot SaaS
RPA (ROBOTIC PROCESS AUTOMATION)
AI 유저리서치를 할 수 있을까?
인터렉 1주차 과제
Clova ai-business-day-session-4
허브스팟 - Service hub [고객의견 청취]
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안
Oracle innovation summit chatbot
ITCT 사용자 중심 디자인 특강 - spoqa 남유정 UX designer
챗봇 스터디
여기컨_스타트업 기획자의 월화수목금_이수지
1인칭 관점에서 본 챗봇(Chotbot) 서비스
[Partner TechForum] 딥러닝 기반의 챗봇 기술을 활용한 구축 사례
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
Ad

More from KYOYOON JUNG (6)

PDF
MS AI School 5기 - 3차 프로젝트 - AI 기반 무인매장 절도 감지 시스템 구축 프로젝트
PDF
MS AI School 5기 - 2차 프로젝트 - 1인 노인가구를 위한 반려 AI 서비스 구축 프로젝트
PDF
MS AI School 5기 - 1차 프로젝트 - AI 기반 피부 질환 진단 웹앱 구축 프로젝트
PDF
The future of no code platform (Google AppSheet)
PDF
머신러닝 및 딥러닝 기초 (2020.01.07)
PDF
인공지능, 머신러닝의 이해 강의자료 2019.12.20
MS AI School 5기 - 3차 프로젝트 - AI 기반 무인매장 절도 감지 시스템 구축 프로젝트
MS AI School 5기 - 2차 프로젝트 - 1인 노인가구를 위한 반려 AI 서비스 구축 프로젝트
MS AI School 5기 - 1차 프로젝트 - AI 기반 피부 질환 진단 웹앱 구축 프로젝트
The future of no code platform (Google AppSheet)
머신러닝 및 딥러닝 기초 (2020.01.07)
인공지능, 머신러닝의 이해 강의자료 2019.12.20
Ad

IBM Watson Assistant 기반 챗봇 제작 기초 강좌 (2019.11.18)

  • 1. Chatbot 기초 개념에 대한 이해 및 IBM Watson Assistant 기반 Chatbot 만들기 2019.11.18 작성자: 정교윤 1
  • 2. 목차 • Chatbot 의 정의 및 사용 목적 • Chatbot 의 활용 용도 • Chatbot 의 종류 및 예시 • Chatbot 개발 프로세스 • Chatbot 개발 및 서비스 배포 실습 (Hands-On) 2
  • 3. Chatbot 의 정의 및 사용 목적 3
  • 4. Chatbot (챗봇) 이란? • 옥스포드 사전의 정의에 따르면, Chatbot 은 아래의 한 문장으로 표현된다. • “A computer program designed to simulate conversation with human users, especially over the Internet.” • 좀 더 구체적으로 말하자면, Chatbot 은 웹 사이트, 어플리케이션 혹은 인스턴스 메신 저 (카카오톡, 페이스북, 텔레그램 등)과 연 동된 가상 친구로서 텍스트 메시지를 통해 우리와 소통하는 비서이자 사업가들이 고객 들과 더 가깝게 소통할 수 있도록 도와주는 통로로서의 역할을 수행한다. • 이러한 Chatbot은 사용자들과 소통을 위한 자동화된 시스템이라고 정의할 수 있다. 4
  • 5. Chatbot 의 역사 5 출처: https://www.altexsoft.com/blog/business/a-comprehensive-guide-to-chatbots-best-practices-for-building-conversational-interfaces/ ELIZA - 독일계 미국인 컴퓨터 공학자이자 MIT 공대 교수였던 Joseph Weizenbaum 에 의해 개발된 컴퓨터 프로그램으로, 심리치료사 와의 대화를 흉내내며 몇 가지 주요 단어들과 패 턴을 인식하여 그에 맞게 대답할 수 있는 세계 최초의 챗봇 Watson - 원래 의미는 미국 뉴욕주 요크타운에 위치한 Thomas J. Watson Research Center 에 있는 슈퍼컴퓨터라 고 볼 수도 있지만, 소프트웨적인 측면에서는 자연어 기반의 질 의응답을 할 수 있는 인공지능 시스템을 의미하며, 이시스템은 2006년에 Principal Investigator로 IBM에 재직했던 David Ferrucci 가 주도한 DeepQA project의 결과물로 탄생함 Siri - 스티브 잡스가 생전에 마지막으로 참여하고 기획했 던 iPhone 4s 에 탑재된 인공지능 기반 음성 챗봇으로 서 원래 이 챗봇의 음성인식엔진은 미 국방성 산하 연구 개발 조직인 방위고등연구계획국(DARPA) 의 자금지원 으로 진행된 CALO project 의 결과물이었으나 스티브 잡스의 지시로 Siri를 2010년에 애플이 완전히 인수하면 서 비공개 소프트웨어로 전환되었고 아이폰, 아이패드 및 맥용 머신에만 탑재되어 있음
  • 6. Chatbot 이 왜 필요한가? • Chatbot 을 활용하면 비즈니스에는 도움이 별로 되지 않 으면서 반복적으로 시간을 소모해야 하는 대면 업무와 고 객이 요청하는 수많은 요구사항들을 실시간으로 처리할 수 있으므로 비용절감효과가 발생한다. • 뿐만 아니라 Chatbot 이 엄청난 속도로 고객의 요청사항 을 처리하는 것을 경험한 소비자들은 해당 기업에 대해 더욱 더 강한 신뢰를 보내며 해당 기업의 브랜드와 제품 에 대해 강한 충성도를 보여주므로 도입할 만한 가치가 있다. 6
  • 7. 고객은 왜 Chatbot 을 선택하는가? • 2017년 11월에 열린 제4회 인터넷 과학 국제 컨퍼런스에 서 공개된 연구 보고서에 사람들이 Chatbot 과 소통하 길 선택하는지에 대해 몇 가지 이유가 명시되어 있다. 이 연구조사에 따르면, 사람들이 Chatbot을 사용하도록 동기부여하는 몇 가지 요인은 아래와 같다. • 생산성 측면 - Chatbot은 정보에 빠르고 효율적으로 접 근할 수 있도록 도와준다. • 엔터테인먼트 측면 - Chatbot은 고객들에게 재밌는 팁 을 제공해서 사람들을 웃게 하거나 고객들이 할 일이 없 을 때 심심하지 않게 도와준다. • 소셜 및 관계 측면 - Chatbot은 고객들이 외로움을 피 할 수 있도록 도와주며 타인의 시선에 대해 신경쓰지 않 고 대화할 수 있고 대화 기술을 개선할 수 있도록 도와준 다. • 호기심 측면 - Chatbot 으로 인해 고객의 호기심이 증폭 된다. 즉, 고객들은 Chatbot의 기능에 대해 자세히 알아 보고 싶어하며 새로운 것을 시도해보고 싶어한다. 7
  • 9. –Christina Milian “I think chatbots are the future of engagement between a fan and a brand or celebrity.” 9
  • 10. Chatbot은 어떻게 비즈니스에서 활용되는가? 고객 서비스 개선 쇼핑 프로세스 단순화 개인화된 소통방식 고객의 응답률 개선 반복된 업무 자동화 10 1. 상담원 응답을 기다릴 필요가 없음 2. FAQ 사이트에서 답변 검색할 필요 없음 고객이 Chatbot에게 사고자 하는 물건 정보만 전달하면 Chatbot이 자동으로 판매부서에 전달하여 재고가 있는지 확 인하여 전달하므로 불필요한 소통 제거 효과 발생 Chatbot은 많은 양의 긴 정보를 보여주는 대신 고객의 경험 에 기초하여 간결하게 구체적인 답변만 보여주므로 고객이 Chatbot 과 대화에 집중할 수록 고객은 구매 욕구가 상승한 다. 페이스북 페이지에서 고객에게 물어보는 질문은 90% 가 까이 답변이 되지 않는 상태로 남아있는 반면, Chatbot이 제 시한 질문에 대해서는 고객이 100% 답변을 하므로 더 많은 방문자가 고객이 될 가능성이 높아진다. 상당수 고객이 사는 곳, 직장, 배송 여부와 같은 반복된 질문 을 듣고 답변을 하고 있는데 Chatbot을 쓰면 이러한 소통을 대신 해주므로 노동자의 업무부담을 줄일 수 있다.
  • 11. Chatbot 의 종류 및 예시 11
  • 12. 어떤 종류의 Chatbot이 있는가? • Chatbot 이 고객이 자주 묻는 질문에 대한 답변자뿐만 아니라 기업의 제품에 대해 구매의도가 있는 고 객들의 니즈를 발굴할 수 있는 도구 (Lead Generation)로서 비즈니스의 다양한 영역의 업무를 할 수 있게 되면서 Chatbot은 사용 범위가 점점 확장되고 있다. 여러 케이스가 존재하지만 대표적으로 Chatbot은 크게 5가지 종류로 분류할 수 있다. • FAQ assistants - 고객이 기업에 대해 많이 하는 간단한 질문에 대해 친절하게 답변해주는 역할 • Navigation Bots - 고객이 원하는 정보가 담긴 블로그나 지도 등을 보여줘서 검색 스트레스를 줄여줌 • Lead generation and retention bots - 특정 쇼핑몰에 방문했을 때 고객의 구매의도 및 취향을 파악 해서 고객에게 맞는 맞춤형 상품을 추천하고 재구매를 하게 해주는 역할 • Transaction bots - 예를 들면 Chatbot이 사람 대신 고객으로부터 주문을 받아 정보를 사람에게 전달 하여 직접 고객에게 배송할 수 있도록 도와주는 역할 • Internal assistant chatbots - 회사 내의 직원들이 관리부서 직원에게 각종 질문 및 서비스를 요청하 는 경우가 많은데 관리부서 직원 대신 Chatbot이 업무를 처리해주는 역할 (예: 휴가 및 경조사 규정등 을 알려주는 업무 혹은 비용 처리 업무 대행) 12
  • 13. 챗봇 예시 - 숙박업 • Hotel Search Chatbot Demo - GoHero.AI • 출처: https://www.youtube.com/watch?v=7LWY8rwpTnI 13
  • 14. 챗봇 예시 - 식음료 업계 • Table booking chatbot - ADEO WEB • 출처: https://www.youtube.com/watch?v=Y84M_7AiJto 14
  • 15. 챗봇 예시 - 헬스케어 업계 • Healthcare Chatbot Demo - Avaya Messaging Automation • 출처: https://www.youtube.com/watch?v=nvOJQ4JttP0 15
  • 16. 챗봇 예시 - 소매 및 패션 업계 • Retailer & Brand Chatbot offers to consumers powered by AI - TrendBrew • 출처: https://www.youtube.com/watch?v=74JEJlpX9w4 16
  • 17. 챗봇 예시 - Google Duplex • Google Duplex A.I. - How Does it Work? - ColdFusion • 출처: https://www.youtube.com/watch?v=IuIpgArEZig 17
  • 19. Chatbot 개발 프로세스 목적 정의 고객과 소통할 플랫폼 선택 개발 방식 선택 개발, 맞춤화 및 배포 Chatbot이 반드시 수행 해야 하는 기능 정의 및 목 록 생성 Chatbot이 동작하는 Channel 을 선택 (예: 자사 웹사이트, Facebook, Telegram) Chatbot의 동작 기반인 Bot Engine을 자체 개발할 것 인지 검증된 기업의 Builder Platform을 써서 개발할 것인지 선택 Chatbot의 동작 알고리 즘 정리 및 답변에 대한 데이 터베이스 구축 및 유닛 테스 트 및 사용자 테스트 수행 19
  • 20. Chatbot 시스템 내부 구조 20 출처: https://wiprodigital.com/2019/07/11/conversational-ai-and-chatbots-the-new-digital-frontier/ Channels Bot Engine Enterprise System
  • 24. Chatbot 개발 비용 구조 예시 24 출처: https://www.cleveroad.com/blog/how-to-create-a-chatbot-for-business--step-by-step-guide-with-an-estimation
  • 25. Chatbot 대화 수준 정의 25 출처: https://chatbotslife.com/ultimate-guide-to-leveraging-nlp-machine-learning-for-you-chatbot-531ff2dd870c
  • 26. Chatbot 관련 기본 용어 • Intents: to convey purpose or goal • Entities: make logical decisions based on user input • Dialogs: design a conversation • Slots: collect important information to fulfill an intent • Digressions and Handlers: handle unexpected conversations. 26
  • 27. Chatbot 개발 및 서비스 배 포 실습 (Hands-On) 27
  • 28. 전체 실습 프로세스 IBM Cloud 에 로그온 IBM Watson Assistant 활성화 및 다이얼로그 완성 IBM Cloud Functions 의 Action 생성 및 코딩 IBM Watson Assistant의 다이얼 로그와 Action을 연결 IBM Node-Red에서 Telegram과 연결 Telegram 에서 Chatbot 동작 확인 28
  • 29. 강의 관련 GitHub Repository 29 https://github.com/KyoYoon/ibm_watson_chatbot_lecture_basic
  • 30. 실습에 들어가기 전에.. • Chrome 브라우저 설치 • Gmail 계정 생성 및 Google Colab 접속 • Telegram 다운로드 및 설치 후 Bot 생성 • Open API 신청 • IBM 계정 생성 • IBM Cloud 접속 후 활성화 30
  • 36. Telegram 가입 후 로그인 36
  • 37. Telegram Bot 만들기 (1) 1. @BotFather 입력 후 검색 2. 최상단에 뜬 BotFather 선택 37
  • 38. Telegram Bot 만들기 (2) 3. /newbot 이 라고 입력 후 엔터 38
  • 39. Telegram Bot 만들기 (3) 4. name 을 watson_chat_<your_name>_bot 으로 입력 후 엔터 5. username 을 watson_chat_<your_name>_b ot 으로 입력 후 엔터 6. Token 을 복사해서 따 로 저장 (매우 중요!) 39
  • 40. Telegram Bot 만들기 (4) 7. @watson_chat_<your_name>_bot 입력 후 검색한 후 결과에 나오는 Bot 선택 40
  • 41. 공공 인공지능 오픈 API DATA 서비스 포털에서 대화처리 API 신청 (1) 41
  • 42. 공공 인공지능 오픈 API DATA 서비스 포털에서 대화처리 API 신청 (2) 42
  • 43. 공공 인공지능 오픈 API DATA 서비스 포털에서 대화처리 API 신청 (3) 43
  • 44. 공공 인공지능 오픈 API DATA 서비스 포털에서 대화처리 API 신청 (4) 44
  • 45. 공공 인공지능 오픈 API DATA 서비스 포털에서 대화처리 API 신청 (5) 45
  • 46. 공공 인공지능 오픈 API DATA 서비스 포털에서 대화처리 API 신청 (6) 왼쪽과 같이 관리자로부터 메일이 오면 양식을 그대로 복사해서 붙여 넣기 후 관련 내용 기입해서 답장 을 보내면 관리자가 확인 키 발급 을 진행하게 됨 46
  • 47. 공공 인공지능 오픈 API DATA 서비스 포털에서 대화처리 API 신청 (7) 47
  • 48. IBM 계정 생성 (1) 48 https://www.ibm.com/kr-ko
  • 55. IBM Cloud 로그인 및 활성화 1.공공장소에서 동일한 네트워크에 여러 명이 접 속한 뒤에 처음 IBM Cloud 접속 후 활성화를 진행하면 IBM에서 활성화를 차단하므로 먼저 본인 스마트폰과 테터링을 먼저 해야 됨 -> 집에서 혼자 이 작업을 진행할 때는 필요없음 55 https://cloud.ibm.com/
  • 56. IBM Cloud 로그인 및 활성화 56 https://cloud.ibm.com/
  • 57. IBM Cloud 로그인 및 활성화 57
  • 58. IBM Cloud 로그인 및 활성화 58
  • 59. IBM Cloud 로그인 및 활성화 59
  • 60. IBM Cloud 로그인 및 활성화 60
  • 61. IBM Cloud 로그인 및 활성화 61
  • 62. IBM Cloud 로그인 및 활성화 62
  • 63. IBM Cloud 리소스 목록 (초기) 63
  • 64. IBM Cloud 리소스 목록 (최종) 64
  • 65. IBM Watson Assistant 활성화 65
  • 66. IBM Watson Assistant 활성화 66
  • 67. IBM Watson Assistant 활성화 67
  • 68. IBM Watson Assistant 활성화 68
  • 69. IBM Watson Assistant 활성화 69
  • 70. IBM Watson Assistant 활성화 70
  • 71. IBM Watson Assistant 하부 구성요소 71 IBM Watson Assistant IBM Cloud Assistant #1 Assistant #2 Skill 1 Skill 2 Skill 1 Skill 2 Intent #1 ~ n Entity @1 ~ n Dialog Intent #1 ~ n Entity @1 ~ n Dialog Intent #1 ~ n Entity @1 ~ n Dialog Intent #1 ~ n Entity @1 ~ n Dialog
  • 73. 레스토랑 예약 챗봇 (영어) 73 레스토랑 영업시간 문의 레스토랑 위치 문의 이 레스토랑은 본점과 분점 총 2개의 매장이 있다고 가정하고 챗봇이 질문
  • 74. 레스토랑 예약 챗봇 (영어) 74 레스토랑 테이블 예약 문의 챗봇이 레스토랑 위치, 시간, 총 인원 정보 요청 #1 레스토랑 위치 답변함 챗봇이 예약 날짜에 관해 질문 #2 “내일”이라고 답변함 챗봇이 예약 시간에 관해 질문 #3 “저녁7시” 라고 답변함 챗봇이 예약 인원에 관해 질문 #4 “3명”이 라고 답변함 챗봇이 최종 예약 확인 통보
  • 78. Intent 만들기 - #hours_of_operation 78 User examples what time do you open when are the hours when can I come in when do you close when is the store available
  • 82. Intent 만들기 - #book_table 82 User examples Can I book a table for 4 people, at 7pm? can i book a table? Can I reserve a table for 10 people at 8pm? can I reserve a table? I'd like to book a table I'd like to book a table for 3 people, at 10am I'd like to reserve a table I'd like to reserve a table for 7 people, at 6pm
  • 85. Intent 만들기 - #locations 85 User examples can you tell me where it is? can you tell me where the restaurant is? how can i get there? please, let me know the address of the restaurant please, let me know the location of the restaurant please, tell me the address of the restaurant please, tell me the location of the restaurant plz, let me know the address of it Where is the store at
  • 86. Intent 만들기 - #locations 86 User examples plz, let me know the location plz, let me know the location of it plz, tell me the address plz, tell me the address of it plz, tell me the location of it what's the address of the restaurant? where is the restaurant where is the restaurant located? where is it
  • 93. Dialog 만들기 전에… 93 출처: https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-overview#dialog-overview-variety
  • 96. Dialog 만들기 - “Hours of Operation” Node 96
  • 97. Dialog 만들기 - “Hours of Operation” Node 97 #3 그냥 사용자가 다음 질문을 할 때까지 기다리는 옵션으 로 설정 #1 사용자가 해당 Intent 에 부합하는 질문을 할 때만 챗봇 이 동작하도록 정의 #2 사용자의 질문에 챗봇이 대답할 답변 정의 #4 이 노드의 이름 정의
  • 98. Dialog 만들기 - “Hours of Operation” Node 98 사용자가 챗봇에게 던진 질문 챗봇이 사용자의 질문에 답변함 챗봇이 사용자의 질문의 intent를 #hours_of_operation 으로 파악함
  • 99. Dialog 만들기 - “Locations” Node 99 #1 사용자가 해당 Intent 에 부합하는 질문을 할 때만 챗봇 이 동작하도록 정의 #2 이 레스토랑은 같은 상호로 2개가 있으므로 이 Intent에 대해 챗봇이 다르게 반응하도록 하기 위해 Customize를 클릭해서 설정을 변경해야 함
  • 109. Dialog 만들기 - “Book Table” Node 109
  • 110. Dialog 만들기 - “Book Table” Node 110
  • 111. Dialog 만들기 - “Book Table” Node 111
  • 112. Dialog 만들기 - “Book Table” Node 112 CHECK FOR SAVE IT AS IF NOT PRESENT, ASK TYPE @locations $locations Which store did you want to go to? First or Main? Required @sys-date $date What day do want to come in? Required @sys-time $time What time did you want to arrive? Required @sys-number $number How many people in your party? Required
  • 113. Dialog 만들기 - “Book Table” Node 113
  • 114. Dialog 만들기 - “Book Table” Node 114
  • 115. Dialog 만들기 - “Book Table” Node 115
  • 116. Dialog 테스트 - “Book Table” Node 116
  • 117. Dialog 테스트 - “Book Table” Node 117
  • 118. Dialog 테스트 - “Book Table” Node 118 사용자는 예약을 끝내서 식사를 잘 했고 약 2주가 지난 후 다시 이 레스토랑에서 식사를 하기로 해서 챗봇에게 “Can I book a room?”라고 말했는데 이전 예약 정보가 그대로 남아서 예약이 되었다는 황당한 메시지를 받게 된다. 이 문제를 어떻게 수정해야 할까?
  • 119. Dialog 수정 - “Book Table” node 119 테이블 예약이 끝나면 고객이 챗봇과 대화를 할 이유가 없어지므로 일단 대화가 처음부터 다시 시작되어야 한다. 아래와 같이 “The assistant should” 부분에서 아래 옵션을 “Jump to”로 바꿔준 후 테이블 예약 관련 노드에서 Welcome 노드로 이동하도록 마우스를 클릭한 후 옵션을 Respond로 주면 된다.
  • 120. Dialog 수정 - “Welcome” Node 120 그 다음은 대화가 끝나고 난 후 대화를 재시작할 때 기존에 저장되어 있는 Context Variable을 어떻게 초기화할 수 있을지 방법에 대해 생각해보아야 한다. 대화의 시작은 Welcome Node 이므로 Welcome Node 가 실행될 때 기존에 있던 Context Variable을 초기화해주는 것이 해결책이다. 아래와 같이 오른쪽 마우스 클릭 후 Open JSON Editor를 클릭해서 context variable들을 초기화하는 셋팅을 넣을 준비를 한다.
  • 121. Dialog 수정 - “Welcome” Node 121 { “output":{ … }, "context": { "locations": null, "time": null, "date": null, "number": null } } 아래와 같이 JSON Editor에서 빨간 색으로 된 부분을 추가하여 Context Variable 들의 값들을 전부 null 로 셋팅한다. 이렇게 되면 기존 데이터는 다 사라지고 완전히 처음 상태로 돌아가서 대화를 시작할 수 있게 된다. Context variable 초기화
  • 122. Dialog 수정 - “Welcome” Node 122 대화가 재시작될 때 아래와 같이 기존에 값이 저장된 Context Variable의 값이 전부 null 로 바뀌게 된다.
  • 123. Dialog 테스트 - “Book Table” Node 123 수정을 다 한 후 다시 테스트를 하게 되면 아래와 같이 대화가 재시작될 때 기존에 저장된 정보들은 다 사라졌으므로 예약 관련 질문을 해서 필수 정보가 언급이 되어 있지 않으면 챗봇이 다시 정보를 달라고 요청하게 된다.
  • 124. Dialog 수정 - “Welcome” Node 124 이제, Intent, Entity, Dialog 전부 완성하였고 테스트를 완료하였으니 Node-Red를 통해 텔레그램 메신저에 배포할 차례이다. 그 전에 Welcome 노드를 수정해야 하는데 그 이유는 텔레그램은 대화가 시작과 동시에 “/start”라는 문자를 전송하는데 이를 Watson Assistant 가 인지를 못한다. 따라서, 이와 관련된 Entity를 하나 만들고 이 Entity를 Welcome Node 에 적용해보도록 하자.
  • 125. Dialog 수정 - “Welcome” Node 125 아래와 같이 telegram_start 라는 이름으로 Entity를 하나 만들고 추가할 값으로 /start 를 넣고 저장한다.
  • 126. Dialog 수정 - “Welcome” Node 126 아래와 같이 @telegram_start 를 Welcome Node의 “If assistant recognizes” 부분에 or 조건으로 연결해서 저장한다.
  • 127. Node-Red 란 무엇인가? 127 IBM Cloud 안에서 만든 모든 어플리케이션들을 사용자가 사용하는 플랫폼 혹은 하드웨어에 배포를 해서 실사용자들이 쉽게 해당 어플리케이션들을 쓸 수 있도록 해주는 프로그래밍 툴 https://nodered.org/
  • 128. IBM Node-Red Starter Kit 설치 128
  • 129. IBM Node-Red Starter Kit 설치 129
  • 130. IBM Node-Red Starter Kit 설치 130
  • 131. IBM Node-Red Starter Kit 설치 131
  • 132. IBM Node-Red Starter Kit 설치 132
  • 133. IBM Node-Red Starter Kit 설치 133
  • 134. IBM Node-Red Starter Kit 설치 134
  • 135. IBM Node-Red Starter Kit 설치 135
  • 136. IBM Node-Red Starter Kit 설치 136
  • 137. IBM Node-Red Starter Kit 설치 137
  • 138. IBM Node-Red Starter Kit 설치 138
  • 139. IBM Node-Red Starter Kit 설치 139
  • 141. Node-Red 로그인 Node-Red: an open source logic engine that allows programmers of any level to easily write code that can connect to APIs, hardware, IoT devices or online services 141
  • 143. IBM Node-Red 에 Telegram connector 설치 143
  • 144. IBM Node-Red 에 Telegram connector 설치 144
  • 145. IBM Node-Red 에 Telegram connector 설치완료 145
  • 149. Chat Flow 만들기 149 1st function - Prepare for Conversation <Source Code> msg.chatId = msg.payload.chatId; msg.payload = msg.payload.content; return msg;
  • 150. Chat Flow 만들기 150 2nd function - Prepare for Telegram <Source Code> msg.payload = { chatId : msg.chatId, type : "message", content : msg.payload.output.text[0] }; return msg;
  • 152. IBM Node-Red Flow (완성) 152
  • 153. Telegram 에서 작동 확인 153
  • 154. IBM Cloud 리소스 목록 확인 154
  • 156. 위키 QnA 챗봇 (한국어) 156 서울의 면적이 얼마야? 605.2 km 나폴레옹이 누구야? 나폴레옹 3세 또는 샤를 루이 나폴레옹 보나파르트(프랑스 어: Charles …
  • 157. 위키 QnA 챗봇 개발하기 전에.. • 앞서 이전 슬라이드에서 소개한 대로 공공 인공지능 오픈 API DATA 서비스 포털에서 신청한 API Key 가 본인 메일로 전달되었는지 확인 • 공공 인공지능 오픈 API DATA 서비스 포털에서 API 사용 관련 파이선 소스코드 확인 후 이해 (대화처 리 API를 사용할 예정임) • Google Colab(구글 코랩)으로 접속한 후 주피터 노트북 파일 생성 후 상기 포털에 나온 파이선 소스코 드를 붙여넣고 수정 후 해당 API의 사용법 및 동작 원리와 실행 결과가 무엇인지 확인 (Gmail 계정이 필요하며, 소스코드를 보면서 JSON 형식으로 된 문자열에서 원하는 결과값과 관련된 Key에 접근하여 Value를 추출 후 챗봇이 사용자에게 전달할 답변을 생성하는 프로세스를 이해할 수 있어야 함) • Cloud(클라우드)가 무엇인지 왜 쓰는 것인지에 대한 간단한 이해 (글로벌 IT 기업들이 내세우는 자사 클라우드의 핵심 기능 중 하나인 Auto Scailing 이 무엇인지 간략히 이해할 필요가 있음) • Web Hook 및 Serverless Function 개념에 대한 이해 (챗봇이 사용자의 질문에 답변을 할 때 Watson Assistant에 설정한 답변 외에 외부 데이터를 가져와서 답변을 하기 위해서는, IBM 클라우드 안에서 Serverless Function에 속하는 Action을 생성 후 해당 Action안에 해당 데이터를 가져오는 소스코드 작성 후 해당 Action의 URL을 Watson Assistant 내에 있는 해당 Skill 에 Web Hook으로 설정해주는 작업이 필수적으로 요구됨) 157
  • 158. 본인 메일에서 API Key 확인 158
  • 159. 대화 처리 오픈 API 키 사용 예제 확인 (Python Code) 159
  • 160. Google Colab 에서 해당 Python Code 코딩 후 실행 160
  • 161. Google Colab 에서 해당 Python Code 결과 확인 161
  • 162. 대화처리 API 실행 후 반환결과 (JSON 형식) 분석 - 답변 추출 성공 162 질문: “나폴레옹은 누구야?”
  • 163. 대화처리 API 실행 후 반환결과 (JSON 형식) 분석 - 답변 없음 163 질문: “abvfdddd”
  • 164. 대화처리 API 실행 후 반환결과 (JSON 형식) 분석 - 정의 불가 164 질문: “#@!!! ㅌㅌㅌㅌ”
  • 165. 대화처리 API 실행 후 반환결과 (JSON 형식) 분석 - 색다른 답변 165 질문: “나는 누구야?”
  • 166. Google Colab에서 절차식으로 작성된 현재 코드 를 OOP 개념에 맞게 Class로 재작성 및 테스트 (1) 166
  • 167. Google Colab에서 절차식으로 작성된 현재 코드 를 OOP 개념에 맞게 Class로 재작성 및 테스트 (2) 167
  • 168. Cloud 의 정의 168 Cloud는 하드웨어, 개발 플랫폼 혹은 서비스와 같은 가상화된 리소스를 쉽게 사용하고 접근할 수 있도록 설계된 거대한 리소스 풀을 의미하며, 기존 물리 서버와 달리 인터넷 트래픽 증감에 따라 리소스의 규모를 줄이거나 늘릴 수 있도록 하는 기능이 포함된다. Cloud 서비스 제공 기업은 고객에게 전기처럼 IT 인프라, 플랫폼 및 소프트웨어를 제한된 기간과 시간 내에 사용할 수 있고 그에 맞게 요금을 낼 수 있도록 하는 구독형 서비스를 제공한다. Cloud를 사용하면서 고객이 지불하는 요금에는 Cloud 서비스 제공 기업이 따로 전 세계의 소프트웨어 벤더, 하드웨어 벤더들과 별도로 소프트웨어 라이선스 계약을 맺은 비용이 함께 포함되어 있어서 사용자가 라이선스에 대해 신경쓰지 않고 서버, OS, Software들을 사용할 수 있다. 출처: http://ccr.sigcomm.org/online/files/p50-v39n1l-vaqueroA.pdf
  • 169. Cloud 의 종류 169 출처: https://www.journaldev.com/25061/cloud-computing
  • 170. Cloud 의 핵심 기능 (Auto Scaling) 170 Cloud에서 Scaling의 의미는 Cloud 내의 가용한 리소스의 성능을 늘렸다가 줄였다가 하는 것을 의미한다. Cloud와 달리 일반적인 물리 서버에서는 이러한 동작을 사람이 직접 물리적으로 설정을 해서 성능을 높였다면, 글로벌 IT 기업이 운영하는 Cloud 에서는 자체 개발한 내부 소프트웨어로 리소스를 모니터링해서 자동으로 리소스의 성능을 줄였다가 높였다가 할 수 있는 서비스를 제공한다. 이 자동화된 서비스를 Auto Scaling이라고 한다. Cloud 내부의 소프트웨어 가 내/외부 트래픽의 증감을 모니터링하여 자동으로 Scaling을 해줌 (Auto Scaling) 출처: https://www.nitrix-reloaded.com/2016/10/01/scalability-scale-outin-vs-scale-updown-horizontal-scaling-vs-vertical-scaling/
  • 171. Web Hook & Serverless Function in Chatbot 171 Webhook은 서버에서 어떠한 작업이 수행 되었을 때 해당 작업이 수행되었음을 HTTP POST로 알리는 개념이며, Webhook을 구현한 웹 애플리케이션은, 특정 작업이 수행될 때 URL에 대해 POST방식으로 요청을 생성한다. 챗봇 개발시에 대화 중간에 챗봇이 외부에서 데이터를 부르기 위해서는 Webhook을 구현한 어플리케이션을 URL로 호출할 수 있어야 하며 현재 IBM Cloud 에는 Skill 에서 Webhook URL을 정의할 수 있고 Node 별로 Webhook을 활성화시켜 Webhook을 통해 외부 데이터를 호출해서 대화창에 보여줄 수 있도록 하고 있다. Serverless Function 은 쉽게 설명하자면 서버를 거치지 않고 Function을 호출할 수 있는 아키텍쳐 내에서 설계된 Function을 말하며 이 서비스를 사용하는 개발자는 서버를 소유하지 않고 Function만 호출할 수 있으므로 비용이 절 약되고 복잡한 로직을 처리하는 기능이 아니라 주기적으로 호출하거나 특정 이벤트 시에만 호출하는 기능을 쉽게 구현할 수 있어서 많이 애용되고 있다. IBM Cloud 에서는 IBM Cloud Function 이라는 서비스가 Serverless Function을 지원하는 서비스인데 챗봇 실행 중에 챗봇이 외부 데이터를 가져오려면 개발자가 파이썬 코드로 외부 서버의 API를 통해 데이터를 가져오는 코드를 작 성할 수 있어야 하는데 이를 지원하는 서비스가 바로 IBM Cloud Function이다. IBM Cloud Function 내에서 실제 기능을 수행하는 함수를 Action이라고 하며 이 Action 안에서 파이썬으로 코딩을 해서 외부 데이터 호출 로직을 넣을 수 있고 이 Action 자체가 URL을 가지고 있는데 이를 IBM Watson Assistant 의 Skill 내의 Webhook 에 이 URL을 넣어서 대화 중간에 특정 상황에 대해 해당 Action을 실행시킬 수 있다.
  • 172. IBM Cloud Function 내에 Action 만들기 172
  • 173. IBM Cloud Function 내에 Action 만들기 173
  • 174. IBM Cloud Function 내에 Action 만들기 174
  • 175. IBM Cloud Function 내에 Action 만들기 175
  • 176. IBM Cloud Function 내에 Action 만들기 176
  • 177. IBM Cloud Function 내에 Action 만들기 177
  • 178. IBM Cloud Function 내에 Action 만들기 178
  • 179. IBM Cloud Function 내에 Action 테스트 179
  • 180. IBM Cloud Function 내에 Action의 Endpoints에서 정보 추출 180
  • 181. IBM Cloud Function 내에 Action의 Endpoints에서 정보 추출 181
  • 182. IBM Watson Assistant에서 Skill 생성 - Wiki_QA_App 182
  • 183. Skill에서 Entity 생성 - @telegram_start 183
  • 184. Dialog 에서 Node 수정 - “환영 인사” Node 184
  • 185. Skill 에서 Webhook 설정 185
  • 186. Skill 에서 Web Hook 설정 186
  • 187. Skill 에서 Web Hook 설정 187
  • 188. Skill 에서 Web Hook 설정 188
  • 189. Dialog 에서 Node 생성 - “위키” Node 및 입력 파라메터 셋팅 189
  • 190. Dialog 의 특정 Node에 Web Hook 적용 전 숙지사항 190 출처: https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-webhooks
  • 191. “위키” Node 에 Webhook 활성화 191
  • 192. “위키” Node 에 Webhook 관련 결과값 세팅 192
  • 193. IBM Watson Assistant 내에서 테스트 193
  • 194. Node-Red 에서 새로운 플로우 생성 후 Chat Flow 만들고 배포 194
  • 198. 트위터 챗봇 개발하기 전에.. • 먼저 트위터 (https://twitter.com/ )에 접속해서 로그온을 해야 함 (계정이 없으면 회원가입을 해서 생성해야 함) • 트위터 API를 사용하기 위해 트위터 개발자 사이트(https:// developer.twitter.com/en/apply-for-access.html )에 접속해서 약관에 동의하고 사용해야 될 이유와 목적 등을 영어로 기술하여 신청을 함 • 트위터 측에서 확인을 거쳐 신청할 때 사용한 메일로 인증 키 정보를 받아 야 하며 Consumer key (API key), Consumer Secret (API Secret), Access Token, and Access Token Secret 총 4개를 받게 됨 • 인증 키 정보를 확인 후 구글 코랩에서 트위터의 트윗 정보를 가져오는 코 드를 작성하고 키 정보를 문자열 형태로 기입한 후 실행하여 제대로 정보 를 가져오는지 확인 198
  • 205. 트위터 API 신청 205 <예문> Through Twitter API or Twitter data, I'd like to create a chatbot for showing users recent tweets and the relevant information to enable them to utilize those things. Since I'm a beginner as a chatbot developer, I just want to use a function of showing last tweets on my chatbot. That's it.
  • 212. 트위터 API 신청 212 예문: This app is about showing users last tweets posted from twitter members.
  • 213. 트위터 API 신청 213 예문: This app is just to retrieve last tweets posted from twitter member. I'd like to create a chatbot for showing users a couple of recent tweets. That's it .
  • 218. 구글 코랩에서 테스트 코드 작성 및 실행 218
  • 219. 구글 코랩에서 테스트 코드 작성 및 실행 219
  • 220. IBM Cloud Function 내에 Action 만들기 220
  • 221. IBM Cloud Function 내에 Action 만들기 221
  • 222. IBM Cloud Function 내에 Action 만들기 222
  • 223. IBM Cloud Function 내에 Action 만들기 223
  • 224. IBM Cloud Function 내에 Action 만들기 224
  • 225. IBM Cloud Function 내에 Action 만들기 225
  • 226. IBM Cloud Function 내에 Action 만들기 226
  • 227. IBM Cloud Function 내에 Action 만들기 227 Parameter Name: account Parameter Value: “@withMBC”
  • 228. IBM Cloud Function 내에 Action 테스트 228
  • 229. IBM Watson Assistant에서 Skill 생성 - Show_Last_Three_Tweets_App 229
  • 230. Skill에서 Intent 생성 - #twitter 230
  • 231. Skill에서 Intent 생성 - #twitter 231
  • 232. Skill에서 Intent 생성 - #twitter 232 User examples @blackmirror any news from twitter hey give me the last 3 tweets news on the event from twitter show me some news from twitter show me the last 3 tweets show me what social media is saying about the event
  • 233. Skill에서 Intent 생성 - #twitter 233 User examples some tweets twitter @account twitter messages twitts please what people is saying about the show what people is saying on twitter what the social media is telling about the event ?
  • 234. Skill에서 Intent 생성 - #twitter 234
  • 235. Skill에서 Entity 생성 - @account 235 accountNames / Patterns / @([A-Za-z0-9_]+)
  • 236. Skill에서 Entity 생성 - @telegram_start 236
  • 238. Dialog 에서 Node 수정 - “Welcome” Node 238
  • 239. Dialog 에서 Node 생성 - “Twitter - last three tweets” Node 239 <? @account.literal ?> -> 사용자가 입력한 문장 중 @account 에 속한 Entity의 패턴에 맞는 단어만 추출
  • 240. Sub Node 생성 - “Account Specified” Node 240
  • 241. Sub Node 생성 - “Account NOT Specified” Node 241
  • 242. “Twitter - last three tweets” Node 수정 242
  • 243. “Twitter - last three tweets” Node 수정확인 243
  • 244. IBM Cloud Function 내에 Action 의 Endpoints에서 정보 추출 244
  • 245. IBM Cloud Function 내에 Action 의 Endpoints에서 정보 추출 245
  • 246. Skill 에서 Web Hook 설정 246
  • 247. Skill 에서 Web Hook 설정 247
  • 248. Skill 에서 Web Hook 설정확인 248
  • 249. “Account Specified” Node에 Web Hook 활성화 249
  • 250. “Account Specified” Node에서 Web Hook에 보낼 파라메터 설정 250
  • 251. Skill Refresh 후 Webhook 활성화 확인 251
  • 252. “Account Specified” Node에 Web Hook 실행결과 세팅 252 1. Web Hook 호출이 성공적으로 끝났을 경우 Last Tweets for $account:<br> - <? $webhook_result_1.response.result.message[0] ?> <br> - <? $webhook_result_1.response.result.message[1] ?><br> - <? $webhook_result_1.response.result.message[2] ?> 2. Web Hook 호출이 실패했을 경우 I couldn't find the account - please try again with e.g. @blackmirror @stranger_things
  • 253. 최종 실행 결과 확인 253
  • 254. Node-Red 에서 Chat Flow 배포 254
  • 256. Reference (1) • https://medium.com/swlh/what-is-a-chatbot-and-how-to-use- it-for-your-business-976ec2e0a99f • https://www.digitaldoughnut.com/articles/2019/april/the-five- types-of-chatbot-use-for-businesses • https://developer.ibm.com/recipes/tutorials/how-to-create-a- watson-chatbot-on-nodered/ • https://medium.com/ibm-watson/chatting-with-watson-to- hook-any-tweets-webhook-tutorial-bf0fac67d604 • https://www.entrepreneur.com/article/337430 256
  • 257. Reference (2) • https://medium.com/ibm-garage/designing-a-chatbot- with-ibm-watson-assistant-7e11b94c2b3d • https://developer.ibm.com/events/how-to-build-your- own-chatbot/ • https://medium.com/deep-math-machine-learning-ai/ chapter-11-chatbots-to-question-answer-systems- e06c648ac22a • https://chatbotslife.com/ultimate-guide-to-leveraging- nlp-machine-learning-for-you-chatbot-531ff2dd870c 257
  • 258. Reference (3) • https://brunch.co.kr/@dol74/142 • https://www.slideshare.net/alexglee/ai-chatbot-191433017? fbclid=IwAR2CsBwwaqN- K1Tg7S_NtGBaJEkMouRoKvNXE0KHWDr0KPepFgpgM3askaE • https://medium.com/landbot-io/creating-conversational-experiences-ii-build- and-design-20ac88d7ee72 • https://developer.ibm.com/kr/watson/2017/01/13/watsonchatbot-1-watson- conversation/ • https://developer.ibm.com/kr/watson/watson-service/2017/02/26/watson- conversation-ui-%ed%88%b4-%ec%82%ac%ec%9a%a9%eb%b2%95/ • https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog- overview#dialog-overview-variety 258
  • 259. Reference (4) • https://www.youtube.com/watch?v=OPdOCUPGMIQ • https://www.youtube.com/watch?v=o-uhdw6bIyI • https://www.youtube.com/watch?v=XkhAMe9gSFU • https://developer.ibm.com/answers/questions/390108/how-can-i- restart-a-conversation-which-clears-all/ • https://discourse.nodered.org/t/node-red-telegram-polling-error/ 16765/8 • http://blog.drakejin.me/Serverless-1/ • https://union.parti.xyz/posts/22676 259