โํ๋์ ๊ทธ๋ํ๊ฐ ํ๋์ ์์คํ ์ด ๋๋ค.โ
๋ํ ์ํฌํ๋ก์ฐ ์ค๊ณ, ์ฑ๋ฅ ์ต์ ํ, ์๋ฌ ํธ๋ค๋ง, ์ด์ ์ ๋ต ์ด์ ๋ฆฌ.
LangGraph๋ ๋จ์ํ โLLM ํ๋ฆ ์ ์ด ๋๊ตฌโ๊ฐ ์๋๋ผ, LLM ์์คํ ์ ์ ์ด ๋ ์ด์ด(Orchestration Layer) ์ ๋๋ค.
๊ทธ๋์ ์ค์ ์๋น์ค์์ ๋ค์์ด ๋ฐ๋์ ๊ณ ๋ ค๋ฉ๋๋ค.
โ
์ฌ๋ฌ ๋
ธ๋์ ๋ณ๋ ฌ ์คํ
โ
์ํ(State)์ ์บ์ ๊ด๋ฆฌ
โ
์ค๋ฅ ๋ณต๊ตฌ ๋ฐ ์์ธ ์ฒ๋ฆฌ
โ
๋๊ท๋ชจ ๊ทธ๋ํ์ ๊ตฌ์กฐํ
โ
์ค์๊ฐ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ฐฐํฌ ์ ๋ต
์ด์ ์ด ๋ชจ๋ ์์๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ์ค๊ณํด๋ด ์๋ค.
๐ ๋ํ LangGraph ์์คํ
์ ๊ธฐ๋ณธ ๊ตฌ์กฐ:

์ด ๊ตฌ์กฐ๋ ๋จ์ผ ๊ทธ๋ํ๊ฐ ์๋๋ผ ์๋ธ๊ทธ๋ํ(SubGraph) ์ฌ๋ฌ ๊ฐ๋ก ๋๋์ด ์๋ํฉ๋๋ค. ๊ฐ SubGraph๋ โ๊ธฐ๋ฅ ๋ชจ๋โ์ฒ๋ผ ์ฌ์ฌ์ฉ๋๊ณ , ์์ ๊ทธ๋ํ์์ orchestration ํฉ๋๋ค.
from langgraph.graph import StateGraph, SubGraph
class RAGState:
query: str
docs: list[str]
answer: str
# --- SubGraph ์ ์ (๊ฒ์ + ์์ฑ) ---
rag_graph = StateGraph(RAGState)
def retrieve(state): ...
def generate(state): ...
rag_graph.add_node("retrieve", retrieve)
rag_graph.add_node("generate", generate)
rag_graph.add_edge("retrieve", "generate")
rag_graph.set_entry_point("retrieve")
rag_graph.set_finish_point("generate")
rag_module = SubGraph(rag_graph)
# --- ๋ฉ์ธ ๊ทธ๋ํ์์ ์ฌ์ฌ์ฉ ---
main_graph = StateGraph(RAGState)
main_graph.add_node("RAGPipeline", rag_module)
main_graph.add_node("Evaluator", lambda s: print("ํ๊ฐ ์๋ฃ"))
main_graph.add_edge("RAGPipeline", "Evaluator")
โ ์ฅ์
LangGraph๋ ์ฌ๋ฌ ๋
ธ๋๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ๋์์ ํธ์ถํ๊ฑฐ๋, ์ฌ๋ฌ ๋ชจ๋ธ์ ๋์์ ๋น๊ต ํ๊ฐํ ์ ์์ฃ .
from langgraph.graph import StateGraph
import asyncio
class MultiState:
news: str
weather: str
fx: str
async def get_news(state): ...
async def get_weather(state): ...
async def get_fx(state): ...
graph = StateGraph(MultiState)
graph.add_node("news", get_news)
graph.add_node("weather", get_weather)
graph.add_node("fx", get_fx)
graph.set_entry_point("news")
graph.add_edge("news", "weather")
graph.add_edge("news", "fx")
app = graph.compile()
asyncio.run(app.ainvoke({}))
๐ก ํ:
async def๋ฅผ ์ฌ์ฉํ๋ฉด ๋
ธ๋ ๋จ์ ๋น๋๊ธฐ ์คํ ๊ฐ๋ฅasyncio.gather()๋ก ์ฑ๋ฅ ๊ทน๋ํLangGraph์์๋ ๋ ธ๋ ์คํจ ์ ๋์ฒด ๊ฒฝ๋ก(Fallback)๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค.
def critical_tool(state):
raise ValueError("API ์ค๋ฅ ๋ฐ์")
def fallback_node(state):
print("์ค๋ฅ ๋ฐ์ โ ๋์ฒด ํ๋ฆ ์คํ")
return state
def handle_error(state):
try:
return critical_tool(state)
except Exception:
return fallback_node(state)
๐ ๊ตฌ์กฐ์ ์ผ๋ก ํํํ๋ฉด:

