RAG2026-5일28차시 · Conditional Edge 이해7 / 17← 이전목차다음 →MetaContents

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단계에서 세부 갈래
분기 함수는 짧을수록 좋습니다.

← 이전 절28차시 · 3. 무엇을 기준으로 나눌까?다음 절 →28차시 · 5. 질문 유형 라우팅 개념