빅데이타 & 머신러닝/생성형 AI (ChatGPT etc)

고급 Agent를 위한 Langgraph 개념 이해 #3 - Edge

Terry Cho 2025. 7. 10. 17:18

3. Edge

Edge는 노드가 정의된 후에, 노드에서 호출한 다음 노드를 정의한다. 

사용 방법은 매우 간단하다.아래와 같이 노드를 먼저 정의한 후에, add_edge를 이용하여 연결하고자 하는 노드 이름을 지정하면 된다. 아래 코드의 경우 node_1→node_2를 호출하는 구조를 정의하였다. 

builder.add_node("node_1", node_1)
builder.add_node("node_2", node_2)
graph.add_edge("node_1", "node_2")

Conditional routing

일반적인 Edge flow이외에, 조건에 따라서 특정 노드로 Routing 하도록 플로우를 정의할 수 있다. 

예를 들어서 아래 그림과 같이, node_1실행후에, 조건에 따라서 node_2또는 node_3로 라우팅하도록 구현할 수 있다. 

이를 위해서는

  • 조건을 판단할 routing 함수를 정의한다.routing함수에서는 리턴값으로 조건에 따라 라우팅할 노드 이름을 리턴하면 된다. 
  • 그리고 edge를 추가할때 add_edge가 아니라 add_conditional_edges로, routing 함수를 추가 인자로 전달한다. 

아래 예제를 보자. 

이 예제는 node1을 수행한 후에, state의 age값이 40이상이면 node_2로, 아니면 node_3로 리턴하도록 하는 코드이다. 해당 로직을 routing_function에 구현한 후에, node1의 다음 edge로 연결하기 위해서 add_conditional_edges를 이용하였다. 

 

def routing_function(state:State): -> Literal["node2","node3"]
	if state["age"] > 40:
		return node_2
	else
		return_node_3

:
builder.add_conditional_edges("node1", routing_function, ["node2", "node3"])

Conditional Entry point

마찬가지 방법으로 Graph를 시작할때도, 입력 State에 따라서 시작부터 Node를 분기 시킬 수 있는데, 사용방법은 동일하다 시작 노드를 START로 정하고, 같은 방식으로 add_conditional_edges를 이용하여 라우팅 함수를 전달하면 된다. 

builder.add_conditional_edges(START, routing_function)

builder.add_conditional_edges(START, routing_function)