18차시. State 이해
3. State의 동작 규칙 4가지
출처: 원본 PDF 18차시_State이해.pdf 7~8쪽 · 쪽 그림 7쪽 8쪽
이 네 가지만 알면 State 관련 버그의 대부분이 사라집니다.
3-1) 규칙 ① — 하나의 딕셔너리다
State는 그래프 실행 내내 살아 있는 딕셔너리 하나입니다.
노드를 지날 때마다 내용이 채워집니다.
실행이 끝나면 최종 State가 결과로 나옵니다.
3-2) 규칙 ② — 바꾼 키만 반환한다
❌ 나쁜 예 — State 전체를 반환
─────────────────────────────────
def retrieve(state):
state["documents"] = search(state["query"])
return state # 전체를 돌려줌
→ 다른 키까지 덮어쓸 위험이 있습니다
→ 무엇을 바꿨는지 코드만 봐서는 모릅니다✅ 좋은 예 — 바꾼 키만 반환
─────────────────────────────────
def retrieve(state):
docs = search(state["query"])
return {"documents": docs} # 이것만 돌려줌
→ 반환하지 않은 키는 이전 값이 그대로 유지됩니다
→ 이 노드가 무엇을 만드는지 한눈에 보입니다🎯 "반환하지 않으면 유지된다"
이게 핵심입니다.
retrieve가 documents만 반환해도
question, query 같은 다른 값은 사라지지 않습니다.
LangGraph가 알아서 기존 State에 덮어씌워 줍니다.
그래서 노드는 자기 일만 신경 쓰면 됩니다.
3-3) 규칙 ③ — 기본은 덮어쓰기다
출처: 원본 PDF 8쪽
노드 A가 반환 : {"answer": "첫 번째 답변"}
노드 B가 반환 : {"answer": "두 번째 답변"}
최종 State : {"answer": "두 번째 답변"}
↑ 앞의 값은 사라집니다3-4) 규칙 ④ — 스키마로 미리 선언한다
출처: 원본 PDF 8쪽
TypedDict로 어떤 키가 있는지 먼저 선언합니다.
· 오타를 줄여줍니다 (documnets 같은 실수)
· 편집기가 자동완성을 도와줍니다
· 팀원이 State 구조를 바로 파악합니다