TL;DR
이 글은 LLM이 호출 사이에 사용자의 대화 내용을 자동으로 보존하지 않으며, 모델 가중치에 담긴 지식과 특정 대화를 기억하는 능력을 구분해야 한다고 설명합니다. 이전 대화를 다시 입력하면 모델은 그 기록을 바탕으로 답하지만, 전체 기록을 계속 전달하면 입력 비용과 지연이 늘고 컨텍스트 한도에 도달할 수 있습니다. 이를 줄이기 위해 최근 메시지만 남기거나 불필요한 내용을 제거하고 오래된 대화를 요약해 작은 형태의 대화 상태로 바꿉니다. 따라서 애플리케이션의 핵심 과제는 메모리를 모델에 기대는 것이 아니라 중요한 정보를 잃지 않으면서 입력 기록을 압축하는 데 있습니다.
실용적 조언
- 대화 호출을 설계할 때 모델이 이전 요청을 자동으로 기억한다고 가정하지 말고, 필요한 messages를 매번 입력에 포함해야 합니다. 먼저 전체 기록을 전달하는 구조로 동작을 확인한 뒤 메시지 수와 토큰 증가를 측정하는 순서가 안전합니다. 이 구조를 알아야 새 창이나 새 세션에서 기록이 사라지는 현상을 모델 오류와 구분할 수 있습니다.
- 대화가 길어지면 최근 메시지 보존, 불필요한 메시지 제거, 오래된 턴 요약을 각각 적용해 입력 크기를 줄일 수 있습니다. `trim_messages(messages, max_tokens=100, strategy="last")`처럼 최대 토큰과 보존 전략을 명시하면 처리 기준을 코드에 고정할 수 있습니다. 요약 분기는 글의 예시처럼 메시지 수가 6개를 넘는 조건에서 실행할 수 있지만, 실제 기준은 애플리케이션의 컨텍스트 한도와 보존해야 할 정보에 맞춰 정해야 합니다.
섹션별 상세
llm.invoke("What's my name?") # → "I don't know."이전 대화 기록을 입력하지 않은 호출에서는 모델이 사용자의 이름을 알 수 없음을 보여주는 예시입니다.
messages = [HumanMessage("My name is Wang"), AIMessage("Hi Wang!"), HumanMessage("What's my name?")]
llm.invoke(messages) # → "Your name is Wang."사용자 발화와 이전 AI 응답을 포함한 전체 메시지 목록을 다시 입력하면 모델이 이름을 답할 수 있음을 보여줍니다.
trim_messages(messages, max_tokens=100, strategy="last")대화 기록에서 최근 메시지를 중심으로 남겨 입력 토큰을 제한하는 처리 예시입니다.
def should_continue(state):
if len(state["messages"]) > 6: return "summarize"
return END메시지가 6개를 넘으면 요약 단계로 보내고, 그렇지 않으면 흐름을 종료하는 분기 예시입니다.
용어 해설
- 파라메트릭 메모리(Parametric Memory)
- — 모델이 학습 과정에서 가중치에 흡수한 지식입니다. 예를 들어 ‘Paris is the capital of France’처럼 별도 대화 기록을 입력하지 않아도 답변에 활용할 수 있는 사실을 가리킵니다. 개별 사용자와의 대화 내용을 저장하는 기능은 아닙니다.
- 에피소드 메모리(Episodic Memory)
- — 특정 사건이나 대화 내용을 기억하는 능력으로, 이 글에서는 사용자가 방금 자신의 이름을 말했다는 사실을 가리킵니다. LLM 호출 사이에 자동으로 유지되는 정보가 아니라 이전 대화 기록을 다시 입력해야 활용할 수 있습니다.
- 컨텍스트 한도(Context Limit)
- — 한 번의 LLM 호출에서 모델이 처리할 수 있는 입력과 출력 토큰의 범위입니다. 전체 대화 기록을 매번 다시 전달하면 기록이 길어질수록 비용과 지연이 커지고, 결국 이 한도를 초과해 일부 정보를 처리하지 못할 수 있습니다.
- 메시지 트리밍(Message Trimming)
- — 대화 기록에서 최근 메시지만 남겨 입력 크기를 줄이는 처리 방식입니다. 글에서는 trim_messages와 max_tokens=100, strategy="last"를 사용해 오래된 메시지를 제거하는 예를 들며, 컨텍스트 한도 초과를 막는 방법으로 활용합니다.
- 대화 요약(Summarization)
- — 여러 대화 턴을 핵심 사실을 담은 짧은 문장으로 압축하는 방식입니다. 예를 들어 사용자의 이름과 문의 주제를 한 줄로 남기면 전체 기록보다 적은 토큰으로 대화의 중요한 상태를 유지할 수 있습니다.
언급된 도구
대화 기록에서 최근 메시지를 남겨 입력 토큰을 줄이는 함수입니다. `max_tokens=100`으로 허용 범위를 정하고 `strategy="last"`로 마지막 메시지를 보존하는 예시가 제시됩니다. 전체 기록을 계속 전달할 때 커지는 비용과 컨텍스트 한도 문제를 완화하는 데 사용됩니다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.