close

LangGraph là gì? Xây dựng AI agent có trạng thái, vòng lặp và multi-agent

Tác giả: Đông Tùng Ngày đăng: 10/12/2025 Chuyên mục: AI Agent
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Tino Group có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

LangGraph là framework mã nguồn mở (giấy phép MIT) của LangChain, Inc. để xây dựng AI agent và luồng xử lý LLM có trạng thái, chạy dài, dưới dạng đồ thị gồm các node và cạnh, cho phép vòng lặp, rẽ nhánh, lưu checkpoint và dừng chờ người duyệt. Bản hiện hành là langgraph 1.2.18 (đối chiếu 29/10/2026 trên PyPI). Khái niệm agent nói chung có ở bài AI agent là gì; model trong graph vẫn gọi qua API key, xem cách lấy LLM API key miễn phí.

Bài này đi qua kiến trúc State, Node, Edge, các tính năng chính, khi nào chọn LangGraph thay vì LangChain, ứng dụng thực tế và code mẫu chạy được với bản 1.x.

Tổng quan về LangGraph

LangGraph sinh ra cho những bài toán mà chuỗi xử lý thẳng một chiều không đủ: agent phải thử, xem kết quả, quay lại sửa, hỏi lại người dùng hoặc chờ quản lý duyệt. Bạn mô tả các bước thành node, nối chúng bằng cạnh có điều kiện, và LangGraph giữ trạng thái chung xuyên suốt.

LangGraph là gì?

LangGraph là framework điều phối cấp thấp do đội ngũ LangChain phát triển, dùng được độc lập hoặc cùng LangChain, dành cho việc xây dựng ứng dụng sử dụng mô hình ngôn ngữ lớn (LLM) có khả năng duy trì trạng thái và vận hành theo một hoặc nhiều tác tử (agent). Thay vì phụ thuộc vào quy trình xử lý tuyến tính dạng DAG (Directed Acyclic Graph), framework này cho phép kỹ sư kiến tạo luồng tác vụ dưới dạng đồ thị linh hoạt, hỗ trợ hình thành các vòng lặp xử lý liên tục nhằm tăng cường khả năng suy luận, ghi nhớ ngữ cảnh và ra quyết định thích ứng.

Giải pháp LangGraph đặc biệt hiệu quả cho những hệ thống AI Agent đòi hỏi kiểm soát luồng dữ liệu chặt chẽ, duy trì tính nhất quán và vận hành ổn định trong các tình huống phức tạp.

Còn LangChain là framework lớp cao để dựng ứng dụng LLM; từ bản 1.0, agent tạo bằng create_agent của LangChain chạy trên LangGraph. Theo tài liệu LangGraph, nên bắt đầu bằng agent của LangChain nếu chỉ cần vòng lặp gọi tool chuẩn, và xuống LangGraph khi cần tự quyết từng bước.

Kiến trúc và thành phần chính trong LangGraph

Một ứng dụng LangGraph gồm bốn phần: State là dữ liệu chung, Node là các bước xử lý, Edge quyết định bước tiếp theo, và StateGraph gom tất cả lại rồi biên dịch thành ứng dụng chạy được. Hiểu bốn phần này là đọc được hầu hết code LangGraph.

1. State (Trạng thái)

Trạng thái đóng vai trò là “bộ nhớ chung” của toàn bộ ứng dụng. Thành phần này thường được định nghĩa dưới dạng một cấu trúc dữ liệu cụ thể (như TypedDict hoặc Pydantic model; với chatbot thường dùng sẵn MessagesState, chứa danh sách tin nhắn), có nhiệm vụ lưu trữ và theo dõi thông tin xuyên suốt vòng đời của ứng dụng. Khi luồng công việc di chuyển qua các bước xử lý, trạng thái sẽ được bảo lưu, cập nhật hoặc bổ sung dữ liệu mới. Cơ chế này đảm bảo rằng mỗi bước tiếp theo đều nắm được đầy đủ ngữ cảnh của các bước trước đó, giúp hệ thống đưa ra phản hồi chính xác và nhất quán.

2. Nodes (Nút xử lý)

Các Nodes (nút) đại diện cho những đơn vị thực thi công việc cụ thể hoặc các tác tử (Agents). Mỗi Nodes thường là một hàm Python hoặc một chuỗi xử lý (runnable) của LangChain. Nhiệm vụ của Nodes là tiếp nhận trạng thái hiện tại làm đầu vào, thực hiện các tác vụ tính toán (như gọi API, truy vấn cơ sở dữ liệu hoặc xử lý logic nội bộ) và trả về một bản cập nhật cho trạng thái. Trong kiến trúc tổng thể, các Nodes đóng vai trò là những “trạm làm việc” nơi dữ liệu được biến đổi trước khi chuyển sang giai đoạn tiếp theo.

