개요

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는 복잡한 멀티에이전트 시스템을 구조적으로 설계할 수 있는 강력한 도구입니다. 상태 기반 그래프 모델을 통해 에이전트 간 협업, 조건부 분기, 중단/재개 등을 자연스럽게 구현할 수 있습니다. 처음에는 작은 그래프로 시작하고, 점차 노드를 추가하며 복잡한 워크플로우로 확장하는 것이 학습 곡선을 줄이는 방법입니다.