LangGraph은 언어모델(LM) 기반 어플리케이션을 위한 비순환 그래프(DAG Directed Acyclic Graph) 기반의 프로그래밍 프레임워크로 복잡한 작업을 모듈화된 단계로 분해하고 흐름을 제어하는데 특화되어 있다. 특히 Multi-Agent 시스템과 LLM Orchestration에 강점을 가지며, 에이전트 간 협업, 반복적 실행, 분기 처리등을 유연하게 설계할 수 있다.
1. LangGraph의 기본 개념
(1) 왜 LangGraph인가?
- 문제인식 : 기존 LangChain은 선형적(Linear) 워크플로우에 최적화되었지만, 복잡한 분기/반복/병렬 처리는 표현하기 어려웠다.
- 해결책 : 그래프 구조를 도입해 동적 흐름 제어가 가능하도록 설계 ( 예 : 에이전트 협업, 실시간 피드백 루프)
(2) 핵심 용어
- Node : 작업의 기본 단위 (예 : LLM 호출 , 도구 실행, 조건 체크)
- Edge : 노드간 연결로, 실행 순서를 정의 (조건부 분기가능 : Conditional Edge)
- State : 그래프를 실행 중 공유되는 데이터 컨테이너 ( Dictionary 형태 )
- Compilation : 그래프를 실행 가능한 코드로 변환하는 과정
2. 아키텍처 및 실행 원리
(1) 그래프 구성 요소
from langgraph.graph import Graph
workflow = Graph()
# 1. 노드 정의
def node_1(state):
return {"result": "data_processed"}
def node_2(state):
return {"output": state["result"] + "_final"}
# 2. 노드 추가
workflow.add_node("processor", node_1)
workflow.add_node("finalizer", node_2)
# 3. 엣지 연결 (선형적 흐름)
workflow.add_edge("processor", "finalizer")
# 4. 진입점/종료점 설정
workflow.set_entry_point("processor")
workflow.set_finish_point("finalizer")
# 5. 컴파일 및 실행
app = workflow.compile()
result = app.invoke({"input": "initial_data"})
(2) 조건부 분기 ( Branching )
from langgraph.graph import Graph
workflow = Graph()
def router(state):
if state["input"] == "A":
return "path_a"
else:
return "path_b"
workflow.add_conditional_edges(
start_key="router",
condition=router,
path_map={"path_a": "node_a", "path_b": "node_b"}
)
(3) 반복 실행 ( Loops )
* END 키워드로 반복 종료를 명시합니다.
from langgraph.graph import END
def should_continue(state):
if state["tries"] >= 3:
return "end"
return "continue"
workflow.add_conditional_edges(
start_key="retry_node",
condition=should_continue,
path_map={"continue": "retry_node", "end": END}
)
3. Multi-Agent 시스템과의 통합
(1) 에이전트 협업 설계
- 각 에이전트 별로 Node를 구현하고 State를 통해서 메시지를 전달합니다.
def agent_1(state):
return {"response": "I'm Agent 1"}
def agent_2(state):
return {"final_response": state["response"] + " + Agent 2"}
workflow.add_node("agent1", agent_1)
workflow.add_node("agent2", agent_2)
workflow.add_edge("agent1", "agent2")
4. 적용 사례
(1) 논문 작성 에이전트
- 연구노드 (PubMed 검색) -> 초안 작성 노드 -> 피드백 루프 (반복 개선)
(2) AI 기반 게임 NPC
- NPC별 에이전트가 LangGraph로 협력해 동적 스토리라인 생성
5. LangGraph vs 다른 프레임워크
기능 | LangGraph | LangChain | LlamaIndex |
흐름제어 (workflow) | 그래프 기반(DAG) | 선형 체인 | 검색 중심 |
반복 / 분기 | 지원 | 제한적 | 미지원 |
Multi-Agent | 최적화 | 가능하지만 복잡함 | 부적합 |
실시간 조정 | 가능 | 어려움 | 어려움 |
6. 한계와 해결 방안
한계 |
한계 극복 해결책 |
디버깅 복잡성 |
각 노드들의 진행과정을 디버깅하는 방법으로 노드들을 아우르는 State 시각화 도구 활융 |
대규모 그래프 관리의 어려움 |
서브 그래프의 모듈화로 한개의 그래프로 해결하려 하지 말고 부모그래프, 자식 그래프 구조로 모듈화 |
LLM 지연 시간 문제(많이느림) |
비동기 실행 ( Async 지원 ) |
7. 결론 : LangGraph의 의의
* 복잡한 워크플로우를 명시적 그래프로 표현해 유지보수성을 확보한다.
* 에이전트 협업에 특화된 최초의 LLM 프레임워크이다
* 실시간 분기/반복이 필요한 어플리케이션 ( 예: 게임, 고객지원)에 아주 이상적이다.
MoE (Mixture of Experts) (0) | 2025.03.26 |
---|---|
MCP (Model Context Protocol) (0) | 2025.03.26 |