28차시. Conditional Edge 이해
4. 다중 분기 설계
출처: 원본 PDF 28차시_ConditionalEdge이해.pdf 11~12쪽 · 쪽 그림 11쪽 12쪽
두 갈래를 넘어 세 갈래, 네 갈래로 나눌 때 주의할 점입니다.
4-1) 조건 순서가 중요합니다
❌ 순서가 잘못된 경우
──────────────────────────────────────
def bad_route(state) -> str:
if state["grade"] == "retry":
return "regenerate" # 여기서 항상 걸림
if state["retries"] >= 2:
return "giveup" # 도달하지 못함!
return "done"
→ grade가 계속 retry면 상한 검사에 영원히 못 갑니다
→ 무한루프✅ 안전장치를 맨 위에
──────────────────────────────────────
def good_route(state) -> str:
if state.get("retries", 0) >= 2: # 1순위
return "giveup"
if state.get("grade") == "pass": # 2순위
return "done"
if state.get("fail_reason") == "low_score":
return "research" # 3순위 (세부)
return "regenerate" # 기본4-2) 조건 순서 정하는 원칙
| 순위 | 유형 | 예시 |
|---|---|---|
| 1 | 안전장치 | 재시도 상한, 오류 발생 |
| 2 | 정상 종료 | grade == "pass" |
| 3 | 구체적 조건 | fail_reason별 세부 처방 |
| 4 | 기본 경로 | 조건 없이 반환 |
⚠️ 분기가 5개를 넘어가면
분기 함수가 길어지고 실수가 늘어납니다.
해결책
① 판단 재료를 노드에서 미리 계산
노드가 "route_hint" 같은 키를 채워두면
분기 함수는 그것만 읽으면 됩니다
② 분기를 두 단계로 나눔
1단계에서 큰 갈래, 2단계에서 세부 갈래
분기 함수는 짧을수록 좋습니다.