3. Edges (Cạnh kết nối)

Cạnh là những đường liên kết quy định luồng di chuyển của dữ liệu giữa các Nodes. LangGraph phân loại thành hai dạng cạnh chính để tối ưu hóa quy trình:

  • Cạnh thông thường (Normal Edges): Quy định sự chuyển tiếp trực tiếp và cố định từ nút này sang nút khác (Ví dụ: Luôn đi từ nút A sang nút B).
  • Cạnh có điều kiện (Conditional Edges): Đây là yếu tố tạo nên sự thông minh cho hệ thống. Loại cạnh này cho phép ứng dụng tự động lựa chọn hướng đi tiếp theo dựa trên kết quả của bước trước đó hoặc dựa trên trạng thái hiện tại. Nhờ vậy, AI có thể rẽ nhánh logic, quay lại bước cũ để sửa lỗi hoặc kết thúc quy trình một cách linh hoạt.

4. StateGraph (Đồ thị trạng thái)

Tất cả các thành phần trên được quản lý và điều phối bởi một đối tượng gọi là StateGraph. Đối tượng này khởi tạo đồ thị (điểm vào là START, điểm kết thúc là END), xác định cấu trúc trạng thái ban đầu và thiết lập mạng lưới kết nối giữa các Nút và Cạnh. Sau khi hoàn tất thiết kế, StateGraph sẽ biên dịch (compile) toàn bộ cấu trúc thành một ứng dụng hoàn chỉnh (thường là một Runnable), sẵn sàng nhận đầu vào từ người dùng và thực thi luồng công việc theo logic đã lập trình.

Các tính năng nổi bật của LangGraph

Bốn tính năng khiến LangGraph khác một chuỗi gọi LLM thông thường: vòng lặp để agent tự sửa, trạng thái bền vững lưu qua checkpoint, điểm dừng chờ con người can thiệp, và khả năng cho nhiều agent cùng làm việc trên một đồ thị. Mỗi tính năng dưới đây gắn với một bài toán cụ thể.

Cấu trúc vòng lặp (Cycles) và khả năng tự sửa lỗi

Đây là tính năng định danh của LangGraph. Trong khi các framework trước đây thường hoạt động theo cơ chế một chiều (đầu vào -> xử lý -> đầu ra), LangGraph cho phép thiết lập các vòng lặp. Cơ chế này giúp AI Agent có thể quay lại các bước trước đó, suy nghĩ lại hoặc thực hiện lại một hành động nếu kết quả chưa đạt yêu cầu. Khả năng này mô phỏng sát sườn quy trình tư duy của con người: thử nghiệm, đánh giá sai sót và sửa đổi.

Quản lý trạng thái bền vững

LangGraph tích hợp sẵn khả năng ghi nhớ trạng thái (State) một cách tự động. Mọi dữ liệu, lịch sử hội thoại hay kết quả trung gian đều được lưu trữ và cập nhật qua từng bước đi trong đồ thị. Nhờ checkpointer, ứng dụng có thể chạy tiếp từ bước gần nhất khi bị gián đoạn (durable execution) và nhớ ngữ cảnh qua nhiều lượt theo từng thread_id.

Human-in-the-loop (Sự can thiệp của con người)

Đối với các quy trình nghiệp vụ nhạy cảm, việc để AI tự quyết định hoàn toàn có thể gây ra rủi ro. LangGraph cung cấp cơ chế cho phép con người tham gia vào quy trình duyệt hoặc chỉnh sửa hành động tiếp theo của AI trước khi hệ thống thực thi; trong code, việc này làm bằng hàm interrupt() (xem ví dụ bên dưới). Tính năng này đặc biệt quan trọng trong các lĩnh vực như tài chính, y tế hoặc chăm sóc khách hàng doanh nghiệp.

Hỗ trợ đa tác tử (Multi-Agent Collaboration)

Thư viện này được thiết kế để tối ưu hóa việc phối hợp giữa nhiều AI Agent với nhau. Nhà phát triển có thể tạo ra các “nhóm làm việc” kỹ thuật số, nơi mỗi Agent đảm nhiệm một vai trò chuyên biệt (ví dụ: một Agent chuyên viết code, một Agent chuyên kiểm thử) và giao tiếp, trao đổi dữ liệu với nhau thông qua đồ thị chung để hoàn thành mục tiêu lớn.

