[PAPER] LangGraph: Building Stateful Multi-Actor Applications with LLMs

📄 arXiv 2024.01 LangGraph Stateful Graph Agent Conditional Edges LangChain Inc.

LangGraph — 워크플로를 그래프로: 상태 기반 멀티에이전트 오케스트레이션

LangChain Inc.  ·  arXiv:2401.01335  ·  2024년 1월  ·  github.com/langchain-ai/langgraph

Captain Paul
Captain Paul
Maritime 4.0 · AI & Cyber Intelligence
Paper / Project Details
제목 LangGraph: Building Stateful Multi-Actor Applications with LLMs
저자/기관 LangChain Inc. (Harrison Chase et al.)
LangChain 생태계를 주도하는 회사, 2022년 설립
arXiv arXiv:2401.01335  ·  2024년 1월
핵심 개념 StateGraph — 노드(함수) + 엣지(전환) + 상태(공유 딕셔너리)
Conditional Edge: 조건에 따른 동적 경로 분기
Cyclic Workflow: 루프 지원 (ReAct 패턴 구현 가능)
포지셔닝 CrewAI(고수준 추상화)의 한계를 극복하는 저수준 그래프 제어
Source arXiv:2401.01335 ↗  ·  GitHub ↗  ·  Docs ↗
LangGraph 상태 기반 그래프 에이전트 개념도
LangGraph 상태 그래프 — Node(함수) + Conditional Edge + Shared State + Cyclic Loop

CrewAI가 "AI 팀을 어떻게 조직할까"를 풀었다면, LangGraph는 "그 팀이 어떻게 협력하며 결정을 내릴까"를 그래프로 표현합니다. 복잡한 조건 분기, 루프, 상태 유지가 필요한 실제 프로덕션 AI 시스템에서 LangGraph는 현재 가장 강력한 오케스트레이션 도구입니다.

리뷰 목차
  1. 왜 그래프인가 — 선형 파이프라인의 한계
  2. StateGraph 핵심 구조 — Node · Edge · State
  3. Conditional Edge — 동적 경로 분기
  4. Cyclic Workflow — ReAct 루프 네이티브 구현
  5. 실제 코드 예시 — Agent + Tool 루프
  6. 평가 — 강점과 한계
  7. 해양 산업 시사점
  8. Captain Paul의 결론 — 언제 LangGraph인가

📌 (1) 왜 그래프인가 — 선형 파이프라인의 한계

CrewAI의 Sequential Process는 A→B→C로만 흐릅니다. 그런데 실제 업무는 어떨까요? B 단계에서 문제가 발견되면 A로 돌아가야 합니다. C 단계 결과가 불충분하면 D를 건너뛰고 B를 재실행해야 합니다. 이것이 DAG(Directed Acyclic Graph)가 아닌 Cyclic Graph가 필요한 이유입니다.

⚠ 선형 파이프라인 (CrewAI Sequential)
A → B → C → D → END

✗ 조건 분기 없음
✗ 루프 불가
✗ 실패 시 재시도 어려움
✅ 그래프 기반 (LangGraph)
Agent → [Cond] → Tool → Agent

END

✓ 조건 분기·루프·재시도 모두 가능
논문의 핵심 주장

"기존 LLM 에이전트 프레임워크는 DAG 기반으로 설계돼 사이클(반복)을 지원하지 못한다. 하지만 실제 에이전트 동작은 본질적으로 반복적이다. LangGraph는 상태 기계(State Machine) 개념을 LLM 오케스트레이션에 적용한다."

⚙️ (2) StateGraph 핵심 구조 — Node · Edge · State

LangGraph의 3가지 핵심 요소입니다. Python 코드와 1:1로 대응됩니다.

📊 State — 공유 메모리

모든 노드가 읽고 쓰는 공유 딕셔너리. 에이전트가 이전 단계 결과를 자동으로 참조. TypedDict로 타입 안전하게 정의.

from typing import TypedDict

class AgentState(TypedDict):
  messages: list[str]
  tool_calls: list
  final_answer: str
🔵 Node — 함수 단위 실행

State를 입력받고 업데이트된 State를 반환하는 Python 함수. LLM 호출, 도구 실행, 데이터 처리 모두 노드로 표현.