์ด๋ฐ ์์ธ ์ฃ์ง(Error Edge) ๋ฅผ ์ถ๊ฐํ๋ฉด, ์คํจํ ๋ ธ๋๋ฅผ ์๋ ๊ฐ์งํด ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด์ด๊ฐ ์ ์์ต๋๋ค.
| ํญ๋ชฉ | ์ค๋ช | ๊ตฌํ ํ |
|---|---|---|
| LLM ํธ์ถ ์บ์ฑ | ๋์ผ ์ ๋ ฅ ์ฌ์ฌ์ฉ | LangChain InMemoryCache ์ฌ์ฉ |
| Tool ํธ์ถ ๋น๋๊ธฐํ | I/O ๋๊ธฐ ์ต์ํ | async def + await |
| State ์ต์ํ | ๋ถํ์ํ ๋ฐ์ดํฐ ์ ๊ฑฐ | @dataclass(slots=True) |
| Mermaid ์๊ฐํ | ๋๋ฒ๊น ์ฉ ๊ทธ๋ํ ์๊ฐํ | graph.visualize("graph.png") |
| Batch ์ฒ๋ฆฌ | ๋ค์ค ์์ฒญ ์ผ๊ด ์คํ | ์ฌ๋ฌ ์ ๋ ฅ์ ํ๋์ state list๋ก ๋ฌถ๊ธฐ |
| ๋ก๊น ๋ถ๋ฆฌ | ์คํ ๋ก๊ทธ / ๊ฒฐ๊ณผ ๋ก๊ทธ ๋ถ๋ฆฌ | CallbackManager๋ก ๋ถ๋ฆฌ ๋ก๊น |
LangGraph๋ ์ฝ๋ฐฑ ๊ธฐ๋ฐ์ผ๋ก ๋ก๊น ์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
from langgraph.callbacks.base import CallbackManager
def on_start(node_name, state):
print(f"[Start] {node_name}")
def on_end(node_name, state):
print(f"[End] {node_name}")
logger = CallbackManager(on_node_start=on_start, on_node_end=on_end)
app = graph.compile(callbacks=logger)
์ด ๊ตฌ์กฐ๋ฅผ Prometheus, ELK Stack, Datadog ๋ฑ๊ณผ ์ฐ๋ํ๋ฉด
๋
ธ๋๋ณ ์คํ ์งํ, ์คํจ์จ, latency๊น์ง ์๊ฐํํ ์ ์์ต๋๋ค.
์ค์ ์ด์ ๋จ๊ณ์์๋ LangGraph๋ฅผ API ์๋น์ค ํํ๋ก ๋ ธ์ถํฉ๋๋ค.
from langserve import LangServe
from fastapi import FastAPI
app = FastAPI()
rag_app = graph.compile()
LangServe(app, "/rag", rag_app)
# ์คํ: uvicorn main:app --reload
์ด์ LangGraph ์ ์ฒด ํ๋ฆ์ด /rag ์๋ํฌ์ธํธ๋ก ๋
ธ์ถ๋ฉ๋๋ค.
โ ํ๋ก ํธ์๋ / ๋ค๋ฅธ ์๋น์ค์์ ์ง์ ํธ์ถ ๊ฐ๋ฅ.
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ์ธ์ฆ | JWT / API Key๋ก LangServe ์ ๊ทผ ์ ์ด |
| ๋ฐ์ดํฐ ๋ณด์ | ์ํ(State) ๊ฐ์ฒด ๋ด ๋ฏผ๊ฐ์ ๋ณด ์ํธํ |
| ์๋ฌ ์ถ์ | Sentry / Slack Alert ์ฐ๊ฒฐ |
| ๋ฒ์ ๊ด๋ฆฌ | ๊ทธ๋ํ ๋ฒ์ ๋ณ Git Commit ๊ด๋ฆฌ |
| ๋ฐฑ์ | MemorySaver ์ฒดํฌํฌ์ธํธ ์ฃผ๊ธฐ์ ๋คํ |
| ์ค๊ณ ์์น | ์ค๋ช |
|---|---|
| 1. ์๊ฒ ์ชผ๊ฐ๋ผ | ๋ ธ๋๋ ์๊ณ ๋ช ํํด์ผ ํจ (1 Node = 1 ์ญํ ) |
| 2. ์ํ๋ ๋ถ๋ณ์ฒ๋ผ ๋ค๋ค๋ผ | Reducer ํจํด์ผ๋ก ์ผ๊ด์ฑ ์ ์ง |
| 3. ๋ชจ๋ ์ฃ์ง์ ์กฐ๊ฑด์ด ์์ด์ผ ํ๋ค | ๋ฌดํ๋ฃจํยท๋ ผ๋ฆฌ์ค๋ฅ ๋ฐฉ์ง |
| 4. ๋ณ๋ ฌ ๊ฐ๋ฅํ ๊ฑด ๋ณ๋ ฌ๋ก ๋๋ ค๋ผ | ์ฑ๋ฅ ์ต์ ํ ํต์ฌ |
| 5. ์๊ฐํ๋ฅผ ์ต๊ดํํ๋ผ | graph.visualize()๋ก ๋ฌธ์ํ |
| 6. ์คํจ๋ฅผ ์์ํ๊ณ ๋๋นํ๋ผ | Error/Fallback Flow ์ค๊ณ ํ์ |

