20차시. Edge 이해
8. Edge 문법 정리
출처: 원본 PDF 20차시_Edge이해.pdf 16쪽 · 쪽 그림 16쪽
| 목적 | 문법 | 설명 |
|---|---|---|
| 시작 지정 | add_edge(START, "retrieve") | 그래프 진입점 |
| 순차 연결 | add_edge("a", "b") | 무조건 다음으로 |
| 종료 지정 | add_edge("generate", END) | 여기서 실행 종료 |
| 조건 분기 | add_conditional_edges(n, f, / map) | f의 반환값으로 경로 결정 |
| 루프 | add_edge("bump", "retrieve") | 되돌아가기 — 상한 필수 |
| 여러 종료 | END로 가는 Edge 여러 개 | 모든 분기에 하나씩 |
8-1) 자주 겪는 에러
| 에러 / 증상 | 원인과 해결 |
|---|---|
| KeyError: 'yes' | 분기 함수 반환값이 경로 맵에 없습니다. 문자열을 일치시키세요 |
| ValueError: Graph must have an entrypoint | add_edge(START, ...)를 빠뜨렸습니다 |
| 실행이 끝나지 않고 멈춤 | END로 가는 경로가 없습니다 |
| GraphRecursionError | 루프에 종료 조건이 없습니다. MAX_RETRY를 확인하세요 |
| ValueError: Unknown node / 'genarate' | add_node 이름과 add_edge 이름의 오타입니다 |
| 분기가 항상 같은 쪽으로만 감 | 분기 함수가 보는 State 키가 실제로 채워지는지 확인하세요 |
🔍 노드 이름 오타를 막는 방법
문자열을 상수로 빼두면 오타가 사라집니다.
RETRIEVE = "retrieve"
GENERATE = "generate"
g.add_node(RETRIEVE, retrieve_node)
g.add_edge(RETRIEVE, GENERATE)
편집기가 자동완성을 해주고,
오타가 나면 실행 전에 NameError로 잡힙니다.