Contents
see List개요
LangGraph는 LangChain 팀이 개발한 상태 기반 멀티에이전트 오케스트레이션 프레임워크입니다. 기존 LangChain의 선형적 체인 구조를 넘어 복잡한 그래프 형태의 워크플로우를 정의할 수 있습니다. 이 가이드에서는 LangGraph의 핵심 개념부터 실전 멀티에이전트 시스템 구축까지 단계별로 살펴봅니다.
LangGraph 핵심 개념
LangGraph는 다음 요소로 구성됩니다:
- State: 에이전트 간 공유되는 데이터 (TypedDict로 정의)
- Node: 작업을 수행하는 함수 (에이전트 실행, 도구 호출 등)
- Edge: 노드 간 전환 조건 (조건부 또는 무조건)
- Graph: 노드와 엣지로 구성된 실행 흐름
- Checkpointer: 상태 저장 및 복원 (중단/재개 가능)
환경 설정
pip install langgraph langchain-openai langchain-community
기본 그래프 구성
간단한 연구-작성-리뷰 워크플로우를 구현해보겠습니다.
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
import operator
class AgentState(TypedDict):
topic: str
research: str
draft: str
final: str
llm = ChatOpenAI(model="gpt-4o")
def research_node(state: AgentState) -> AgentState:
topic = state["topic"]
research = llm.invoke(f"다음 주제를 조사하세요: {topic}").content
return {"research": research}
workflow = StateGraph(AgentState)
workflow.add_node("research", research_node)
app = workflow.compile()
실전 활용 팁
- 상태 설계: 필요한 최소 정보만 상태에 포함 (메모리 효율)
- 순환 감지: 무한 루프 방지를 위해 max_iterations 설정
- 에러 핸들링: 각 노드에서 try-catch로 에러를 상태에 기록
- 병렬 실행: 독립적인 노드는 병렬로 실행 가능
- 스트리밍: .stream() 메서드로 중간 상태를 실시간 확인
마무리
LangGraph는 복잡한 멀티에이전트 시스템을 구조적으로 설계할 수 있는 강력한 도구입니다. 상태 기반 그래프 모델을 통해 에이전트 간 협업, 조건부 분기, 중단/재개 등을 자연스럽게 구현할 수 있습니다. 처음에는 작은 그래프로 시작하고, 점차 노드를 추가하며 복잡한 워크플로우로 확장하는 것이 학습 곡선을 줄이는 방법입니다.