21차시. 첫 번째 LangGraph 실습
8. 그래프 디버깅 4가지 기법
출처: 원본 PDF 21차시_첫번째LangGraph실습.pdf 15~16쪽 · 쪽 그림 15쪽 16쪽
8-1) ① stream으로 경로 추적
어느 노드까지 갔다가 멈췄는지 즉시 보입니다.
가장 먼저 써야 할 도구입니다.
8-2) ② 노드 안에서 State 출력
def retrieve(state):
print(f"[retrieve] 입력 State: {state}")
result = {...}
print(f"[retrieve] 반환: {result}")
return result8-3) ③ 판단 함수에서 판단 근거 출력
def route_verify(state) -> str:
r = state["retries"]
g = state["grade"]
if r >= MAX_RETRY:
print(f" [route] retries={r} → giveup")
return "giveup"
if g == "pass":
print(f" [route] grade={g} → done")
return "done"
print(f" [route] retries={r} grade={g} → retry")
return "retry"⚠️ 분기가 이상할 때는 여기부터 보세요
"왜 계속 fallback으로만 가지?"
판단 함수에서 실제 State 값을 출력해보면
대개 예상과 다른 값이 들어 있습니다.
· 키 이름 오타로 항상 기본값이 나오거나
· 이전 노드가 그 키를 안 채웠거나
8-4) ④ 로그 키로 경로 기록
출처: 원본 PDF 16쪽
print(" → ".join(result["log"]))
→ 검색 3건 → 생성(부실한) → 검증 실패 → 재시도 1 → ...Reducer로 누적한 log를 이어 붙이면
어떤 경로로 갔는지 한 줄로 요약됩니다.
운영 환경에서는 print를 못 쓰므로
이 방식이 특히 유용합니다.