"우리도 AI 도입해 보자"는 과제를 받은 기획자(3)

멀티턴을 알아봅시다

by 피넛


고객센터용 상담 챗봇을 만든다는 가정으로,

AI 서비스 개발에 대한 이해를 하나씩 해 나가고 있다.


일반적인 상담의 흐름을 생각해 보자.

예를 들어 내가 온라인 쇼핑몰에서 물건을 주문했는데 아직 배송이 안 오는 상황이라고 치자.

(실제로도 온라인 쇼핑몰의 대부분의 문의는 배송문의다)


나: 문의드릴 게 있는데요.

고객센터: 네, 고객님. 본인 확인을 위해 성함과 휴대폰 번호 뒷자리 4자리를 알려주실 수 있을까요?

나: 김피넛, 1234입니다.

고객센터: 확인 감사합니다. 어떤 문의 도와드릴까요?

나: 어제 주문한 게 아직 배송이 안 왔어요.

고객센터: 어제 주문하신 블랙 240 사이즈 신발 상품 말씀하시는 게 맞을까요?

나: 네, 맞아요.

고객센터: 해당 상품은 현재 배송 중이며 내일 오후 도착 예정으로 확인됩니다, 고객님.

나: 혹시 내일 오전에 받을 수 있을까요?

고객센터: 죄송하지만 오전 지정은 불가능하고, 오후 2~6시로 사이로 지정 배송은 변경 가능합니다. 변경해 드릴까요?

...


이런 식이다.

이 대화의 특징은 무엇일까?


대화가 한 번에 끝나지 않는고 여러 차례 주고받는다.

고객과 상담사의 대화가 핑-퐁-한다. 티키타카가 된다는 것이 특징이다.

바로, 오늘 배울 멀티턴(Multi-turn) 대화의 핵심이다.







사람과 티키타카를 해줘, AI!!!!




우리(?)가 생각하는 이상적인 대화(?)는 이렇다.


고객: 저는 김피넛, 전화번호 뒷자리는 1234인데요. 어제 주문한 검정색 240 사이즈 신발이 아직 안 왔는데, 혹시 지금 배송중이라면 내일 오전에 받을 수 있는지 알려주시고 안되면 언제 오는지만 알려주세요.

고객센터: 네, 고객님, 본인확인 되셨구요. 말씀하신 신발은 현재 배송중이고 내일 오후 배송됩니다. 안녕히 가세요.

-끝-


하하하하하...!!!! 개발하기 쉬운 버전.

실제로 이렇게 상담이 이뤄지는 경우는 거의 없다.

만약 이런 상담 대화를 봤다면 제보를 부탁드린다.

이것이 바로 싱글턴(single-turn)이다.

싱글턴은 질문 하나에 답변 하나로 끝나는 대화이다. 추가로 이어지는 대화는 없다.


AI가 나오기 전, 시나리오 기반의 챗봇이 대부분 싱글턴 구조였다.

정해진 질문과 답변을 미리 작성해 두고, 키워드에 매칭되는 단발성 답변을 하는 것.

대화의 맥락과 관계는 없다. 질문하면 -> 답변한다. (끝)

이게 싱글턴이다. 싱글턴은 AI까지 갈 필요도 없다.


하지만 앞에서 본 대화 예시처럼,

일반적인 상담은 한번에 끝나는 경우가… 거의 없다.

(안타깝다! 그러나 그것이 현실)


이런 대화가 이어질 수 있도록 하는 게 AI의 역할이다.

AI는 이전 대화의 맥락을 이해하고 티키타카가 가능하도록 처리할 수 있다.

오늘은 AI가 멀티턴을 어떻게 처리하는지, 그리고 이 과정에서 기획자가 어떤 역할을 해야 하는지 정리를 해보려고 한다.



기계는 1과 0밖에 모른다(바보)

그런데 이런 1과 0밖에 모르는 기계가 사람의 말을 이해할 수 있어야 한다.

개발의 세계에서는 사람의 말을 '자연어(Natural Language)'라고 부른다고 한다. (왜인지는 모름. 사람이 사는 세계를 자연계라고 하고 기계가 사는 세계는 디지털계라고 나누나 보지? 약간 판타지스럽기도 한데... 개발자들은 기계 세상과 실제 세상을 분리해서 말하는 특징이 있는 듯하다... 그냥 특징으로 알아두자)

이런 자연어(=사람의 언어)를 컴퓨터가 이해할 수 있도록 해석하는 과정을 NLU(Natural Language Understanding)라고 부른다고 한다.


고객이 "어제 주문한 게 아직 배송이 안 왔어요."라고 하면 여러 가지로 이해할 수 있다. 정말 배송이 어디까지 왔는지 배송문의를 하는 건지, 너무 늦어지고 있으니까 취소를 하고 싶다는 건지 기계는 모른다. 이것을 사람이 분류해줘야 한다.


이 NLU 처리에서 필요한 것이 3가지가 있다.

1. 의도(Intent)

2. 슬롯(Slot)

3. 컨텍스트(Context)



1. 의도(Intent)

의도란, 고객의 질문 의도.. 목적을 파악하는 것이다.

"내일 배송 가능한가요?" -> 이건 배송 문의다.

