TROISINH
Làm quen AgentBản đồ framework

LangGraph: Graph-based agent workflows — Khi agent cần 'suy nghĩ' theo vòng lặp

LangGraph biến agent từ chuỗi hành động tuyến tính thành state machine với các vòng lặp phản tư, persistence và branching — giải pháp cho workflow phức tạp v...

Tại sao một số workflow agent cần "đi vòng" thay vì chỉ đi thẳng? Khi bạn xây dựng agent khảo sát tài liệu dài 100 trang — đọc → tóm tắt → phát hiện lỗ hổng → đọc thêm → sửa lại tóm tắt — cấu trúc tuyến tính (A→B→C) sẽ bóp nghẹt logic. LangGraph sinh ra để biến agent thành máy trạng thái (state machine) có vòng lặp, nhánh rẽ và bộ nhớ liên tục, thay vì chỉ là chuỗi prompt nối tiếp.

Vấn đề

Các framework agent thế hệ đầu (bao gồm LangChain gốc) thiết kế workflow dưới dạng DAG (Directed Acyclic Graph) — tức là đồ thị có hướng không chu kỳ. Prompt A gọi LLM → Output đi vào Prompt B → Kết thúc. Mô hình này gặp khủng hoảng khi:

  • Cần retry: Agent gọi API bị lỗi timeout → phải thử lại 3 lần rồi mới chuyển sang bước khác.
  • Human-in-the-loop: Giữa chừng cần dừng lại đợi người duyệt, sau đó có thể quay lại bước trước hoặc tiến tới bước mới tùy kết quả phê duyệt.
  • Branching động: Dựa vào độ dài output, agent tự quyết định chia nhỏ tài liệu (chunking) và xử lý song song, rồi merge lại — cấu trúc không thể biết trước khi chạy.

Code "if-else" lồng nhau trong Python nhanh chóng trở thành spaghetti, và việc debug trạng thái (state) sau 20 lượt gọi API trở thành ác mộng. Bạn cần một kiến trúc vừa deterministic (điều khiển luồng rõ ràng) vừa flexible (cho phép LLM quyết định đường đi).

Ý tưởng cốt lõi

LangGraph biến workflow thành đồ thị có chu kỳ (cyclic graph) gồm ba thành phần:

Nodes: Hành động là các "đỉnh"

Mỗi node là một hàm Python hoặc một Runnable (LLM, tool, hoặc human interrupt). Ví dụ:

  • agent_node: Gọi LLM để suy nghĩ
  • tool_node: Thực thi bash script hoặc API
  • human_review_node: Dừng lại đẩy notification lên Slack đợi approve

Edges: Cung nối có điều kiện

Không chỉ là A→B cố định, LangGraph hỗ trợ:

  • Conditional edges: Hàm routing kiểm tra state hiện tại (should_continue()) rồi quyết định đi tới continue_to_tool hay end.
  • Cycles: Cho phép quay lại agent_node sau khi tool trả về observation — tạo thành vòng lặp ReAct (Reasoning → Acting → Observing) tự nhiên.

State: Bộ nhớ chia sẻ giữa các turn

State là một dictionary (hoặc Pydantic model) được truyền qua các node. Mỗi node nhận state, thay đổi nó (ví dụ: thêm message mới vào list), rồi trả về. Điều này khác với context window thuần túy — state có cấu trúc, có thể persist vào database, và cho phép checkpointing (lưu trạng thái sau mỗi bước để resume sau crash).

Persistence & Human-in-the-loop

LangGraph tích hợp checkpoint bằng Postgres hoặc SQLite. Nếu server restart giữa chừng khi agent đang "suy nghĩ", bạn có thể resume đúng tại node đang dừng, không mất context. Tính năng interrupt cho phép inject human approval vào bất kỳ cung nào, biến agent thành hệ thống "tự chủ có giám sát" thay vì tự động hoàn toàn.

Tại sao nó hoạt động

Kiến trúc graph của LangGraph giải quyết separation of concerns giữa control flow và reasoning:

Control flow (điều khiển) là deterministic: Các cung (edges) được định nghĩa rõ ràng bằng code Python — không có hallucination ở tầng này. Bạn chắc chắn rằng sau khi chạy tool ssh_exec, hệ thống sẽ kiểm tra exit code trước khi quyết định retry hay proceed.