def agent_node(state: AgentState):
  msg = llm.invoke(
    state["messages"]
  )
  return {"messages": [msg]}
➡ Edge — 노드 간 전환

Normal Edge: 항상 A→B

Conditional Edge: 상태 기반 동적 분기. 함수 반환값에 따라 다른 노드로.

graph.add_edge(
  "agent", "tool"
)

graph.add_conditional_edges(
  "agent", should_continue,
  {"continue":"tool",
   "end": END}
)

🔀 (3) Conditional Edge — 동적 경로 분기

Conditional Edge는 LangGraph에서 가장 강력한 기능입니다. 현재 State를 검사해서 어느 노드로 이동할지 동적으로 결정합니다.

Conditional Edge 패턴 — Tool Call 존재 여부로 분기
# 분기 함수 — State를 보고 다음 노드 결정
def should_continue(state: AgentState) -> str:
  last_msg = state["messages"][-1]
  if last_msg.tool_calls: # 도구 호출 있으면
    return "continue" # → tool 노드로
  return "end" # → END로

# 그래프에 등록
graph.add_conditional_edges(
  "agent", # from
  should_continue, # 분기 함수
  {"continue": "tool", "end": END} # 매핑
)
핵심 인사이트: 분기 함수는 어떤 Python 로직도 담을 수 있습니다. LLM 판단, 규칙 기반 체크, 외부 DB 조회 등. CrewAI는 이 레벨의 제어를 추상화 뒤에 숨겼지만, LangGraph는 완전히 노출합니다.

🔁 (4) Cyclic Workflow — ReAct 루프 네이티브 구현

ReAct 논문 (Yao et al., 2022)의 Think-Act-Observe 루프는 LangGraph로 가장 자연스럽게 구현됩니다. 그래프가 사이클을 허용하기 때문에 Agent가 도구를 쓰고 → 결과를 보고 → 다시 판단하는 루프가 종료 조건을 만날 때까지 반복됩니다.

ReAct 루프 in LangGraph
START
Agent
Think
Cond.
Edge
→ tool_call
→ done
Tool
Act
END
(Tool → Agent 반복)
Human-in-the-Loop: LangGraph는 특정 노드에서 실행을 일시 중단하고 사람의 승인을 기다리는 기능을 내장합니다. 해양 안전 시스템에서 "AI가 제안하고 사람이 승인한다" 패턴 구현에 필수적입니다.

💻 (5) 실제 코드 예시 — Agent + Tool 루프

# LangGraph ReAct 에이전트 — 전체 구조
from
langgraph.graph
import
StateGraph, END
from
langchain_core.messages
import
BaseMessage

# 1. State 정의
class
AgentState(TypedDict):
  messages:
list
[BaseMessage]

# 2. 노드 함수
def
call_agent(state):
  response = model.invoke(state["messages"])
  
return
{"messages": [response]}

def
call_tools(state):
  results = tool_executor.batch(
    state["messages"][-1].tool_calls
  )
  
return
{"messages": results}

# 3. 그래프 조립
graph = StateGraph(AgentState)
graph.add_node("agent", call_agent)
graph.add_node("tool", call_tools)
graph.set_entry_point("agent")

# 4. Conditional Edge
graph.add_conditional_edges(
  "agent", should_continue,
  {"continue": "tool", "end": END})
graph.add_edge("tool", "agent")
# Tool → Agent 루프


app = graph.compile()
result = app.invoke({"messages": [initial_msg]})
↑ 이 20줄 코드가 완전한 ReAct 에이전트입니다. Tool 호출 → 결과 확인 → 재판단 루프가 자동 실행됩니다.

✅ (6) 평가 — 강점과 한계

✔ 완전한 상태 제어

모든 노드가 공유 State에 접근. 어느 시점이든 전체 실행 상태를 직렬화·복원 가능. 디버깅이 매우 용이.

✔ 사이클 지원

ReAct, MCTS, Self-Critique 등 루프가 필요한 모든 패턴을 네이티브로 구현. 종료 조건을 개발자가 완전히 제어.

✔ Human-in-the-Loop 내장

interrupt_before, interrupt_after로 임의 노드에서 실행 중단 → 사람 검토 → 재개. 안전 임계 시스템에 이상적.

