[PAPER] LangGraph: Building Stateful Multi-Actor Applications with LLMs
LangGraph — 워크플로를 그래프로: 상태 기반 멀티에이전트 오케스트레이션
LangChain Inc. · arXiv:2401.01335 · 2024년 1월 · github.com/langchain-ai/langgraph
| 제목 | 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 ↗ |
- 왜 그래프인가 — 선형 파이프라인의 한계
- StateGraph 핵심 구조 — Node · Edge · State
- Conditional Edge — 동적 경로 분기
- Cyclic Workflow — ReAct 루프 네이티브 구현
- 실제 코드 예시 — Agent + Tool 루프
- 평가 — 강점과 한계
- 해양 산업 시사점
- Captain Paul의 결론 — 언제 LangGraph인가
📌 (1) 왜 그래프인가 — 선형 파이프라인의 한계
CrewAI의 Sequential Process는 A→B→C로만 흐릅니다. 그런데 실제 업무는 어떨까요? B 단계에서 문제가 발견되면 A로 돌아가야 합니다. C 단계 결과가 불충분하면 D를 건너뛰고 B를 재실행해야 합니다. 이것이 DAG(Directed Acyclic Graph)가 아닌 Cyclic Graph가 필요한 이유입니다.
✗ 조건 분기 없음
✗ 루프 불가
✗ 실패 시 재시도 어려움
↓
END
✓ 조건 분기·루프·재시도 모두 가능
"기존 LLM 에이전트 프레임워크는 DAG 기반으로 설계돼 사이클(반복)을 지원하지 못한다. 하지만 실제 에이전트 동작은 본질적으로 반복적이다. LangGraph는 상태 기계(State Machine) 개념을 LLM 오케스트레이션에 적용한다."
⚙️ (2) StateGraph 핵심 구조 — Node · Edge · State
LangGraph의 3가지 핵심 요소입니다. Python 코드와 1:1로 대응됩니다.
모든 노드가 읽고 쓰는 공유 딕셔너리. 에이전트가 이전 단계 결과를 자동으로 참조. TypedDict로 타입 안전하게 정의.
class AgentState(TypedDict):
messages: list[str]
tool_calls: list
final_answer: str
State를 입력받고 업데이트된 State를 반환하는 Python 함수. LLM 호출, 도구 실행, 데이터 처리 모두 노드로 표현.
msg = llm.invoke(
state["messages"]
)
return {"messages": [msg]}
Normal Edge: 항상 A→B
Conditional Edge: 상태 기반 동적 분기. 함수 반환값에 따라 다른 노드로.
"agent", "tool"
)
graph.add_conditional_edges(
"agent", should_continue,
{"continue":"tool",
"end": END}
)
🔀 (3) Conditional Edge — 동적 경로 분기
Conditional Edge는 LangGraph에서 가장 강력한 기능입니다. 현재 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} # 매핑
)
🔁 (4) Cyclic Workflow — ReAct 루프 네이티브 구현
ReAct 논문 (Yao et al., 2022)의 Think-Act-Observe 루프는 LangGraph로 가장 자연스럽게 구현됩니다. 그래프가 사이클을 허용하기 때문에 Agent가 도구를 쓰고 → 결과를 보고 → 다시 판단하는 루프가 종료 조건을 만날 때까지 반복됩니다.
Think
Edge
Act
💻 (5) 실제 코드 예시 — Agent + Tool 루프
messages:
response = model.invoke(state["messages"])
results = tool_executor.batch(
state["messages"][-1].tool_calls
)
graph.add_node("agent", call_agent)
graph.add_node("tool", call_tools)
graph.set_entry_point("agent")
"agent", should_continue,
{"continue": "tool", "end": END})
graph.add_edge("tool", "agent")
app = graph.compile()
result = app.invoke({"messages": [initial_msg]})
✅ (6) 평가 — 강점과 한계
모든 노드가 공유 State에 접근. 어느 시점이든 전체 실행 상태를 직렬화·복원 가능. 디버깅이 매우 용이.
ReAct, MCTS, Self-Critique 등 루프가 필요한 모든 패턴을 네이티브로 구현. 종료 조건을 개발자가 완전히 제어.
interrupt_before, interrupt_after로 임의 노드에서 실행 중단 → 사람 검토 → 재개. 안전 임계 시스템에 이상적.
각 노드 실행, 토큰 사용, 레이턴시를 LangSmith로 추적. 프로덕션 디버깅과 비용 분석 용이.
State, Node, Edge, Conditional Edge, Checkpointer 개념을 모두 이해해야 함. CrewAI 대비 코드량이 많고 복잡. 팀 온보딩 비용 높음.
CrewAI처럼 "연구원·분석가·작가" 역할 개념이 없음. 그래프 설계자가 직접 Agent 페르소나를 시스템 프롬프트에 포함해야 함.
⚓ (7) 해양 산업 시사점
해양 사이버보안에서 가장 중요한 요건은 예측 가능성과 감사 추적성입니다. LangGraph의 상태 기반 설계는 이 두 가지를 모두 충족합니다.
이상 탐지 노드 → 위협 분류 노드 → 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: 다음 점검 시) → 각 경로별 액션 자동 실행. 정확한 분기 제어가 핵심.
🎯 (8) Captain Paul의 결론 — 언제 LangGraph인가
"ReAct를 배웠고 → CrewAI로 팀을 만들었고 → 이제 그 팀의 의사결정 프로세스를 정밀하게 제어하고 싶다." 그것이 LangGraph가 존재하는 이유입니다.
다음 리뷰: Generative Agents (Park et al., Stanford 2023) — 25개 AI가 마을을 이루다. 메모리·반성·계획 구조가 롤플레이를 넘어 시뮬레이션 세계를 만든다.
— Captain Paul —
⚓ Join the ShipPaulJobs Community
Join →
Comments
Post a Comment