Khi các agent tự chuyển việc cho nhau thay vì đi theo một luồng cố định, mô hình đó thường được gọi là multi-agent swarm; hệ sinh thái LangGraph có gói langgraph-swarm cho kiểu này. Các mẫu kiến trúc khác xem ở AI system design pattern.

Tại sao cần sử dụng LangGraph thay vì LangChain thuần túy?

Câu hỏi này đến từ thời LangChain còn dựng agent bằng chain và AgentExecutor. Ở bản 1.x, agent của LangChain đã chạy trên LangGraph, nên câu hỏi thực tế hơn là: dùng agent dựng sẵn, hay tự vẽ đồ thị để kiểm soát từng bước. Bốn lý do dưới đây vẫn đúng cho lựa chọn thứ hai.

Vượt qua giới hạn của mô hình tuyến tính (DAG)

Chain kiểu cũ của LangChain hoạt động theo cấu trúc DAG – tức là các luồng xử lý đi thẳng từ điểm A đến điểm B mà không có sự quay đầu. Điều này hoạt động tốt cho các tác vụ đơn giản như tóm tắt văn bản hay dịch thuật. Tuy nhiên, để xây dựng một Agent thông minh biết tự suy luận và hoạt động trong môi trường biến động, lập trình viên cần các vòng lặp (Loops). LangGraph cung cấp khả năng này, cho phép tạo ra các quy trình linh hoạt và “thông minh” hơn nhiều so với các chuỗi cứng nhắc.

Kiểm soát luồng đi chi tiết hơn

Trong LangChain bản cũ, việc sử dụng AgentExecutor (nay thuộc gói langchain-classic) thường giống như làm việc với một “hộp đen” – lập trình viên khó can thiệp sâu vào cách Agent đưa ra quyết định bên trong. Ngược lại, LangGraph trao quyền kiểm soát hoàn toàn cho người phát triển. Bạn có thể định nghĩa chính xác từng trạng thái, từng điều kiện rẽ nhánh và cách hệ thống phản ứng trong mọi tình huống cụ thể. Sự minh bạch này giúp việc gỡ lỗi (debug) và tối ưu hóa hệ thống trở nên dễ dàng hơn.

Quản lý bộ nhớ ưu việt hơn

Với LangChain, việc duy trì bối cảnh trong các chuỗi dài thường đòi hỏi nhiều thao tác thủ công và dễ gặp lỗi mất dữ liệu. LangGraph giải quyết vấn đề này thông qua đối tượng State được chia sẻ toàn cục. Cách tiếp cận này giúp việc truyền tải dữ liệu giữa các bước xử lý trở nên mượt mà, đồng thời giảm thiểu đáng kể mã nguồn thừa (boilerplate code) cần viết để quản lý bộ nhớ.

Khả năng mở rộng cho các hệ thống lớn

Khi ứng dụng phát triển lớn hơn, việc nối dài các chuỗi LangChain sẽ tạo ra một cấu trúc cồng kềnh và khó bảo trì (“Spaghetti code”). LangGraph tổ chức mã nguồn dưới dạng các nút và cạnh độc lập, giúp kiến trúc ứng dụng trở nên mô-đun hóa. Nhờ đó, đội ngũ kỹ thuật có thể dễ dàng thêm mới, sửa đổi hoặc nâng cấp từng phần nhỏ của hệ thống mà không làm ảnh hưởng đến toàn bộ quy trình vận hành.

LangGraph hay LangChain: Khi nào nên chọn?

Chọn LangChain khi luồng xử lý rõ ràng và agent chỉ cần vòng gọi tool chuẩn; chọn LangGraph khi luồng có nhiều nhánh, vòng lặp, nhiều agent hoặc phải dừng chờ người duyệt. Bảng dưới so sánh theo năm tiêu chí kỹ thuật, cột LangChain mô tả kiểu chain và AgentExecutor cũ.

