day1_practice/limits.pyday1_practice/messages_role.pyday1_practice/multiturn_manual.pyday1_practice/multiturn_history.py

멀티턴: 지난 대화를 매번 다시 보내기

모델은 상태가 없는 함수입니다. 방금 한 말도 서버에 남지 않습니다. 대화가 이어지는 것처럼 보이는 까닭은 우리 코드가 지난 대화를 모아 매번 통째로 다시 보내기 때문입니다. 리스트를 직접 들고 다니는 방식(multiturn_manual.py)과 세션별로 맡기는 방식(multiturn_history.py)을 차례로 따라가고, 5일차의 체크포인터로 이어지는 지점을 짚습니다. 모델의 답과 토큰 수는 실행마다 달라서 보라색 자리 표시로만 보여 줍니다.

한눈에 보는 구조

chat_history 우리 코드가 들고 있는 리스트 매 턴 통째로 전송 Human ① 이름 소개 AI ① 인사 답 Human ② 이름 질문 AI ② 이름을 답함 invoke(전체) AIMessage 기록 + 새 질문 저장 모델 상태 없음 받은 메시지만 보고 답함 RunnableWithMessageHistory session_id → get_session_history() _store (dict) 'user_123' → 기록 객체 'user_456' → 기록 객체 5일차: thread_id + 체크포인터

왼쪽은 우리 코드가 들고 있는 대화 기록, 가운데는 상태가 없는 모델, 오른쪽은 세션 ID 별로 기록을 나눠 맡기는 RunnableWithMessageHistory 입니다. 어느 방식이든 모델에게 가는 것은 '지난 기록 + 새 질문' 전체입니다.

그 시점의 데이터

이 시점에 모델에게 가는 대화와 저장된 기록

터미널 출력

보라색 칸은 실행마다 달라지는 자리

이 단계에서 일어나는 일

함정과 주의

관련 파일