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)
'빅데이타 & 머신러닝 > 생성형 AI (ChatGPT etc)' 카테고리의 다른 글
Langchain이 있는데, Langgraph가 왜 필요할까? (1) | 2025.07.17 |
---|---|
고급 Agent를 위한 Langgraph 개념 이해 #4 - Tool 호출 (2) | 2025.07.15 |
고급 Agent를 위한 Langgraph - Multi State 사용시 주의해야할점 (1) | 2025.07.10 |
고급 Agent를 위한 Langgraph 개념 이해 #2 - Node (0) | 2025.07.08 |
고급 Agent를 위한 Langgraph 개념 이해 #1-State (0) | 2025.07.08 |