Skip to main content
조건부 엣지는 Agent 흐름 제어의 핵심입니다.

기본 패턴

def router(state):
    if state["intent"] == "search":
        return "retrieve"
    return "respond"

graph.add_conditional_edges("classify", router, {
    "retrieve": "retrieve",
    "respond": "respond",
})

설계 원칙

  • router 반환 문자열과 매핑 키를 동일하게 유지
  • default 경로를 반드시 하나 둠
  • END 경로를 명시적으로 포함

자주 나는 오류

  1. router가 없는 키 반환
  2. 분기 후 END 경로 누락
  3. state 키 오타로 잘못된 라우팅

다음: 워크플로우 패턴

조건부 엣지를 기반으로 라우팅/병렬/오케스트레이터 패턴을 확장합니다.

실무 적용 체크리스트

  • 노드 입출력 State 계약을 문서화했습니다.
  • 조건부 엣지 default/END 경로를 테스트했습니다.
  • recursion_limit/timeout을 설정했습니다.
  • 실패 시 재시도와 중단 규칙을 분리했습니다.

자주 나는 실수

  1. State 키를 일관되게 관리하지 않아 노드 간 충돌이 납니다.
  2. 조건부 라우팅 반환값과 매핑 키가 불일치합니다.
  3. END/재시도 경로를 누락해 무한 루프가 발생합니다.

다음 문서

다음: 도구 호출 에이전트

학습 흐름을 이어서 진행합니다.

라우터 테스트 전략

조건부 엣지는 단위 테스트를 반드시 작성합니다. intent 값별로 어떤 노드로 이동하는지 케이스를 고정하면 회귀를 쉽게 막을 수 있습니다. 또한 예상하지 못한 값이 들어왔을 때 기본 경로로 안전하게 떨어지도록 설계합니다.

테스트 케이스 예시

def test_router_default_path():
    state = {"intent": "unknown"}
    assert router(state) == "respond"
기본 경로 테스트를 추가하면 신규 intent가 들어와도 서비스 중단을 막을 수 있습니다.

운영 권장값

운영 환경에서는 분기 로그를 남기고, 라우터 함수에 버전 태그를 붙여 변경 추적을 권장합니다. 또한 배포 전 샘플 입력 20건 이상으로 분기 정확도를 회귀 테스트합니다.