Tiêu chíLangChain kiểu cũ (Chains & AgentExecutor)LangGraph
Kiến trúc luồng (Flow)Tuyến tính (DAG): Dữ liệu đi theo một đường thẳng hoặc phân nhánh đơn giản (A -> B -> C). Không có đường quay lại.Đồ thị vòng (Cyclic): Dữ liệu có thể quay lại các bước trước đó (Loop). Hỗ trợ các quy trình lặp đi lặp lại phức tạp.
Quản lý trạng thái (State)Rời rạc: Trạng thái thường được truyền ngầm hoặc quản lý thủ công qua Memory. Khó kiểm soát khi chuỗi xử lý quá dài.Tập trung & Bền vững: Trạng thái là một đối tượng toàn cục (Global State), được cập nhật rõ ràng qua từng nút xử lý. Dễ dàng theo dõi và gỡ lỗi.
Kiểm soát logicMức độ trừu tượng cao: Sử dụng các thành phần có sẵn (như AgentExecutor) giúp triển khai nhanh nhưng khó tùy biến sâu vào logic bên trong.Mức độ chi tiết cao: Lập trình viên định nghĩa chính xác từng bước đi, điều kiện rẽ nhánh và cách hệ thống phản ứng với lỗi.
Đa tác tử (Multi-Agent)Hạn chế: Việc phối hợp nhiều Agent khá phức tạp và thiếu sự nhất quán trong giao tiếp.Tối ưu: Được thiết kế chuyên biệt để xây dựng hệ sinh thái nhiều Agent phối hợp nhịp nhàng.
Độ khó (Learning Curve)Thấp: Dễ tiếp cận cho người mới bắt đầu hoặc các ứng dụng đơn giản (MVP).Trung bình – Cao: Yêu cầu hiểu biết về lý thuyết đồ thị và tư duy lập trình hướng trạng thái.

Với LangChain 1.x, khoảng cách ở cột “Quản lý trạng thái” đã hẹp lại vì create_agent dùng chung checkpointer của LangGraph. Khác biệt còn lại chủ yếu là mức độ bạn tự định nghĩa luồng.

Khi nào nên chọn LangChain?

LangChain vẫn là lựa chọn tuyệt vời cho các ứng dụng có quy trình xử lý rõ ràng, cố định và không yêu cầu AI phải “suy nghĩ lại”. Hãy sử dụng LangChain khi:

  • Xây dựng ứng dụng RAG cơ bản: Hỏi đáp trên tài liệu với quy trình chuẩn (Truy vấn -> Tìm kiếm -> Trả lời).
  • Các tác vụ tuyến tính: Tóm tắt văn bản, dịch thuật, trích xuất thông tin đơn giản.
  • Cần triển khai nhanh: Khi mục tiêu là đưa ra sản phẩm thử nghiệm trong thời gian ngắn mà không cần logic điều hướng phức tạp.
  • Người phát triển mới làm quen: Đội ngũ kỹ thuật chưa có nhiều kinh nghiệm với LLM và muốn tận dụng các mẫu (templates) có sẵn.

Khi nào nên chọn LangGraph?

LangGraph phù hợp khi ứng dụng đòi hỏi sự linh hoạt, khả năng tự chủ và độ tin cậy cao. Hãy chuyển sang LangGraph khi:

  • Xây dựng AI Agent tự hành: Hệ thống cần tự lên kế hoạch, thực hiện hành động, kiểm tra kết quả và tự sửa lỗi nếu thất bại (Ví dụ: Agent viết code tự chạy thử và sửa bug).
  • Quy trình nghiệp vụ có vòng lặp: Các tác vụ yêu cầu sự tương tác qua lại liên tục, ví dụ như một chatbot thu thập thông tin khách hàng cần hỏi lại nếu dữ liệu nhập vào không hợp lệ.
  • Hệ thống Multi-Agent: Cần phối hợp một nhóm các trợ lý ảo chuyên biệt (một trợ lý tìm kiếm, một trợ lý viết bài, một trợ lý kiểm duyệt) làm việc cùng nhau.
  • Yêu cầu Human-in-the-loop: Ứng dụng cần tạm dừng để chờ con người phê duyệt trước khi tiếp tục bước tiếp theo (Ví dụ: Duyệt chi ngân sách, phê duyệt nội dung nhạy cảm).

Ứng dụng thực tế của LangGraph trong doanh nghiệp

LangGraph được dùng ở các quy trình nhiều bước có kiểm tra và sửa lỗi: chăm sóc khách hàng cần hỏi lại thông tin, phân tích dữ liệu tự sửa câu SQL, vòng code, test, sửa, phê duyệt nội dung có người tham gia và nghiên cứu lặp nhiều lượt.

Hệ thống chăm sóc khách hàng & xử lý khiếu nại chuyên sâu

