본문 바로가기
unity C#

LangGraph 완벽 가이드 2026 - AI 에이전트 워크플로우 구축 실전 가이드

by bamsik 2026. 2. 25.
반응형

LangGraph란? — 상태 기반 AI 에이전트 워크플로우 프레임워크

2026년 현재 AI 에이전트 개발의 최대 화두는 "어떻게 복잡한 워크플로우를 안정적으로 구현하는가?"입니다. 단순한 챗봇을 넘어, 여러 단계를 거쳐 목표를 달성하는 자율 에이전트를 만들기 위해 개발자들이 주목하는 도구가 바로 LangGraph입니다.

LangChain 팀이 개발한 LangGraph는 AI 에이전트의 실행 흐름을 방향성 그래프(Directed Graph)로 모델링합니다. 각 노드는 작업 단위이고, 에지(Edge)는 조건에 따른 분기를 정의합니다. 이를 통해 복잡한 멀티스텝 에이전트를 직관적으로 설계하고 디버깅할 수 있습니다.

LangGraph가 기존 LangChain Chain과 다른 점

특성 기존 LangChain Chain LangGraph
실행 흐름 선형 (Linear) 그래프 (순환 포함)
상태 관리 제한적 완전한 상태 기계
반복 처리 어려움 기본 지원
인간 개입 복잡한 구현 필요 Human-in-the-Loop 내장
체크포인트 없음 실행 상태 저장·복원
병렬 실행 제한적 병렬 노드 지원

LangGraph 핵심 개념

1. State (상태)

모든 노드가 공유하는 데이터 구조입니다. TypedDict나 Pydantic 모델로 정의하며, 각 노드는 상태를 읽고 업데이트합니다.

from typing import TypedDict, Annotated, List
from langgraph.graph import add_messages

class AgentState(TypedDict):
    messages: Annotated[List, add_messages]  # 메시지 누적
    current_step: str
    result: str
    error: str

2. Node (노드)

상태를 입력으로 받아 처리하고 업데이트된 상태를 반환하는 함수입니다.

from langchain_anthropic import ChatAnthropic

llm = ChatAnthropic(model="claude-sonnet-4-6")

def research_node(state: AgentState) -> AgentState:
    """웹 검색 및 리서치를 수행하는 노드"""
    response = llm.invoke(state["messages"])
    return {"messages": [response], "current_step": "research_done"}

def write_node(state: AgentState) -> AgentState:
    """조사 결과를 바탕으로 글을 작성하는 노드"""
    prompt = f"다음 리서치를 바탕으로 블로그 글 초안을 작성해: {state['messages'][-1].content}"
    response = llm.invoke([{"role": "user", "content": prompt}])
    return {"messages": [response], "current_step": "writing_done"}

def review_node(state: AgentState) -> AgentState:
    """글을 검토하고 개선 사항을 제안하는 노드"""
    prompt = f"이 글을 검토하고 개선점을 찾아: {state['messages'][-1].content}"
    response = llm.invoke([{"role": "user", "content": prompt}])
    return {"messages": [response], "current_step": "review_done"}

3. Edge (에지)와 조건부 분기

def route_after_review(state: AgentState) -> str:
    """리뷰 결과에 따라 다음 단계를 결정"""
    last_message = state["messages"][-1].content
    
    if "개선 필요" in last_message:
        return "write"  # 다시 작성
    else:
        return "publish"  # 발행

실전 예제: 블로그 자동 작성 에이전트

전체 그래프 구성

from langgraph.graph import StateGraph, END
from langgraph.checkpoint.memory import MemorySaver

# 그래프 생성
workflow = StateGraph(AgentState)

# 노드 추가
workflow.add_node("research", research_node)
workflow.add_node("write", write_node)
workflow.add_node("review", review_node)

# 진입점 설정
workflow.set_entry_point("research")

# 에지 정의
workflow.add_edge("research", "write")
workflow.add_edge("write", "review")

# 조건부 에지 (리뷰 결과에 따라 분기)
workflow.add_conditional_edges(
    "review",
    route_after_review,
    {
        "write": "write",    # 다시 작성
        "publish": END       # 종료
    }
)

