
LangGraph là gì?
LangGraph là framework mã nguồn mở của LangChain giúp xây dựng agentic AI workflows có trạng thái, quản lý vòng đời phức tạp và cấu trúc phân tán. Khác với các pipeline LLM đơn giản, LangGraph cho phép bạn định nghĩa đồ thị trạng thái, xử lý vòng lặp, điều kiện nhánh và quản lý state hiệu quả cho multi-agent systems.
Với sự phát triển của Claude Code, GPT-4o và các mô hình đa modal, các workflow tự động cần cấu trúc mạnh mẽ hơn simple prompt chaining. LangGraph cung cấp giải pháp đó.

LangGraph xây dựng trên 3 khái niệm chính: State, Nodes và Edges. State là dữ liệu được chia sẻ giữa các bước. Nodes là các hàm xử lý logic (LLM call, tool use, data transform). Edges định nghĩa luồng điều khiển giữa các nodes. State trong LangGraph thường là Python TypedDict hoặc Pydantic model. Mỗi node nhận state hiện tại, trả về state mới. Framework tự động merge và quản lý versioning của state — không cần tự xử lý dictionary forwarding thủ công. Điều này giúp debug dễ hơn vì bạn có thể inspect state tại bất kỳ node nào trong luồng.
Kiến trúc cốt lõi và so sánh với LangChain Agents cũ
LangChain trước đây có AgentExecutor — đơn giản nhưng bị giới hạn. Bạn không thể dễ dàng nhúng human-in-the-loop, giới hạn vòng lặp, hoặc chia nhỏ logic thành các bước có trạng thái. LangGraph giải quyết những vấn đề này bằng cấu trúc đồ thị rõ ràng.

State trong LangGraph thường là Python TypedDict hoặc Pydantic model. Mỗi node nhận state hiện tại, trả về state mới. Framework tự động merge và quản lý versioning của state — không cần tự xử lý dictionary forwarding thủ công. Điều này giúp debug dễ hơn vì bạn có thể inspect state tại bất kỳ node nào trong luồng.
Xây dựng agent đơn giản với LangGraph
Bắt đầu bằng cách định nghĩa state schema:
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END
class AgentState(TypedDict):
messages: Annotated[list, "append"]
next_step: str
result: str
Sau đó tạo graph:
def call_llm(state):
response = llm.invoke(state["messages"])
return {"messages": [response], "next_step": "tool"}
def use_tool(state):
# Tool execution logic
return {"next_step": "end"}
builder = StateGraph(AgentState)
builder.add_node("llm", call_llm)
builder.add_node("tool", use_tool)
builder.add_edge("START", "llm")
builder.add_conditional_edges(
"llm",
lambda s: s["next_step"],
{"tool": "tool", "end": END}
)
app = builder.compile()
Code trên tạo graph đơn giản với 2 nodes: llm gọi model, tool thực thi tool. conditional_edges quyết định node tiếp theo dựa trên next_step. Nếu next_step là "end", workflow kết thúc.
Human-in-the-loop và persistence
LangGraph hỗ trợ interrupt — workflow tạm dừng tại node bất kỳ để chờ input từ người dùng. Điều này quan trọng khi agent cần review hoặc approval trước khi thực thi hành động nhạy cảm. Bạn gọi app.interrupt() bên trong node, graph sẽ trả về interrupt tuple chứa current state và prompt.
Để lưu trạng thái giữa các lần chạy, LangGraph hỗ trợ PostgreSQL checkpointer. Bạn chỉ cần cấu hình connection string và graph sẽ tự động resume từ state cuối cùng — không cần custom database schema. Tích hợp với PostgreSQL rất đơn giản qua PostgresSaver.
Multi-agent với LangGraph
LangGraph không chỉ dùng cho single agent. Bạn có thể xây dựng multi-agent systems bằng cách định nghĩa các subgraph hoặc routing nodes. Ví dụ: supervisor agent phân công nhiệm vụ cho researcher agent, coder agent, và reviewer agent. Mỗi agent có graph riêng, kết hợp thành graph tổng lớn.
Khi một agent cần gọi agent khác, node có thể invoke subgraph và merge kết quả vào state hiện tại. State được chia sẻ tập trung nên không cần REST API hay message queue cho inter-agent communication.
Streaming và observability
LangGraph hỗ trợ streaming — bạn có thể nhận tokens từng chunk khi LLM generate response, hoặc nhận state updates sau mỗi node execution. Điều này quan trọng cho UX real-time (chat interface, progress bar). Sử dụng app.stream(inputs) thay vì app.invoke(inputs) để nhận async generator.
Để monitoring, LangGraph tích hợp LangSmith — platform observability cho LLM apps. Bạn có thể trace từng run, xem state tại mỗi node, đo latency, detect errors. Tích hợp chỉ cần set env var LANGSMITH_API_KEY.
Deployment và scaling
LangGraph chạy được ở mọi nơi: local development, serverless (AWS Lambda, Cloudflare Workers), Kubernetes, hoặc managed platform như LangGraph Platform. Platform version cung cấp managed infrastructure, horizontal scaling, authentication, và API endpoints tự động generate từ graph definition.
Khi scale, bạn có thể tách state storage (PostgreSQL), checkpointer (Redis cho fast reads), và execution workers. Horizontal scaling đơn giản vì graph execution là stateless — state lưu ở database.
Khi nào nên dùng LangGraph
LangGraph phù hợp khi bạn cần multi-step reasoning, human approval, tool orchestration phức tạp, hoặc agent có memory dài hạn. Nếu chỉ cần simple question-answering, direct LLM API call vẫn đủ. Nhưng với production workflows — code review, data pipeline, customer support triage — LangGraph cung cấp cấu trúc kiểm soát cần thiết.