Các chatbot truyền thống thường gặp khó khăn khi khách hàng thay đổi ý định hoặc cung cấp thông tin rời rạc. Với LangGraph, doanh nghiệp có thể xây dựng các trợ lý ảo có khả năng:

  • Thu thập và xác thực thông tin: Nếu khách hàng muốn đổi vé máy bay, AI sẽ kiểm tra trạng thái vé. Nếu thiếu thông tin (ngày mới, giờ bay), hệ thống sẽ tự động quay lại bước hỏi (Loop) cho đến khi có đủ dữ liệu hợp lệ thay vì báo lỗi.
  • Duy trì ngữ cảnh dài hạn: Hệ thống ghi nhớ toàn bộ lịch sử trao đổi để xử lý các yêu cầu kéo dài qua nhiều ngày mà không bắt khách hàng lặp lại vấn đề từ đầu.

Trợ lý phân tích dữ liệu & lập báo cáo tài chính

Quy trình phân tích dữ liệu thường đòi hỏi nhiều bước thử sai. LangGraph cho phép thiết lập một quy trình làm việc khép kín cho AI Agent:

  • Tự động sửa lỗi truy vấn: Khi Agent tạo ra một câu lệnh SQL để lấy dữ liệu doanh thu nhưng gặp lỗi cú pháp, đồ thị sẽ điều hướng quy trình quay lại bước “Viết code” để sửa lại câu lệnh dựa trên thông báo lỗi, thay vì trả về kết quả rỗng cho người dùng.
  • Tổng hợp đa nguồn: Hệ thống có thể phối hợp nhiều Agent con (một Agent tìm kiếm tin tức thị trường, một Agent đọc báo cáo nội bộ) để tổng hợp thành một bản báo cáo chiến lược hoàn chỉnh.
Sơ đồ kiến trúc AI agent dùng LangGraph nối OpenAI, Auth0, Vercel AI SDK, Gmail, SerpApi
Ví dụ kiến trúc một AI agent dùng LangGraph, nối LLM, lớp xác thực và các dịch vụ như Gmail, SerpApi

Tự động hóa quy trình phát triển phần mềm

Đây là nhóm ứng dụng dùng vòng lặp rõ nhất của LangGraph. Các công ty công nghệ có thể tạo ra các “Kỹ sư AI” ảo hỗ trợ đội ngũ lập trình viên:

  • Quy trình Code – Test – Fix: Agent viết mã nguồn -> Chạy thử nghiệm (Unit Test) -> Nếu thất bại, hệ thống quay ngược lại bước viết mã để sửa lỗi -> Chạy lại kiểm thử. Vòng lặp này tiếp diễn cho đến khi mã nguồn chạy đúng yêu cầu.
  • Review code tự động: AI Agent đóng vai trò người kiểm duyệt, quét các lỗ hổng bảo mật và đề xuất chỉnh sửa trước khi mã được hợp nhất vào hệ thống chính.

Quy trình phê duyệt nội dung có sự tham gia của con người

Trong các lĩnh vực nhạy cảm như Marketing hay Pháp lý, việc để AI tự đăng tải nội dung chứa đựng nhiều rủi ro. LangGraph cung cấp giải pháp tích hợp con người vào luồng xử lý:

  • Cơ chế tạm dừng: AI soạn thảo nội dung email marketing hoặc hợp đồng -> Hệ thống chuyển sang trạng thái “Chờ duyệt” và gửi thông báo cho quản lý.
  • Phản hồi linh hoạt: Nếu quản lý chọn “Đồng ý”, quy trình tiếp tục đi đến bước “Gửi”. Nếu chọn “Chỉnh sửa”, hệ thống sẽ quay lại bước “Soạn thảo” kèm theo ghi chú góp ý của quản lý để AI viết lại.

Trợ lý nghiên cứu thị trường & tổng hợp tin tức

Thay vì chỉ tìm kiếm một lần và trả về kết quả sơ sài, ứng dụng LangGraph có thể thực hiện quy trình nghiên cứu sâu:

  • Agent thực hiện tìm kiếm ban đầu -> Đọc và đánh giá độ tin cậy của nguồn tin -> Nếu thông tin chưa đủ, hệ thống tự động tạo từ khóa tìm kiếm mới và lặp lại quy trình.
  • Cuối cùng, Agent biên tập lại toàn bộ thông tin thành một bài phân tích chuyên sâu với đầy đủ dẫn chứng, giúp ban lãnh đạo tiết kiệm hàng giờ đọc tài liệu.

Hướng dẫn cài đặt và sử dụng LangGraph cơ bản

