1장. 과정 소개와 LLM 의 이해
규칙 챗봇과 LLM 챗봇
고객센터에 전화하면 "환불은 1번, 배송은 2번을 눌러 주세요" 하는 자동응답(ARS, Automatic Response System)을 만납니다. 정해진 번호를 누르면 정해진 안내가 나오지만, 메뉴에 없는 질문에는 답하지 못합니다. 상담원과 통화하면 다릅니다. "다음 주로 미룰 수 있을까요?"처럼 어떻게 물어도 뜻을 알아듣고 답합니다. 앞의 것이 규칙 챗봇이고, 뒤의 것이 LLM 챗봇입니다.
왼쪽 규칙 챗봇은 사람이 적어 둔 낱말을 찾아 미리 써 둔 답을 그대로 돌려줍니다. 오른쪽 LLM 챗봇은 질문의 뜻을 읽고 답을 새로 지어 씁니다. 여기서 ARS 의 번호 메뉴가 규칙이고, 상담원이 LLM 입니다. 비유와 다른 점도 있습니다. 상담원은 모르면 모른다고 하지만, LLM 은 모르는 것도 그럴듯하게 지어낼 때가 있습니다. 이 약점은 "환각과 지식 마감일" 절에서 봅니다.
두 챗봇 견주기
| 견줄 것 | 규칙 챗봇 | LLM 챗봇 |
|---|---|---|
| 답은 어디서 오나 | 사람이 미리 써 둔 답 | 모델이 그때그때 지어 쓴 답 |
| 표현이 바뀌면 | 낱말이 없으면 못 알아듣는다 | 뜻이 같으면 알아듣는다 |
| 틀린 답을 낼 위험 | 적다(써 둔 답만 낸다) | 있다(지어낼 수 있다) |
| 만드는 데 드는 것 | 규칙을 하나하나 적는 시간 | 모델 사용료(API 요금) |
| 어울리는 일 | 메뉴가 몇 개뿐인 안내 | 질문이 다양한 상담 |
짧은 예시
낱말 두 개짜리 규칙으로 챗봇을 만들어 봅니다.
# 의도마다 "이 낱말이 들어 있으면 그 답"이라는 규칙
rules = {"환불": "출발 10일 전까지는 전액 환불됩니다.", "변경": "출발 7일 전까지 한 번 무료로 바꿀 수 있습니다."}
def rule_bot(question):
for word, answer in rules.items():
if word in question: # 질문에 낱말이 들어 있으면
return answer # 써 둔 답을 그대로 돌려준다
return "죄송합니다. 잘 모르겠어요."
print(rule_bot("환불 받을 수 있나요?"))
print(rule_bot("돈 돌려받을 수 있나요?"))출발 10일 전까지는 전액 환불됩니다.
죄송합니다. 잘 모르겠어요.두 질문은 뜻이 같습니다. 그런데 둘째 질문에는 "환불"이라는 낱말이 없어서 규칙 챗봇은 답하지 못합니다. 실습 1에서 손님 질문 20개로 이 한계를 숫자로 확인합니다.
코드가 의미하는 것
이 코드는 ARS 의 번호 메뉴를 파이썬으로 옮긴 것입니다. 메뉴판(rules)을 적어 두고, 손님 말에서 메뉴 이름을 찾고, 찾으면 녹음된 안내를 틀고, 못 찾으면 "잘 모르겠어요"로 끝냅니다.
| 코드 | 하는 일 | 챗봇에서 뜻하는 것 |
|---|---|---|
rules = {"환불": "…", "변경": "…"} | 낱말과 답을 짝지어 둔다 | 챗봇이 아는 것은 사람이 적어 둔 이 두 줄이 전부입니다. 규칙을 늘리려면 사람이 한 줄씩 더 적어야 합니다 |
if word in question | 질문 안에 그 낱말이 글자 그대로 있는지 본다 | 뜻이 아니라 글자를 맞춰 봅니다. "환불"과 "돈 돌려받기"가 같은 뜻이라는 것을 모릅니다 |
return answer | 써 둔 답을 그대로 돌려준다 | 답을 지어내지 않으므로 틀린 말을 할 위험은 없습니다. 대신 늘 같은 말만 합니다 |
return "죄송합니다. 잘 모르겠어요." | 어느 낱말도 못 찾으면 정해 둔 말로 끝낸다 | 규칙 챗봇이 모르는 질문을 만났을 때의 모습입니다. 출력의 둘째 줄이 바로 이 경우입니다 |
결과에서 읽을 것은 두 가지입니다.
- 같은 뜻, 다른 결과. 두 질문은 뜻이 같은데 첫째만 답을 받았습니다. 규칙 챗봇의 실력은 "손님이 어떤 낱말을 쓰느냐"에 달려 있습니다.
- 틀리지는 않지만 놓칩니다. 규칙 챗봇은 엉뚱한 답을 지어내지 않는 대신, 표현이 조금만 달라도 답을 놓칩니다. 앞의 "두 챗봇 견주기" 표에서 "표현이 바뀌면"과 "틀린 답을 낼 위험" 두 줄이 이 출력 두 줄에 그대로 나타났습니다.
주의할 점
- 규칙 챗봇이 나쁜 것은 아닙니다. 답이 반드시 정확해야 하고 질문이 몇 가지뿐이라면 규칙이 더 안전합니다.
- 실제 서비스는 둘을 섞어 쓰기도 합니다. 환불 규정처럼 틀리면 안 되는 내용은 정해진 글을 쓰고, 나머지 대화는 LLM 에 맡기는 식입니다.