자습서

이 자습서에서는 AEI Studio를 통해 인사말에 응답하고 사용자의 이름을 묻는 봇을 만들어보도록 하겠습니다. 이 간단한 봇을 만들어보는 과정에서 우리는 스킬의 필수 개념들인 인텐트, 엔티티, 슬롯, 스토리에 대해 익히게 됩니다.

아직 AEI Studio의 계정을 만들지 않았다면 지금 AEI Studio 콘솔로 이동하여 계정을 만들어주세요.

우리는 아래와 같이 대화를 할 수 있는 봇을 만들 예정입니다.

대화 1: 처음 인사하기

- 사용자: 안녕
- 봇: 안녕하세요! 이름이 어떻게 되시죠?
- 사용자: 내 이름은 홍길동이에요
- 봇: 만나서 반가워요, 홍길동님

대화 2: 다시 인사하기

- 사용자: 안녕하세요
- 봇: 안녕하세요 홍길동님!

스킬 생성하기

첫 번째 단계는 콘솔 홈페이지의 스킬 페이지에서 스킬 추가를 클릭하여 스킬을 생성하는 것입니다. 이름과 스킬에 대한 간단한 설명을 넣으시고 스킬의 특성에 따라 적절한 아이콘과 카테고리를 선택하여 주세요. 언어는 한국어를 사용합니다.

스킬을 생성되고 나면 입력 탭으로 이동하여 인텐트와 엔티티를 생성합니다.

인텐트

위의 대화 예문들을 바탕으로 우리는 사용자가 봇에게 아래의 두가지를 말하게 될 것이라 예상할 수 있습니다.

  • 인사하기
  • 이름 말하기

우리는 이 두가지를 각각 인텐트로 추가할 것입니다.

첫 번째 의도를 만들기 위해, 전용 인텐트의 오른쪽 끝에 있는 생성 버튼을 클릭하세요. 이름에 인사하기라고 넣고 아래처럼 다양한 인사 예시 문장을 넣어주세요.

인사하기의 다른 예시들을 넣고 싶으시다면 얼마든지 추가해주세요!

이번에는 우리는 이름 말하기라는 두 번째 인텐트를 만들고, 아래처럼 이름이 어떻게 되시죠?라는 질문에 대해 사용자가 답할 수 있는 예시 문장들을 추가해줍니다.

이제 우리는 우리가 추가한 두가지 인텐트가 잘 인식되는지 테스트 할 수 있습니다. 화면 오른쪽의 테스트를 클릭하여 테스트 문장을 넣으면 봇이 인텐트를 정확히 찾는지를 확인할 수 있습니다. 나는 제프리라고 해를 입력해보세요. 예시로 추가된 문장들과 정확히 일치하지는 않지만 충분히 유사한 문장으로 이름 말하기 인텐트가 잘 인식되는 것을 알 수 있습니다.

엔티티

위의 테스트 예를 유심히 보셨다면 인식된 엔티티 없음을 발견하셨을 것입니다. 사실 이건 우리가 기대하는 바람직한 결과는 아닙니다. 엔티티는 봇이 사용자의 입력으로부터 재사용 가능한 키워드를 의미하며 여기에서는 제프리가 엔티티로 추출되어야 하는 값이라고 할 수 있습니다. 이를 위해 우리는 봇에게 엔티티를 인식하는 방법을 가르쳐야 합니다.

이름 말하기 인텐트를 다시 열어주세요. 그리고 첫번째 예시 문장의 이름(마돈나)을 선택하시면 보이는 팝업 메뉴에서 엔티티 이름을 입력하세요를 클릭하시고 이름을 넣어주세요. 마돈나가 추가된 이름 엔티티의 색상으로 태그된 것을 확인할 수 있습니다. 아래처럼 다른 예시 문장들의 이름을 선택하여 이미 추가된 이름을 클릭하여 태그해주세요.

이제 다시 테스트를 해보시면 드디어 제프리이름 엔티티로 잘 인식된 것을 확인할 수 있습니다!

봇이 이름을 좀더 잘 인식하게 만들고 싶으시면 엔티티 리스트의 이름을 선택하여 여러 개의 값 추가를 이용하면 최대한 다양한 이름들의 리스트를 한번에 추가할 수 있습니다. 시대별 흔한 이름 등으로 검색해보시면 손쉽게 다양한 이름들의 리스트를 얻을 수 있습니다.

엔티티에 다양한 값들이 주어지면 봇이 이를 활용하여 더 많은 예제들을 자동으로 생성하여 학습하게 되므로 정확도를 향상시키는 효과를 볼 수 있습니다.

슬롯

봇이 이름 엔티티를 추출하면 우리는 추출된 정보를 재사용하기 위해 슬롯에 저장하여야 합니다. 이는, 슬롯에 저장된 값은 슬롯 설정에 의해 원하는 시간 동안 유지가 가능하며 이를 응답에서 사용할 수 있기 때문입니다.

슬롯 탭으로 가서 전용 슬롯의 오른쪽 끝에 있는 생성 버튼을 클릭해주세요. 우리는 이름 항목에는 이름을, 타입은 기본 타입인 텍스트로, 수명은 평생으로 설정해주세요. 이렇게 우리는 사용자가 봇에게 알려준 이름을 평생 기억할 수 있게 됩니다.

엔티티를 슬롯에 저장하는 단계는 아래 스토리에서 진행하도록 합니다.

응답

응답 탭에서 우리는 봇이 사용자에게 답변해야 하는 모든 문장을 넣어주게 됩니다. 위의 대화 예문에 따르면 아래 세가지 응답이 거기에 해당합니다.

  • 안녕하세요! 이름이 어떻게 되시죠?
  • 만나서 반가워요, 이름
  • 안녕하세요 이름님!