Để chạy các ví dụ dưới đây, bạn cần Python 3.10 trở lên (yêu cầu của langgraph 1.2.18 trên PyPI) và một API key của hãng model. Code bám theo quickstart chính thức, đã chạy thử với model giả trên langgraph 1.2.18; khi chạy thật, đổi tên model cho phù hợp.

Cài đặt thư viện

python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install -U langgraph langchain "langchain[openai]"
export OPENAI_API_KEY="..."        # Windows PowerShell: $env:OPENAI_API_KEY="..."
# Dùng Claude/Gemini: cài "langchain[anthropic]" hoặc "langchain[google-genai]" và đặt key tương ứng

Cấu trúc cơ bản của một LangGraph

from langchain.chat_models import init_chat_model
from langgraph.graph import StateGraph, MessagesState, START, END
from langgraph.checkpoint.memory import InMemorySaver

model = init_chat_model("openai:gpt-6-luna")   # dạng "hãng:model", đổi theo model bạn dùng

# Node: nhận state, trả phần state cần cập nhật
def chatbot(state: MessagesState):
    return {"messages": [model.invoke(state["messages"])]}

builder = StateGraph(MessagesState)   # MessagesState tự nối thêm tin nhắn mới vào danh sách
builder.add_node("chatbot", chatbot)
builder.add_edge(START, "chatbot")
builder.add_edge("chatbot", END)

app = builder.compile(checkpointer=InMemorySaver())   # checkpointer giữ state giữa các lượt

Chạy graph đơn giản nhất (chatbot cơ bản)

config = {"configurable": {"thread_id": "abc123"}}   # mỗi cuộc hội thoại một thread_id
user = {"messages": [{"role": "user", "content": "Xin chào, bạn tên gì?"}]}

for event in app.stream(user, config, stream_mode="values"):
    event["messages"][-1].pretty_print()

Kết quả sẽ in ra tin nhắn của assistant.

Ví dụ thực tế: Agent có công cụ (Tools) + vòng lặp

from langchain.tools import tool
from langgraph.prebuilt import ToolNode, tools_condition

@tool
def search(query: str) -> str:
    """Tìm kiếm trên Internet (giả lập)."""
    return f"Kết quả giả lập cho: {query}"

tools = [search]
model_with_tools = model.bind_tools(tools)

def agent(state: MessagesState):
    return {"messages": [model_with_tools.invoke(state["messages"])]}

builder = StateGraph(MessagesState)
builder.add_node("agent", agent)
builder.add_node("tools", ToolNode(tools))
builder.add_edge(START, "agent")
builder.add_conditional_edges("agent", tools_condition)   # có tool_calls -> "tools", không -> END
builder.add_edge("tools", "agent")                       # chạy tool xong quay lại agent
graph = builder.compile(checkpointer=InMemorySaver())

config = {"configurable": {"thread_id": "123"}}
msg = {"messages": [{"role": "user", "content": "Thời tiết hôm nay ở Hà Nội thế nào?"}]}
for chunk in graph.stream(msg, config, stream_mode="values"):
    chunk["messages"][-1].pretty_print()
Sơ đồ LangGraph: START tới node agent gọi model; nếu có tool_calls thì sang node tools rồi trả kết quả về agent; không gọi tool thì tới END; checkpointer lưu state theo thread_id

Visualize graph (rất hữu ích khi debug)

# In sơ đồ dạng Mermaid (dán vào trình xem Mermaid để thấy hình), không cần mạng
print(graph.get_graph().draw_mermaid())

Muốn xem và chạy thử graph trên giao diện web (LangGraph Studio), dùng CLI. Theo tài liệu CLI, lệnh langgraph dev chạy server phát triển tại 127.0.0.1:2024, không cần Docker, cần Python 3.11 trở lên và một file langgraph.json khai báo graph.

pip install -U "langgraph-cli[inmem]"
langgraph dev
Giao diện trace LangGraph hiển thị các bước agent, tools và dữ liệu input, output của một lượt chạy
Trace một lượt chạy graph (agent gọi tool search rồi trả lời). Giao diện tại thời điểm chụp, có thể đã đổi

Một số mẹo hay

  • Luôn gắn checkpointer khi cần nhớ qua nhiều lượt: InMemorySaver để thử, PostgresSaver (gói langgraph-checkpoint-postgres) khi chạy thật để state không mất khi khởi động lại.
  • Dùng MessagesState hoặc reducer add_messages (import từ langgraph.graph.message) để tin nhắn mới được nối thêm, không ghi đè.
  • Dùng ToolNode và tools_condition có sẵn thay vì tự viết hàm rẽ nhánh cho vòng gọi tool.
  • Thêm bước chờ người duyệt bằng interrupt(); graph dừng lại, lưu state, và chạy tiếp khi bạn gửi Command(resume=...) với cùng thread_id:
from langgraph.types import interrupt, Command

def duyet(state: MessagesState):
    quyet_dinh = interrupt({"ban_nhap": state["messages"][-1].content})   # dừng, chờ người duyệt
    return {"messages": [{"role": "user", "content": f"Quản lý: {quyet_dinh}"}]}

# ... thêm node "duyet" vào graph, compile với checkpointer ...
cfg = {"configurable": {"thread_id": "duyet-1"}}
graph.invoke({"messages": [{"role": "user", "content": "Bản nháp email"}]}, cfg)   # trả về __interrupt__
graph.invoke(Command(resume="Đồng ý gửi"), cfg)                                    # chạy tiếp

Tạo dự án từ template

pip install -U "langgraph-cli[inmem]"
langgraph new my-agent --template new-langgraph-project-python

Với langgraph-cli 0.4.40 (đối chiếu 29/10/2026), các template có sẵn gồm new-langgraph-project-python, agent-python, deep-agent-python và bản JavaScript tương ứng; chạy langgraph new --help để xem danh sách hiện hành.

Bảo mật API key

  • Đặt key trong biến môi trường hoặc file .env nằm trong .gitignore; không ghi key vào code, không commit lên repo công khai, không đưa vào phần chạy trên trình duyệt.
  • Đặt giới hạn chi tiêu trong console của hãng model: graph có vòng lặp mà thiếu điều kiện dừng có thể gọi model liên tục.
  • Nghi lộ key thì thu hồi và tạo key mới ngay, rồi kiểm tra trang Usage.
  • Xem thêm cách quản lý credential an toàn ở bài bảo mật credentials và API key trong n8n.

Chạy LangGraph agent 24/7: tự host hay dùng nền tảng?

Khi agent cần chạy liên tục, nhận webhook hoặc chạy theo lịch, bạn có hai hướng: dùng dịch vụ triển khai có quản lý của LangChain (LangSmith Deployment), hoặc tự host trên máy chủ của mình. Tự host cho bạn quyền kiểm soát dữ liệu và chi phí cố định, đổi lại phải tự vận hành.

  • Đóng gói: langgraph build tạo Docker image chứa API server cho graph; hoặc tự bọc graph trong một API web (FastAPI, Flask) và chạy bằng Docker.
  • Lưu state: thay InMemorySaver bằng checkpointer Postgres để không mất hội thoại khi khởi động lại.
  • Bảo vệ endpoint: đặt sau HTTPS và xác thực; agent có tool thật thì ai gọi được endpoint là ra lệnh được cho agent.
  • Tài nguyên: graph chỉ gọi model qua API nên VPS CPU thông thường là đủ; nếu muốn chạy model local, xem local model là gì.

Cần máy chủ chạy 24/7 cho agent? VPS NVMe của Tino đặt tại Việt Nam, có quyền root để cài Docker, Postgres và graph của bạn. Xem cấu hình và giá trên trang sản phẩm. So sánh các lựa chọn khác ở bài chọn VPS chạy AI agent.

Giới hạn và khi nào không nên dùng LangGraph

LangGraph cho nhiều quyền kiểm soát nhưng không miễn phí về công sức: bạn phải tự thiết kế state, cạnh và điều kiện dừng. Với bài toán nhỏ, lớp đồ thị này có thể làm code dài hơn mà không thêm giá trị, nên cân nhắc các trường hợp dưới đây trước khi chọn.

  • Chỉ cần agent gọi tool chuẩn: dùng create_agent của LangChain, ít code hơn mà vẫn chạy trên LangGraph.
  • Luồng cố định, không có AI tự quyết bước tiếp theo: một workflow thông thường hoặc công cụ như n8n dễ bảo trì hơn.
  • Đội ngũ chưa quen tư duy state và đồ thị: vòng lặp thiếu điều kiện dừng có thể chạy mãi và tốn token; luôn đặt giới hạn số bước (recursion_limit).
  • Cần chạy model lớn ngay trên máy chủ: LangGraph chỉ điều phối, không giúp model chạy nhanh hơn; phần cứng vẫn quyết định.

Câu hỏi thường gặp

LangGraph có thay thế hoàn toàn LangChain không?