# 체크포인터로 상태 저장 설정
checkpointer = MemorySaver()
app = workflow.compile(checkpointer=checkpointer)

# 실행
config = {"configurable": {"thread_id": "blog-post-1"}}
result = app.invoke(
    {"messages": [{"role": "user", "content": "DeepSeek V4에 대한 블로그 글 주제 리서치해줘"}]},
    config=config
)

LangGraph 고급 기능

Human-in-the-Loop (인간 개입)

에이전트가 중요한 결정을 내리기 전에 인간의 승인을 요청할 수 있습니다. interrupt_before 파라미터로 특정 노드 실행 전 일시 정지를 설정합니다.

# 발행 전 인간 승인 대기
app = workflow.compile(
    checkpointer=checkpointer,
    interrupt_before=["publish"]  # publish 노드 실행 전 중단
)

# 에이전트 실행 (publish 직전에 멈춤)
result = app.invoke(initial_state, config)

# 인간이 확인 후 재개
user_input = input("발행하시겠습니까? (yes/no): ")
if user_input == "yes":
    app.invoke(None, config)  # 중단 지점부터 재개

병렬 처리 (Parallel Execution)

여러 작업을 동시에 실행해 속도를 높일 수 있습니다. 예를 들어 여러 검색어를 병렬로 조회하는 경우:

from langgraph.graph import Send

def parallel_research(state: AgentState) -> List[Send]:
    """여러 키워드를 병렬 검색"""
    keywords = ["DeepSeek V4", "WebLLM", "LangGraph 2026"]
    return [Send("search_node", {"keyword": kw}) for kw in keywords]

# 팬아웃-팬인 패턴
workflow.add_conditional_edges("start", parallel_research)

체크포인트와 상태 복원

실행 도중 오류가 발생해도 체크포인트를 통해 마지막 성공 지점부터 재시작할 수 있습니다. 긴 작업을 안정적으로 처리하는 데 필수적인 기능입니다.

LangGraph vs 경쟁 프레임워크 비교

LangGraph vs CrewAI

  • LangGraph: 세밀한 제어, 커스터마이징 가능, 학습 곡선 있음
  • CrewAI: 역할 기반 에이전트, 간편한 설정, 빠른 시작

LangGraph vs Microsoft AutoGen

  • LangGraph: Python/JavaScript 지원, 유연한 아키텍처
  • AutoGen: Microsoft 생태계 통합, .NET 지원

언제 LangGraph를 선택해야 하는가?

  • 복잡한 멀티스텝 워크플로우가 필요할 때
  • 조건부 분기와 순환 로직이 있는 에이전트
  • Human-in-the-Loop이 필요한 프로덕션 환경
  • 장기 실행 작업의 상태를 안정적으로 관리해야 할 때
  • 기존 LangChain 코드와의 통합이 필요할 때

2026년 LangGraph 로드맵

LangGraph 팀은 2026년에 다음 기능을 준비 중입니다:

  • LangGraph Studio: 시각적 그래프 편집기와 실시간 실행 모니터링
  • 분산 체크포인터: Redis, PostgreSQL 기반 영구 상태 저장
  • 스트리밍 개선: 각 노드의 실행 상태를 실시간으로 클라이언트에 전달
  • 멀티에이전트 오케스트레이션: 여러 독립 에이전트의 협력 패턴 표준화

결론: 에이전틱 AI 시대의 표준 프레임워크

LangGraph는 단순한 챗봇 수준을 넘어 실제 복잡한 업무를 자율적으로 처리하는 AI 에이전트를 구축하기 위한 핵심 도구입니다. 그래프 기반 워크플로우, 상태 관리, Human-in-the-Loop, 체크포인트 기능의 조합은 프로덕션 환경에서 안정적인 AI 에이전트를 운영하기 위한 필수 요소들입니다.

2026년 에이전틱 AI 개발의 표준이 되어가고 있는 LangGraph, 지금 바로 학습을 시작해보세요.


📎 참고 자료

반응형