Reasoning (suy luận) là probabilistic: Nội dung bên trong node (prompt gửi LLM) vẫn là "mềm" — LLM quyết định viết gì trong message. Nhưng cấu trúc "sau khi viết xong thì đi đâu" là "cứng", ngăn agent lạc vào vòng lặp vô tận hoặc đi lạc hướng.

So với các pattern khác:

  • LangChain Expression Language (LCEL): Chỉ hỗ trợ DAG, không có vòng lặp.
  • CrewAI: Tập trung vào role-based delegation (Manager → Worker), ít kiểm soát cấp độ graph.
  • AutoGen: Dùng conversation thread, hỗ trợ loop nhưng khó debug vì trạng thái nằm rải rác trong history chat.

Ý nghĩa thực tế

Khi nào chọn LangGraph?

Đặc điểm workflowLangGraph phù hợp?Lý do
Cần vòng lặp retry (test → fix → retest)✅ Cực kỳCycles là first-class citizen
Human approval giữa các bước✅ Cực kỳInterrupt + State persistence
Logic branching phức tạp (nếu A thì X, nếu B thì Y)✅ Cực kỳConditional edges rõ ràng
Multi-agent với luồng nghiêm ngặt✅ TốtCó thể map agent vào node, dùng graph để điều phối
Chỉ là Q&A đơn giản 1 lượt❌ KhôngThiết lập graph quá nặng cho task đơn giản
Cần "vibe coding" nhanh gọn⚠️ Cân nhắcCrewAI hoặc OpenClaw nhanh hơn

Ví dụ production

1. Research Agent với verification loop Agent đọc tài liệu → Trích xuất claim → Kiểm chứng bằng search → Nếu conflict > 0.7 thì quay lại đọc thêm tài liệu, nếu < 0.3 thì ghi nhận kết luận. LangGraph cho phép loop này chạy tối đa 5 lần rồi forced exit, tránh infinite loop.

2. Customer Support Escalation Node đầu tiếp nhận ticket → Node phân loại (LLM quyết định technical/billing) → Nếu billing thì chạy node truy vấn Stripe API → Nếu API trả lỗi 5xx, edge điều hướng sang human_handoff_node và pause, đợi staff bấm "Resume" trên dashboard. State được lưu checkpoint nên staff có thể restart server mà không mất context khách hàng.

3. Code Generation với Test-Driven cycles planner_node viết test → coder_node viết code → test_runner_node chạy pytest → Nếu fail, conditional edge quay lại coder_node với error message; nếu pass, đi tới review_node. Toàn bộ history của 10 vòng lặp sửa lỗi được lưu trong state để review cuối cùng.

Hạn chế

  • Learning curve: Phải hiểu rõ state management và graph theory cơ bản, không "vibe code" được như Claude Code hay OpenClaw.
  • Boilerplate: Định nghĩa node, edge, state schema tốn nhiều dòng code hơn CrewAI (chỉ cần decorator @task).
  • Scaling horizontally: Graph chạy trên một process Python; để scale ra nhiều worker cần tự động hóa checkpoint và queue bên ngoài (Redis/RabbitMQ), không có sẵn như GoClaw.

Đào sâu hơn

Docs chính thức

Cùng cụm: Framework Landscape

Bản đồ AI Agent Framework 2026

Tổng quan vị trí 5 framework chính: OpenClaw, GoClaw, LangGraph, CrewAI, AutoGen trong hệ sinh thái AI

OpenClaw: Agent framework phổ biến nhất

So sánh LangGraph với runtime agent liên tục của OpenClaw — khi nào dùng graph, khi nào dùng message-oriented middleware

GoClaw: OpenClaw rebuilt bằng Go

Kiến trúc GoClaw cho enterprise-scale khác gì LangGraph Python-based?

CrewAI: Role-based multi-agent đơn giản nhất

Khi workflow chỉ cần "Manager phân công cho Workers", CrewAI có thể thay thế LangGraph phức tạp

Đọc tiếp

So sánh 5 framework head-to-head

Bảng quyết định: LangGraph vs CrewAI vs AutoGen vs OpenClaw/GoClaw — chọn framework nào cho use case của bạn?

Chạy agent đầu tiên

Bước tiếp theo: Thiết lập môi trường và chạy LangGraph agent "Hello World" với persistence

On this page