코딩없이 ChatBot 만들기
IBM 왓슨 어시스턴트로 챗봇을 구축하는 방법
이 글에서는 IBM 왓슨 어시스턴트를 사용하여 작동하는 챗봇을 구축하는 방법에 대해 알아보겠습니다.
왓슨 어시스턴트는 IBM 클라우드에서 호스팅되는 챗봇 구축용 서비스로, 별도의 프로그래밍 없이도 챗봇을 구축할 수 있습니다.
챗봇 구축을 시작하기 전에 챗봇이란 무엇이며 챗봇의 사용 사례를 이해해 보겠습니다.
챗봇은 사람과 대화를 시뮬레이션할 수 있는 인공 지능(AI) 소프트웨어입니다. 챗봇 서비스는 사용자의 텍스트, 시각 또는 청각 입력에 응답하도록 프로그래밍되어 있으며 SMS, 웹사이트 채팅창, 소셜 메시징 서비스 등의 매체를 활용하여 메시지를 수신하고 응답합니다.
챗봇은 FAQ 답변, 24*7 고객 관리 지원, 티켓 예약, 피자 주문 접수 등 다양한 서비스에서 사용할 수 있습니다.
다음 작업을 처리할 수 있는 레스토랑용 챗봇을 구축하겠습니다:
- 예약하기 - 챗봇이 최종 사용자를 위해 테이블을 예약할 수 있습니다.
- 영업시간 - 챗봇이 레스토랑의 영업 시간에 대한 정보를 제공할 수 있습니다.
원하는 만큼 많은 기능을 추가할 수 있지만,
단순화와 이해를 돕기 위해 위의 두 가지 기능에만 초점을 맞춰 설명하겠습니다.
이제 챗봇이 수행할 수 있는 작업의 종류에 대한 의도를 설정했으니 구축을 시작하겠습니다.
챗봇 만들기
IBM 왓슨 어시스턴트 서비스를 사용하려면 IBM 클라우드 계정이 있어야 합니다.
IBM Cloud 계정에 로그인합니다. 계정이 없는 경우 여기에서 무료로 가입할 수 있습니다.
1단계: 왓슨 어시스턴트 서비스 인스턴스 만들기
IBM 클라우드 계정에 로그인하면 대시보드에 아래와 같은 화면이 나타납니다.
검색창에 “왓슨 어시스턴트”를 입력하고 왓슨 어시스턴트 서비스를 생성합니다.
왓슨 어시스턴트 서비스를 생성한 후 해당 서비스를 클릭하면 다음과 같은 화면이 나타납니다.
이제 ‘왓슨 어시스턴트 실행’을 클릭하여 서비스를 시작합니다.
2단계: 어시스턴트에 대화 스킬 추가하기 첫 번째 단계를 완료하면 다음 이미지가 표시됩니다.
이 단계에서는 어시스턴트에 대화 스킬을 추가하겠습니다.
대화 스킬은 어시스턴트가 언급된 작업을 수행하는 데 도움이 됩니다.
어시스턴트에 대화 스킬을 추가하려면 “내 첫 번째 어시스턴트”를 클릭합니다. 다음 이미지가 표시됩니다.
여기에서 어시스턴트에 연결된 액션 스킬이 있음을 알 수 있습니다.
어떤 경우에는 어시스턴트에 연결된 액션 스킬이 있고 어떤 경우에는 어시스턴트에 연결된 대화 스킬이 있습니다.
어시스턴트에 연결된 대화 스킬이 있는 경우에는 아무것도 변경할 필요가 없지만, 우리의 경우에는
어시스턴트에 연결된 액션 스킬이 있고 대화 스킬을 연결하려고 합니다.
이렇게 하려면 먼저 어시스턴트에서 액션 스킬을 제거합니다.
기존 액션 스킬을 제거하려면 내 첫 번째 스킬의 오른쪽 상단 모서리에 있는 점 3개를 클릭하고 스킬 제거를 클릭합니다.
액션 스킬을 성공적으로 제거하면 다음 이미지가 표시됩니다.
이제 대화 스킬을 추가하려면 “액션 또는 대화 스킬 추가”를 클릭하고
“Restaurant Skill” 이라는 이름의 새 대화 스킬을 만든 다음 스킬 만들기를 클릭합니다.
이 작업을 완료하면 어시스턴트에 새 대화 스킬이 추가됩니다. 이것으로 챗봇 구축의 2단계가 완료됩니다.
3단계: 인텐트를 만들고 스킬에 추가하기
이 단계에서는 인텐트를 생성하고 스킬에 추가하겠습니다. 하지만 그 전에 인텐트가 무엇인지 이해해야 합니다.
왓슨 어시스턴트에 따르면
인텐트는 동일한 의미를 가진 사용자 질의 문장의 모음입니다.
인텐트를 만들면 어시스턴트가 사용자가 목표를 표현하는 다양한 방식을 이해하도록 훈련시킬 수 있습니다.
인텐트는 단순히 동일한 의미를 가진 사용자 문장의 모음입니다. 이러한 문장은 사용자가 원하는 목표를 표현하는 문장이 될 수 있으며, 이 경우 테이블 예약하기와 같은 문장이 될 수 있습니다.
사용자가 레스토랑에서 테이블을 예약하기 위해 말할 수 있는 다양한 방법에는 어떤 것이 있나요?
테이블 예약하기.
나를 위한 테이블 예약하기.
레스토랑의 테이블을 예약하세요.
테이블 예약하기.
저녁 식사를 위한 테이블을 예약하고 싶습니다.
이 모든 예는 사용자가 테이블을 예약하려는 의도를 보여줍니다.
이 예시를 보면 사용자가 테이블을 예약하고 싶다는 것을 쉽게 알 수 있습니다. 챗봇의 인텐트도 마찬가지입니다.
인텐트는 챗봇이 사용자가 달성하고자 하는 목표를 식별하는 데 도움이 됩니다.
이러한 목표는 예약하기, 운영 시간 정보를 얻기 등이 될 수 있습니다.
챗봇에서는 예약을 하고 영업시간에 대한 정보를 얻는 두 가지 주요 목표를 달성하고자 합니다.
따라서 각각에 대해 하나씩 두 개의 인텐트를 만들 것입니다.
먼저, 사용자의 테이블 예약 의도를 파악하기 위해 인텐트를 생성합니다.
인텐트를 생성하려면 먼저 레스토랑 스킬을 클릭합니다. 다음 이미지가 표시됩니다.
이제 인텐트 생성을 클릭합니다. 그런 다음 인텐트 이름 “make_booking”을 입력한 다음 인텐트 생성을 클릭합니다.
다음 이미지가 표시됩니다.
이제 인텐트 생성을 클릭합니다. 그런 다음 인텐트 이름 “make_booking”을 입력한 다음 인텐트 생성을 클릭합니다. 다음 이미지가 표시됩니다.
테이블을 예약.
나를 위해 테이블을 예약.
레스토랑의 테이블을 예약.
테이블 예약하기.
저녁 식사를 위한 테이블을 예약하고 싶습니다.
예제를 추가하려면 문장을 입력한 다음 예제 추가를 클릭하세요. 모든 예제를 성공적으로 추가하면 다음 이미지가 표시됩니다.
마찬가지로 다음 예제를 사용하여 운영 시간에 대한 다른 인텐트를 만듭니다.
운영 시간은 어떻게 되나요?
주말에 영업하나요?
일요일에도 영업하나요?
근무 시간은 어떻게 되나요?
레스토랑의 영업 시간은 언제인가요?
결과
지금까지 왓슨 어시스턴트 서비스 인스턴스를 생성하고 어시스턴트에 대화 스킬을 추가하고 두 개의 인텐트를 생성했습니다.
다음 단계로 넘어가겠습니다.
4단계: 엔티티를 생성하고 스킬에 추가하기
이 단계에서는 엔티티를 만들어 스킬에 추가하겠습니다. 하지만 그 전에 엔티티가 무엇이며 챗봇을 구축하는 데 어떻게 사용될 수 있는지 이해해 보겠습니다.
왓슨 어시스턴트에 따르면…
엔티티는 사용자 입력에서 사용자의 목적과 관련된 정보를 나타냅니다.
인텐트가 동사(사용자가 수행하려는 작업)를 나타내는 경우 엔티티는 명사(해당 작업의 대상 또는 해당 작업의 컨텍스트)를 나타냅니다.
예를 들어 일기 예보를 확인하는 것이 인텐트인 경우 애플리케이션이 정확한 예보를 반환하려면 관련 위치 및 날짜 엔티티가 필요합니다.
이 예제에서 사용자는 레스토랑에서 테이블을 예약하려고 합니다.
하지만 테이블을 예약하려면 챗봇은 사용자가 몇 시, 몇 날짜에 테이블을 예약하려는지 알아야 합니다.
여기서 날짜와 시간은 테이블을 예약하는 데 필요한 엔티티입니다.
따라서 대화 스킬에 날짜와 시간이라는 두 개의 엔티티를 추가하겠습니다. 다행히도 이 두 엔티티를 만들 필요는 없습니다.
왓슨 어시스턴트에서 이 두 엔티티는 시스템 엔티티에 미리 정의되어 있습니다.
이 두 엔티티를 사용하도록 설정하기만 하면 됩니다.
이 두 엔티티를 활성화하려면 “Restuarant 스킬”에서 “엔티티”를 클릭합니다.
클릭하면 다음 이미지가 표시됩니다
엔티티 섹션에 내 엔티티와 시스템 엔티티라는 두 가지 옵션이 표시됩니다.
시스템 엔티티를 클릭하고 시스템 날짜 및 시스템 시간 엔티티를 활성화하면 챗봇에서 사용할 수 있습니다.
이제 시스템 날짜 및 시스템 시간 엔티티를 활성화했습니다. 이제 챗봇을 구축하는 데 사용할 수 있습니다.
5단계: 대화 상자 만들기 .
이제 사용자 입력에 대한 응답을 제공하는 대화 상자를 만들겠습니다.
하지만 그 전에 대화 상자가 무엇인지 이해해 봅시다.
왓슨 어시스턴트에 따르면…
Dialog는 논리 트리의 형태로 대화의 흐름을 정의합니다.
이 트리는 의도(사용자가 말하는 내용)와 응답(챗봇이 응답하는 내용)을 일치시킵니다.
트리의 각 노드에는 사용자 입력에 따라 트리를 트리거하는 조건이 있습니다.
Dialog를 만들려면 스킬 메뉴에서 ‘Dilaog’를 클릭하면 다음 이미지가 표시됩니다.
여기에서 자동으로 생성되는 두 개의 대화 상자 노드를 볼 수 있습니다.
- Welcome: 사용자가 어시스턴트와 처음 상호작용할 때 사용자에게 표시되는 인사말이 포함되어 있습니다.
- 기타: 사용자의 입력이 인식되지 않을 때 사용자에게 응답하는 데 사용되는 문구가 포함되어 있습니다.
이제 환영 노드를 클릭하고 어시스턴트 응답 섹션에서 텍스트를 다음과 같이 작성된 텍스트로 바꿉니다. 그리고 질문을 랜덤으로 하기위해 Random을 클릭하고 다음과 같이 텍스트를 입력합니다.
안녕하세요! 저는 레스토랑의 AI 비서입니다. 무엇을 도와드릴까요? 무엇을 도와드릴까요?
사용자가 챗봇과 대화할 때마다 먼저 위에 작성된 메시지를 받게 됩니다.
이제 두 개의 대화 노드가 더 필요합니다. 하나는 운영 시간에 대한 정보를 제공하고 다른 하나는 예약을 할 수 있도록 합니다.
먼저 영업 시간부터 시작하겠습니다.
새 노드를 추가하려면 환영 노드의 오른쪽 상단에 있는 점 3개를 클릭하고 아래의 노드 추가를 클릭합니다.
클릭하면 다음 이미지가 표시됩니다.
이제 새로 생성된 노드에 다음 세부 정보를 입력합니다.
- 노드 이름(Enter node name)을 입력합니다(선택 사항): 운영 시간
- 조건 입력(Enter condition): #hoursOfOperation 입력 후 #운영시간을 클릭합니다.
- 응답 텍스트를 입력합니다(Enter response text): 레스토랑 운영 시간은 평일 오전 10시부터 오후 10시, 주말 오전 10시부터 오후 9시까지입니다
이제 사용자 지정 버튼 옆의 십자 아이콘을 클릭합니다.
이제 사용자가 레스토랑의 영업 시간을 문의할 때마다 영업 시간 노드가 트리거되고 다음과 같은 응답이 표시됩니다:
레스토랑 운영 시간은 평일 오전 10시부터 오후 10시,
주말 오전 10시부터 오후 9시까지입니다
이제 저희가 구축한 챗봇을 사용해 보실 수 있습니다. 오른쪽 상단의 Tryit 을 클릭하고 다음 문장을 입력하세요.
운영 시간이 어떻게 되나요?
다음과 같은 응답이 표시됩니다.
지금까지 영업 시간에 대한 정보를 제공하는 대화 노드를 추가했습니다.
이제 마지막 대화 노드를 추가하여 레스토랑의 테이블을 예약하겠습니다.
새 대화 노드를 추가하려면 영업 시간 노드에서 점 세 개를 클릭하고 위의 추가 노드를 클릭하면 됩니다.
다음과 같은 이미지가 표시됩니다.
이제 새로 생성된 대화 상자 노드에 다음 세부 정보를 입력합니다.
노드 이름을 입력합니다(선택 사항): Make Booking Restaurant 조건 입력: #예약 을 입력합니다.
사용자가 테이블 예약에 대해 문의할 때마다 챗봇이 #예약 인텐트를 인식하고 이 노드가 트리거되도록 인식 조건으로 #예약 인텐트를 입력했습니다.
레스토랑에서 테이블을 예약하려면 챗봇은 사용자에게 몇 가지 질문을 해야 합니다.
- 지점을 선택해주세요
- 날짜는 어느 날짜로 하시겠습니까?
- 시간은 몇시로 예약해 드릴까요?
- 예약인원은 몇명이세요?
이 워크플로를 만들기 위해 슬롯을 사용하겠습니다. 슬롯은 단일 노드 내에서 사용자에게 여러 가지 정보를 요청하고 저장할 수 있는 구조화된 형식을 제공합니다. 특정 작업을 염두에 두고 있고 그 작업을 수행하기 전에 사용자로부터 핵심 정보가 필요할 때 가장 유용합니다.
슬롯을 사용하려면 예약하기 노드의 오른쪽 상단 모서리에 있는 사용자 지정 버튼을 클릭하고 슬롯 스위치를 켜짐으로 설정한 다음 적용을 클릭합니다.
에서 섹션을 확인하고 다음 슬롯을 추가합니다:
@sys-date 확인, 다른 이름으로 저장 - $date, 없는 경우 - 몇 시에 오시겠습니까?
@sys-time 확인, 다른 이름으로 저장 - $시간, 없는 경우 - 몇 시에 예약하시겠습니까?
슬롯을 추가하면 다음과 같은 이미지가 표시됩니다.
이제 어시스턴트 응답 섹션에 다음 텍스트를 입력합니다.
$branch 지점에 $date 에 $time 으로 $guests 명 예약되었습니다.
이제 챗봇이 완성되었습니다.
오른쪽 상단의 Tryit 옵션을 사용하여 사용해 볼 수 있습니다.
댓글남기기