여기서 이름은 우리가 좀전에 생성한 슬롯입니다. 슬롯을 응답에 넣으시려면, 응답 입력란의 오른쪽에 있는 슬롯 메뉴에서 이름을 선택해주세요.

응답 리스트는 다음과 같이 구성되어야 합니다.

스토리

스토리는 스킬 구성에서 가장 핵심적인 부분이라고 할 수 있습니다. 왜냐하면 마침내 여기서 우리가 이제까지 위에서 준비한 인텐트, 엔티티, 슬롯을 서로 연결시키기 때문입니다. 우리가 만드는 스킬에서는 아래의 세가지 시나리오가 필요합니다.

  1. 사용자가 “안녕”이라고 말했을 때, 만일 이름을 모르면 이름을 물어본다.
  2. 사용자가 “안녕”이라고 말했을 때, 만일 이름을 알면 이름과 함께 인사를 한다.
  3. 사용자가 이름을 말하면, 이름을 저장하고 “만나서 반가워요”라고 말한다.

자, 그럼 스토리를 생성해보기로 합니다. 우리는 이 스토리를 인사하기라고 부르도록 하겠습니다.

  • 시작 조건으로 인사하기 인텐트를 선택합니다.
  • 그러면 다음에 들어갈 영향으로 체크하기를 선택합니다. 이를 통해 우리는 슬롯 값에 따라 각각 다른 동작을 하도록 시나리오 구성을 할 수 있습니다. 이름 슬롯을 선택해주세요.
  • 첫 번째 만일 조건에 이 없음을 선택하고 나서 그러면 다음에 들어갈 영향으로 응답하기를 선택한 후, 이미 만들어둔 “안녕하세요! 이름이 어떻게 되시죠?” 응답을 선택해주세요. 슬롯에 저장된 값이 없는 경우 봇은 이와 같이 응답하게 됩니다.
  • 두 번째 만일 조건에는 이 있음을 선택하고 나서 그러면 다음에 들어갈 영향으로 응답하기를 선택한 후, 이미 만들어둔 “안녕하세요 이름님!” 응답을 선택해주세요. 슬롯에 저장된 값이 있는 경우 봇은 이와 같이 응답하게 됩니다.

방금 생성한 스토리가 아래처럼 구성되었는지 확인하세요.

이번에는 같은 스토리 내에 새로운 스토리 파트를 생성합니다. 이는 우리가 만든 스토리 다음에 무언가가 발생할 것을 예상한다는 의미입니다.

  • 시작 조건으로 이름 말하기 인텐트를 선택합니다. 그리고 필수포함 항목에 이름 엔티티를 선택합니다.
  • 그러면 다음에 들어갈 영향으로 저장하기를 선택합니다. 그리고 각각 이름 엔티티와 이름 슬롯을 선택해주세요.
  • 위의 그러면 문단 끝에 마우스를 갖다대면 보이는 + 버튼을 클릭하여 그러면을 새로 추가한 후, 영향으로 응답하기를 선택하고 이미 만들어둔 “반갑습니다, 이름님” 응답을 선택해주세요.

완성된 스토리가 아래처럼 구성되었는지 확인하세요.

이것으로 스킬 생성이 모두 완료되었습니다! 다음 섹션에서는 해당 스킬을 이용하여 봇을 만들고 스킬을 테스트 하는 방법을 보여드리겠습니다. 하지만 그 전에 반드시 해야하는 마지막 절차가 남아있습니다. 바로 스킬을 발행하는 것입니다. 버전 탭으로 이동하여 발행을 클릭하여 스킬 버전을 생성해주세요.

봇 생성하기

봇 메뉴로 이동하여 새로운 봇을 만드세요. 이는 아래의 두 단계를 통해 진행됩니다.

  • 봇의 기본 정보를 설정 : 이름, 아바타 등. 풀백 메시지는 봇이 사용자의 말을 이해하지 못했을 때 내보내는 응답입니다. (인텐트 인식 실패 시나 해당 인텐트에 대응되는 스토리를 찾지 못했을 때)
  • 스킬 선택 : 봇의 두뇌에 해당되는 스킬(들)을 선택하는 단계로 여기서는 좀 전에 생성한 스킬을 선택하도록 합니다.

봇이 생성되면 화면 오른쪽 하단에 시뮬레이터 버튼이 나타납니다. 이 버튼을 클릭하고 대화창을 열어 “안녕”이라고 입력해보세요!

아래처럼 대화가 진행되는지 확인하세요.

축하합니다, 첫 번째 봇을 만드셨군요!

다음 단계

  • 봇이 더 많은 표현과 이름을 이해하도록 인텐트와 엔티티 안의 예시 문장들과 값들을 추가해보세요.
  • 위의 시나리오가 잘 동작하면 이제 잘 지내요?, 안녕히가세요 같은 또 다른 인텐트와 그에 대응되는 스토리를 추가해보세요.
  • 봇 메뉴에서 외부연결 탭을 확인해주세요. 봇을 슬랙이나 텔레그램과 연동할 수 있고 심지어는 원하는 웹사이트에 게시할 수도 있습니다.
  • 사용설명서를 참고하시면 보다 복잡한 대화를 처리할 수 있는 고급 기능들을 확인하실 수 있습니다.
  • 다른 사용자들이 공유한 공개 스킬을 살펴보세요. 다른 사람들은 어떤식으로 스킬을 구성했는지 볼 수 있습니다.