Skip to main content
단기 메모리는 현재 대화 스레드의 문맥을 유지합니다. 핵심 키는 thread_id입니다.

기본 패턴

config = {"configurable": {"thread_id": "tenant-a:user-100:session-01"}}

agent.invoke(
    {"messages": [{"role": "user", "content": "내 이름은 지민"}]},
    config=config,
)

agent.invoke(
    {"messages": [{"role": "user", "content": "내 이름 뭐야?"}]},
    config=config,
)
같은 thread_id를 쓰면 이전 대화가 이어집니다.

thread_id 설계 규칙

  • 권장 포맷: tenant:user:session
  • 사용자 전환 시 새 session 발급
  • 고객사 분리(멀티테넌트)는 tenant를 최상위로 유지

컨텍스트 길이 관리

  1. 최근 N턴만 유지
  2. 오래된 이력은 요약 치환
  3. 긴 도구 출력은 핵심 필드만 보존

자주 나는 문제

  • 동일 thread_id를 재사용해 사용자 문맥이 섞임
  • 대화가 길어져 모델 응답 품질 하락
  • tool 결과 원문 누적으로 토큰 비용 급증

다음: 장기 메모리

세션 간 기억을 유지하는 설계로 확장합니다.

실무 적용 체크리스트

  • thread_id 규칙을 문서화했습니다.
  • 장기 저장 승격 기준과 TTL을 정의했습니다.
  • 요약/트리밍 정책을 테스트했습니다.
  • PII 마스킹 후 저장하도록 검증했습니다.

자주 나는 실수

  1. thread_id 경계를 정의하지 않아 사용자 문맥이 섞입니다.
  2. 장기 메모리에 임시 데이터를 저장해 조회 품질이 떨어집니다.
  3. 요약/TTL 정책이 없어 컨텍스트 비용이 급증합니다.

다음 문서

다음: LangChain 장기 메모리

학습 흐름을 이어서 진행합니다.

세션 경계 운영 팁

같은 사용자라도 작업 목적이 다르면 새 session을 발급합니다. 예를 들어 상담 세션과 리포트 작성 세션을 분리하면 문맥 오염을 크게 줄일 수 있습니다. 대화가 길어질 때는 최근 N턴 + 요약 1개를 유지하는 정책이 가장 안정적입니다.