์ด๋ฐ ๊ตฌ์กฐ๊ฐ ํ๋์ โAI ํ์ดํ๋ผ์ธ ์์งโ์ฒ๋ผ ๋์ํฉ๋๋ค.
LangGraph๋ ๋จ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ, AI Workflow OS๋ก ๋ณผ ์๋ ์์ต๋๋ค.
| ์ฃผ์ | ํ์ต ์ด์ | ์ถ์ฒ ํ์ต ๋ฐฉํฅ |
|---|---|---|
| Workflow Orchestration | ๋๊ท๋ชจ LLM ์์คํ ๊ตฌ์กฐํ | LangGraph + Airflow ๋น๊ต ํ์ต |
| LangGraph + MCP Protocol | ๋ชจ๋ธ ์ปจํ ์คํธ ๊ด๋ฆฌ ํ์ฅ | Model Context Protocol (MCP) ์ค์ต |
| SubGraph ์ปดํฌ์ง์ | ํ ๋จ์ ํ์ ๊ฐ๋ฐ | ๋ชจ๋์ ๊ทธ๋ํ ์ค๊ณ ํจํด |
| LLM Observability Stack | ์ด์/๋ชจ๋ํฐ๋ง ์ฒด๊ณ ๊ตฌ์ถ | Langfuse, PromptLayer, Weights&Biases |
| Advanced RAG Evaluation | ์๋ต ํ์ง ์๋ ํ๊ฐ ๋ฃจํ | Faithfulness, Factuality Metric |
| Hybrid Architecture | LangGraph + CrewAI + LangServe ํตํฉ | Multi-agent workflow ๋น๊ต |
- LangGraph์ ์ค์ ์ํคํ ์ฒ๋ ๋ชจ๋ํ, ๋ณ๋ ฌํ, ์ค๋ฅ ๋ณต๊ตฌ, ์๊ฐํ๋ฅผ ํต์ฌ์ผ๋ก ํ๋ค.
- SubGraph๋ก ๋๋๊ณ , Callback๊ณผ LangServe๋ก ๋ชจ๋ํฐ๋ง/๋ฐฐํฌ๋ฅผ ๊ฒฐํฉํ๋ผ.
- ๊ทธ๋ํ๋ ๋ ์ด์ ์คํ์ฉ ๋๊ตฌ๊ฐ ์๋๋ผ ์ด์ ๊ฐ๋ฅํ ์์คํ ์ค๊ณ๋๋ค.
๐ก LangGraph๋ฅผ ๋ง์คํฐํ๋ค๋ฉด, ์ด์ ๋น์ ์ LLM์ โํ๋กฌํํธ๋ก ์กฐ์ํ๋ ์ฌ๋โ์ด ์๋๋ผ โ์์คํ ์ผ๋ก ์ค๊ณํ๋ ์์ง๋์ดโ๋ค.
| ํ์ฐจ | ์ฃผ์ | ํต์ฌ ํฌ์ธํธ | ๋ชฉ์ |
|---|---|---|---|
| LangChain 1ํธ | LangChain์ด๋ ๋ฌด์์ธ๊ฐ | ํ๋กฌํํธ โ ์ฒด์ธ โ ์์ด์ ํธ๋ก ์ด์ด์ง๋ ๊ตฌ์กฐ | ์ฒ ํ์ ๊ธฐ๋ฐ ์ดํด |
| LangChain 2ํธ | ์ฒด์ธยท๋ฉ๋ชจ๋ฆฌยท์์ด์ ํธ ์ค์ ์์ | LLMChain, Memory, Tool, AgentExecutor | ์ค์ ๊ฐ๊ฐ |
| LangChain 3ํธ | LangChain์ ํ๊ณ์ LangGraph๋ก์ ์ ํ | LCEL, Runnable, ํ๊ณ ์ ๋ฆฌ | LangGraph๋ก ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐ |
| ํ์ฐจ | ์ฃผ์ | ํต์ฌ ํฌ์ธํธ |
|---|---|---|
| LangGraph โ | LangGraph๋ ๋ฌด์์ธ๊ฐ | ๊ตฌ์กฐ ์ค์ฌ ์ฌ๊ณ |
| LangGraph โก | ๋ ธ๋์ ์ฃ์ง | add_node, add_edge, ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ |
| LangGraph โข | Reducer & MessageGraph | ์ํ/ํผ๋๋ฐฑ ๋ฃจํ |
| LangGraph โฃ | Tool ํตํฉ | ToolNode, Runnable |
| LangGraph โค | ReAct ๊ทธ๋ํ | Reason โ Act โ Observe |
| LangGraph โฅ | RAG(Graph) | ๊ฒ์ยท์์ฑยทํ๊ฐ ๋ฃจํ |
| LangGraph โฆ | UI ํตํฉ | Gradio/Streamlit |
| LangGraph โง | ์ค์ ์ค๊ณ & Best Practice | ์ฑ๋ฅ/๋ฐฐํฌ/ํ์ฅ ์ ๋ต |
LangGraph๋ ์์ง ์งํ ์ค์ธ ์ํ๊ณ์ง๋ง, LLM ์ค์ผ์คํธ๋ ์ด์ ์ ํ์ค ํจ๋ฌ๋ค์์ด ๋์ด๊ฐ๊ณ ์์ต๋๋ค.
โLangChain์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ฉด, LangGraph๋ ์์คํ ์ ์ค๊ณํ๊ฒ ํ๋ค.โ
์ด ์๋ฆฌ์ฆ๋ฅผ ์๋ ํ๋ค๋ฉด, ๋น์ ์ ์ด์ ํ๋กฌํํธ ์์ง๋์ด๊ฐ ์๋๋ผ AI Workflow ์์ง๋์ด์ ๋๋ค. ๐๐๐