from langchain_core.messages import HumanMessage# 대화 1: 사용자 Aconfig_a = {"configurable": {"thread_id": "user-a-session-1"}}app.invoke( {"messages": [HumanMessage(content="안녕, 나는 민수야")]}, config=config_a,)app.invoke( {"messages": [HumanMessage(content="내 이름이 뭐였지?")]}, config=config_a,)# → "민수"라고 답변 (같은 thread_id이므로 이전 대화 기억)# 대화 2: 사용자 B (독립된 세션)config_b = {"configurable": {"thread_id": "user-b-session-1"}}app.invoke( {"messages": [HumanMessage(content="내 이름이 뭐였지?")]}, config=config_b,)# → 모름 (다른 thread_id이므로 이전 대화 없음)
장시간 실행되는 워크플로우에서도 중단과 재개가 가능합니다.체크포인터가 매 노드 실행 후 상태를 저장하므로, 서버 재시작이나 장애 발생 시에도 마지막 체크포인트에서 실행을 재개할 수 있습니다.
# 서버 재시작 후 실행 재개config = {"configurable": {"thread_id": "long-running-task"}}# 마지막 저장된 상태 확인state = app.get_state(config)if state.next: # 아직 완료되지 않은 작업이 있음 # 마지막 체크포인트에서 재개 result = app.invoke(None, config=config)
프로덕션 체크리스트: 1) PostgresSaver 사용, 2) 의미 있는 thread_id 체계 설계 (예: user-{id}-session-{n}), 3) 오래된 체크포인트 정기 삭제.