Không. Hai thư viện bổ sung cho nhau: LangChain cung cấp model, tool và agent dựng sẵn (create_agent), còn LangGraph là lớp điều phối bên dưới. Bạn có thể dùng LangGraph một mình, nhưng thường vẫn dùng các lớp model, tool của LangChain bên trong node.

Người mới bắt đầu học AI có nên dùng LangGraph ngay không?

Nên bắt đầu bằng agent của LangChain hoặc gọi API trực tiếp để hiểu model, prompt và tool trước. LangGraph phù hợp khi bạn đã cần vòng lặp, trạng thái và điểm duyệt; lộ trình gợi ý có ở bài lộ trình học LLMs và AI agents.

LangGraph có miễn phí không?

Thư viện LangGraph là mã nguồn mở, giấy phép MIT (PyPI, 29/10/2026), không thu phí. Chi phí phát sinh từ API model, máy chủ chạy graph và các dịch vụ trả phí tuỳ chọn như LangSmith; xem cách tính token và credit của AI.

LangGraph hỗ trợ những ngôn ngữ lập trình nào?

Python và JavaScript/TypeScript (LangGraph.js). Bản Python yêu cầu Python 3.10 trở lên.

Sự khác biệt giữa LangGraph và AutoGPT là gì?

AutoGPT là một ứng dụng agent dựng sẵn để giao việc. LangGraph là framework để lập trình viên tự xây agent theo nghiệp vụ riêng, kiểm soát từng bước và điểm dừng.

Đông Tùng

Senior Technology Writer

Là cử nhân Quản trị kinh doanh của Trường Đại học Tài chính - Marketing, Tùng bắt đầu làm việc tại Tino Group từ năm 2021 ở vị trí Content Marketing để thỏa mãn niềm đam mê viết lách của bản thân. Sở hữu khả năng sáng tạo đặc biệt, anh cùng đội ngũ của mình đã tạo nên những chiến dịch quảng cáo độc đáo cùng vô số bài viết hữu ích về nhiều chủ đề khác nhau. Sự tỉ mỉ, kiên trì và tinh thần sáng tạo của Tùng đã góp phần lớn vào thành công của Tino Group trong lĩnh vực marketing trực tuyến.

Xem thêm bài viết

Bài viết liên quan

Mục lục
  1. Tổng quan về LangGraph
    1. LangGraph là gì?
    2. Kiến trúc và thành phần chính trong LangGraph
      1. 1. State (Trạng thái)
      2. 2. Nodes (Nút xử lý)
      3. 3. Edges (Cạnh kết nối)
      4. 4. StateGraph (Đồ thị trạng thái)
    3. Các tính năng nổi bật của LangGraph
      1. Cấu trúc vòng lặp (Cycles) và khả năng tự sửa lỗi
      2. Quản lý trạng thái bền vững
      3. Human-in-the-loop (Sự can thiệp của con người)
      4. Hỗ trợ đa tác tử (Multi-Agent Collaboration)
    4. Tại sao cần sử dụng LangGraph thay vì LangChain thuần túy?
      1. Vượt qua giới hạn của mô hình tuyến tính (DAG)
      2. Kiểm soát luồng đi chi tiết hơn
      3. Quản lý bộ nhớ ưu việt hơn
      4. Khả năng mở rộng cho các hệ thống lớn
    5. LangGraph hay LangChain: Khi nào nên chọn?
      1. Khi nào nên chọn LangChain?
      2. Khi nào nên chọn LangGraph?
    6. Ứng dụng thực tế của LangGraph trong doanh nghiệp
      1. Hệ thống chăm sóc khách hàng & xử lý khiếu nại chuyên sâu
      2. Trợ lý phân tích dữ liệu & lập báo cáo tài chính
      3. Tự động hóa quy trình phát triển phần mềm
      4. Quy trình phê duyệt nội dung có sự tham gia của con người
      5. Trợ lý nghiên cứu thị trường & tổng hợp tin tức
    7. Hướng dẫn cài đặt và sử dụng LangGraph cơ bản
      1. Cài đặt thư viện
      2. Cấu trúc cơ bản của một LangGraph
      3. Chạy graph đơn giản nhất (chatbot cơ bản)
      4. Ví dụ thực tế: Agent có công cụ (Tools) + vòng lặp
      5. Visualize graph (rất hữu ích khi debug)
      6. Một số mẹo hay
      7. Tạo dự án từ template
      8. Bảo mật API key
    8. Chạy LangGraph agent 24/7: tự host hay dùng nền tảng?
    9. Giới hạn và khi nào không nên dùng LangGraph
    10. Câu hỏi thường gặp

Xem nhiều