"주문 취소하고 싶은데요" -> 이건 취소 문의다.

"반품하려면 어떻게 해야 하나요?" -> 이건 반품 문의다.

이렇게 고객이 무엇을 원하는지 AI가 구분할 수 있어야 한다.

기획자는.. 고객들의 대표적인 문의들을 구분해서, 유형을 나눠줘야 한다.

(보통은 문의 카테고리가 구분되어 있을 거라 여기는 크게 어렵지 않을 듯하다)



2. 슬롯(Slot)

슬롯이란, 고객의 의도를 해결하기 위한 조건들이다.

"어제 주문한 상품 취소해 주실 수 있을까요?" -> 이 취소 문의에 답변을 하려면 -> 어떤 주문 상품인지, 수량은 몇 개인지, 사이즈가 뭐였는지를 알아야 한다.


고객이 "주문 취소하고 싶어요.“ 라고 문의하면 이제 AI는 슬롯을 채워야 한다.

"고객님 어떤 어떤 상품 취소하시겠어요?"

"블랙 240 상품 1개 취소해드리면 될까요?" 이런 식으로 슬롯이 다 채워질 때까지 티키타카를 하게 된다.


다른 예시로 배송문의를 처리하기 위해서는 주문번호, 상품명, 사이즈 색상, 배송시간... 과 같은 슬롯이 채워져야 한다. 와 같이 기획자가 정의를 해줘야 하는 것이다.



3. 컨텍스트(Context)

컨텍스트란, 이전 대화에서 기억하는 정보다.

예를 들면 이전 대화에서 고객정보, 본인확인 여부, 주문했던 상품, 마지막 질문, 고객의 의도.. 같은 것들을 저장해 두어야만 다시 문의를 뺑뺑이 돌지 않고 다름 단계의 대화로 넘어갈 수 있다.

고객이 "어제 주문한 게 아직 안 왔어요"라고 하면 컨텍스트에 "주문날짜 = 어제"를 기억한다.

고객이 상품 정보를 알려주면 컨텍스트를 "블랙 240 사이즈 신발 1개"를 업데이트해준다.



지금 배운 의도, 슬롯, 컨텍스트 개념을 실제 코드로 어떻게 적용하는지 예시도 다음과 같이 적어보았다.


# 초기 컨텍스트
context = {
"user_name": "김피넛",
"product": None,
"order_date": None}
# 사용자 발화
user_utterance = "어제 주문한 신발이 아직 안 왔어요."
# NLU 처리 (의도/슬롯 추출)
intent = "배송문의" # 고객 목표
slots = { "order_date": "어제" # 필요한 정보}
# 컨텍스트 업데이트
context.update(slots)
# AI가 다음 행동 결정
if context["product"] is None:
response = "어떤 상품을 주문하셨나요?"
else:
response = f"{context['product']}은 현재 배송 중입니다."
print("챗봇:", response)



이전 대화를 바탕으로 컨텍스트 정보를 저장하고 있다가,

고객이 질문하면 질문 의도와 슬롯을 확인하고, 비워져 있는 슬롯을 채우기 위해 다시 질문을 한다.

는 것이 핵심이다.


여기서 기획자는 각 의도와 의도별로 채워야 할 슬롯, 저장할 컨텍스트들을 정의해야 한다.

추가로 체크해야 할 항목들도 있는데,

- 몇 턴까지 이전 대화를 기억할 것인지 결정해야 한다.

- 새로운 주제로 넘어간 것을 어떻게 판단한고 언제 새로운 대화로 초기화할지 정해야 한다.

- 고객이 상담 채팅방에 들어왔을 때 이전 대화를 이어갈지, 새로 시작할지 정해야 한다.

- 이전 대화를 모두 저장할지, 요약해서 저장할지 정할 수도 있다.

- 너무나 당연한(?) 예외처리도 정리해야 한다. 예상치 못한 질문이나 슬롯값에 오류가 되었거나 누락되면 어떻게 처리할지 정리해야 하는 것도 기획자의 몫이다.



이럴 수가.

아니.. AI는 만능 아니었어..?

왜 이렇게 기획자가 정리해줘야 할 게 많은 걸까..

그냥 물어보면 답변이 뚝딱 나오는 게 아니었다.


여기까지 알게 되니 "우리도 AI 서비스나 만들어볼까" 하고 가볍게 말한 사람 찾아가서 뒤통수를 한 대 때려주고 싶은 기분이 들기도 한다.

기획자가 설계할게 벌써 이렇게나 많다. 알아서 척척! 잘 이해하고 뚝딱! 인 AI가 아니라. 사람이 한 땀 한 땀 만들어 나가는 거구나.. 손이 많이 가는 AI의 실체를 조금씩 느끼고 있다.



아직도 알아가야 할 게 많지만,

오늘도 여기까지만 해야겠다.

너무 졸리다.


다음 편에서는 쉬어가는 차원에서 스트리밍에 대해서 정리해 볼까?

다른 기획자들은 AI.. 어떻게 공부하는지 궁금하기도 하다.

일단은 눈을 붙이고.. 다음 편에 계속해보겠다.




매거진의 이전글"우리도 AI 도입해 보자"는 과제를 받은 기획자(2)