[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 ↗ |
CrewAI가 "AI 팀을 어떻게 조직할까"를 풀었다면, LangGraph는 "그 팀이 어떻게 협력하며 결정을 내릴까"를 그래프로 표현합니다. 복잡한 조건 분기, 루프, 상태 유지가 필요한 실제 프로덕션 AI 시스템에서 LangGraph는 현재 가장 강력한 오케스트레이션 도구입니다.
- 왜 그래프인가 — 선형 파이프라인의 한계
- 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 —
Comments
Post a Comment