✔ LangSmith 통합 관찰성

각 노드 실행, 토큰 사용, 레이턴시를 LangSmith로 추적. 프로덕션 디버깅과 비용 분석 용이.

⚠ 높은 학습 곡선

State, Node, Edge, Conditional Edge, Checkpointer 개념을 모두 이해해야 함. CrewAI 대비 코드량이 많고 복잡. 팀 온보딩 비용 높음.

⚠ 역할 추상화 부재

CrewAI처럼 "연구원·분석가·작가" 역할 개념이 없음. 그래프 설계자가 직접 Agent 페르소나를 시스템 프롬프트에 포함해야 함.

⚓ (7) 해양 산업 시사점

해양 사이버보안에서 가장 중요한 요건은 예측 가능성과 감사 추적성입니다. LangGraph의 상태 기반 설계는 이 두 가지를 모두 충족합니다.

🛡 사이버 인시던트 대응 자동화 (IACS E26/E27 준수)

이상 탐지 노드 → 위협 분류 노드 → Conditional Edge(경중에 따라 자동 격리 또는 Human-in-Loop 승인 요청) → 대응 실행 노드 → 보고서 생성 노드. Human-in-Loop 기능이 안전 필수 시스템에서 필수입니다. IMO MSC-FAL.1/Circ.3 권고와 부합.

📋 선박 검사·감사 워크플로

ECDIS 소프트웨어 버전 체크 → NtM(Notice to Mariners) 조회 → 불일치 시 자동 루프(최대 3회 조회 시도) → Human 리뷰 → 보고서 작성. 실패 시 재시도 로직을 Conditional Edge로 정확히 구현.

🔍 취약점 관리 파이프라인

CBS(Computer Based Systems) 목록 수집 → CVE DB 매칭 → 심각도 평가 → Conditional Branch(Critical: 즉시 알림, High: 30일 내 조치, Low: 다음 점검 시) → 각 경로별 액션 자동 실행. 정확한 분기 제어가 핵심.

주의 — 무한 루프 방지: Cyclic Graph는 종료 조건이 없으면 무한 루프에 빠집니다. 해양 시스템에서 max_iterations 제한과 timeout을 반드시 설정하십시오. LangGraph는 이를 위한 recursion_limit 파라미터를 제공합니다.

🎯 (8) Captain Paul의 결론 — 언제 LangGraph인가

상황 추천 도구
빠른 프로토타입, 콘텐츠 파이프라인, 역할 명확한 보고서 CrewAI
복잡한 조건 분기·루프, 프로덕션 시스템, 안전 임계 워크플로 LangGraph
동적 실시간 멀티에이전트 대화 (Agent끼리 자유롭게 협의) AutoGen
시뮬레이션·에뮬레이션, 사회 모델링, 역할 기반 롤플레이 Generative Agents

"ReAct를 배웠고 → CrewAI로 팀을 만들었고 → 이제 그 팀의 의사결정 프로세스를 정밀하게 제어하고 싶다." 그것이 LangGraph가 존재하는 이유입니다.

Agent AI 기술 스택의 흐름: ReAct(사고법) → Toolformer(도구 사용법) → MCP(표준 연결) → AutoGPT(자율 실험) → CrewAI(팀 구성) → LangGraph(정밀 제어). 각 레이어가 이전 한계를 해결하며 발전했습니다. 다음 단계는 이 모든 개념이 실제 인간과 협업하는 시스템으로 통합되는 것입니다.

다음 리뷰: Generative Agents (Park et al., Stanford 2023) — 25개 AI가 마을을 이루다. 메모리·반성·계획 구조가 롤플레이를 넘어 시뮬레이션 세계를 만든다.

— Captain Paul —

#LangGraph #StateGraph #AgentAI #MultiAgent #ConditionalEdge #LangChain #HumaninLoop #해양사이버보안 #Maritime40 #Python
Captain Paul
Captain Paul
Maritime 4.0 · AI & Cyber Intelligence · ShipPaulJobs

데이터, AI, 사이버보안을 해양 산업과 연결하는 혁신 리더. Agent AI 핵심 논문을 해양 실무자의 시각으로 리뷰합니다.

Comments