20차시. Edge 이해
2. Edge의 세 가지 형태
출처: 원본 PDF 20차시_Edge이해.pdf 4~5쪽 · 쪽 그림 4쪽 5쪽
2-1) 일반 Edge — 무조건 다음으로
g.add_edge("retrieve", "generate")
의미: retrieve가 끝나면 무조건 generate로 간다판단이 필요 없는 고정 흐름에 씁니다.
가장 단순하고 가장 많이 쓰입니다.
2-2) 조건부 Edge — 판단에 따라 갈림
def route(state):
return "ok" if state["retrieval_ok"] else "empty"
g.add_conditional_edges(
"retrieve", # ① 어느 노드 다음에?
route, # ② 어떤 함수로 판단?
{ # ③ 결과에 따라 어디로?
"ok": "generate",
"empty": "fallback",
}
)🚦 신호등 비유
① 출발 노드 = 교차로 위치
② 분기 함수 = 신호등을 보는 눈
③ 경로 맵 = "초록이면 직진, 빨강이면 정지"
분기 함수는 보기만 합니다.
차를 움직이지는 않습니다.
움직이는 것은 LangGraph가 경로 맵을 보고 합니다.
2-3) START / END — 시작과 끝
from langgraph.graph import START, END
g.add_edge(START, "retrieve") # 여기서 시작
g.add_edge("generate", END) # 여기서 끝
g.add_edge("fallback", END) # 여기서도 끝⚠️ 둘 다 반드시 연결해야 합니다
START를 안 붙이면
어디서 시작할지 몰라 컴파일 에러가 납니다
END를 안 붙이면
그래프가 끝나지 않고 멈춰버립니다
END가 여러 개여도 됩니다
generate로 끝나든 fallback으로 끝나든
둘 다 END로 연결하면 됩니다