4장. 대화형 챗봇과 메모리 전략
먼저 큰 그림부터
여행사 상담 창구를 떠올려 보세요. 손님이 "다음 달에 제주도로 2박 3일, 아이 둘이랑 가요"라고 말하면, 상담원은 이 말을 줄글로 받아 적지 않고 상담 카드의 칸(목적지, 박수, 인원, 예산)에 나눠 적습니다. 상담이 이어지면 카드를 손님별 상담 기록철에 끼워 두고, 손님이 다시 오면 그 철을 꺼내 봅니다. 기록이 너무 두꺼워지면 최근 몇 장만 펼쳐 보거나, 앞의 장들을 요약 메모 한 장으로 줄여 맨 앞에 붙입니다. 이 장에서 만드는 여행 비서가 바로 이 상담 창구입니다.
이 장에서는 두 가지를 챙겨 갑니다. 첫째, 모델의 답을 줄글이 아니라 정해 둔 칸(JSON, Pydantic)으로 받는 구조화된 출력입니다. 둘째, 1장에서 본 "기억하지 못하는 LLM"에게 대화 기록을 챙겨 보내는 메모리입니다. 기록을 모두 보내기, 최근 것만 보내기(Window), 앞부분을 요약해 보내기(Summary)의 세 전략을 토큰 수와 "잊어버린 것"으로 견주고, 마지막에 이전 대화를 기억하는 여행 비서를 만듭니다. 3장에서 배운 prompt | model | StrOutputParser() 의 모양을 그대로 이어 씁니다.