AI Agent framework là bộ công cụ giúp nhà phát triển xây dựng AI Agent — chương trình có thể lập kế hoạch, gọi công cụ, ghi nhớ ngữ cảnh và tự thực hiện nhiều bước để hoàn thành một mục tiêu — mà không phải tự viết lại toàn bộ vòng lặp suy luận, quản lý trạng thái và xử lý lỗi. Trong bốn framework được so sánh trong bài này, LangChain/LangGraph mạnh nhất về kiểm soát trạng thái và quy trình production phức tạp, CrewAI nhanh nhất để làm prototype đa agent theo vai trò, Microsoft AutoGen đã bị lưu trữ và không còn được Microsoft bảo trì nên dự án mới cần chuyển sang Microsoft Agent Framework, còn OpenAI Agents SDK là con đường gọn nhẹ nhất cho nhà phát triển xây agent trên hệ sinh thái OpenAI. Không có framework nào tốt nhất cho mọi trường hợp; lựa chọn đúng phụ thuộc vào độ phức tạp của quy trình, yêu cầu kiểm soát, ngôn ngữ bạn dùng và mức độ bạn sẵn sàng bị khóa vào một nhà cung cấp.
Bài viết này viết cho nhà phát triển, không viết cho nhà quản lý. Nó đi thẳng vào cơ chế của từng framework: LangGraph mô hình hóa agent như một đồ thị trạng thái như thế nào, CrewAI tổ chức agent theo vai trò và task ra sao, AutoGen tổ chức agent thành cuộc hội thoại nhóm như thế nào và vì sao bạn không nên bắt đầu dự án mới trên nó vào cuối năm 2026, OpenAI Agents SDK dùng ba khái niệm Agent, Handoff và Guardrail để xây agent ra sao. Bài viết có ví dụ code khái niệm cho từng framework, bảng so sánh chi tiết, ma trận quyết định theo từng loại dự án và lộ trình học bốn tuần để bạn bắt đầu được ngay.
AI Agent framework là gì? Định nghĩa ngắn gọn cho nhà phát triển
AI Agent framework là một thư viện hoặc runtime cung cấp sẵn các khối xây dựng cho agent: vòng lặp gọi mô hình ngôn ngữ lớn (LLM), cơ chế gọi công cụ (tool calling), quản lý bộ nhớ và trạng thái, điều phối nhiều agent, xử lý lỗi và thử lại, ghi log và quan sát được quá trình chạy (observability), và điểm dừng để con người phê duyệt (human-in-the-loop). Thay vì bạn tự viết một vòng lặp while gọi LLM, phân tích JSON trả về, gọi hàm Python tương ứng, rồi lặp lại cho đến khi xong, framework lo phần khung đó và bạn chỉ cần định nghĩa agent, công cụ và luồng công việc.
Một agent, ở mức tối thiểu, gồm ba thành phần: một mô hình ngôn ngữ làm bộ não suy luận, một tập công cụ để tác động lên thế giới bên ngoài (tìm kiếm web, truy vấn cơ sở dữ liệu, gửi email, gọi API), và một vòng lặp điều khiển quyết định khi nào suy luận, khi nào gọi công cụ, khi nào dừng lại và trả lời. Nhiều agent còn có thêm bộ nhớ ngắn hạn (lịch sử hội thoại trong một phiên) và bộ nhớ dài hạn (thông tin đã học qua nhiều phiên), cùng khả năng lập kế hoạch nhiều bước và tự sửa lỗi khi một bước thất bại. Framework không tạo ra trí thông minh; nó tạo ra cấu trúc để trí thông minh của mô hình được dùng một cách có kiểm soát, có thể lặp lại và có thể gỡ lỗi.
Một lưu ý quan trọng được nhiều tài liệu 2026 nhấn mạnh: với một agent đơn giản có dưới 10 công cụ, bạn không nhất thiết cần framework. Một vòng lặp while, một mô hình hỗ trợ function calling và vài định nghĩa công cụ viết tay đã đủ, và code của bạn sẽ dễ hiểu hơn nhiều so với việc kéo cả một framework nặng nề vào. Framework bắt đầu có giá trị khi agent của bạn có rẽ nhánh, vòng lặp, cần tạm dừng để con người phê duyệt, cần chạy lâu và có thể khôi phục sau khi crash, hoặc cần nhiều agent phối hợp với nhau. Nếu bạn chưa gặp những nhu cầu đó, hãy bắt đầu đơn giản và chỉ thêm framework khi vấn đề thực sự xuất hiện.
Ba mô hình tư duy khác nhau ẩn sau bốn framework
Bốn framework trong bài này đại diện cho ba cách tư duy khác nhau về cách tổ chức agent. LangGraph tư duy theo đồ thị trạng thái: bạn vẽ một sơ đồ gồm các node (bước xử lý) và các cạnh (đường chuyển đổi), trạng thái được chia sẻ và lưu lại sau mỗi bước. CrewAI tư duy theo vai trò: bạn định nghĩa một nhóm (crew) gồm các agent có vai trò, mục tiêu và tiểu sử riêng, giao cho mỗi agent một nhiệm vụ, và framework lo việc chuyển giao kết quả giữa các agent. AutoGen tư duy theo hội thoại: bạn cho các agent nói chuyện với nhau trong một group chat, mỗi agent phản hồi tin nhắn của agent khác cho đến khi vấn đề được giải quyết. OpenAI Agents SDK tư duy theo vòng lặp tối giản: một agent là một mô hình cộng với công cụ và một vòng lặp, và việc chuyển giao cho agent chuyên biệt được thực hiện bằng handoff.
Cách tư duy bạn chọn sẽ quyết định code của bạn trông như thế nào và lỗi của bạn khó gỡ đến mức nào. Với đồ thị trạng thái, bạn nhìn thấy toàn bộ luồng công việc trên một sơ đồ và có thể dừng, kiểm tra và tua lại từng bước. Với vai trò, bạn viết ít code hơn và prototype nhanh hơn, nhưng luồng điều khiển bị ẩn bên trong framework và khi agent làm sai, bạn khó biết chính xác nó đã rẽ sang bước nào. Với hội thoại, bạn có thể mô phỏng cách con người cộng tác, nhưng cuộc hội thoại có thể kéo dài, lặp lại hoặc đi chệch hướng nếu không có người điều phối tốt. Với vòng lặp tối giản, bạn hiểu rõ mọi thứ đang xảy ra, nhưng bạn phải tự xây thêm các tính năng như quản lý trạng thái phức tạp hay điều phối đa agent khi nhu cầu tăng lên.
Kiến trúc agent ở mức kỹ thuật: lập kế hoạch, gọi công cụ, bộ nhớ
Ở mức kỹ thuật, một agent hoạt động theo một vòng lặp suy luận – hành động – quan sát, thường được gọi là ReAct (Reason + Act). Agent nhận mục tiêu và ngữ cảnh, suy luận xem bước tiếp theo nên làm gì, chọn một công cụ và tham số để gọi, nhận kết quả trả về, cập nhật hiểu biết của mình, rồi lặp lại cho đến khi mục tiêu hoàn thành hoặc đạt giới hạn số bước. Mỗi vòng lặp tốn một lần gọi LLM, vì vậy số bước tối đa, chi phí token và thời gian chạy đều tăng theo độ phức tạp của nhiệm vụ. Bạn cần đặt giới hạn bước tối đa và ngân sách token cho mỗi lần chạy, nếu không một agent bị kẹt có thể gọi LLM hàng trăm lần và tạo ra hóa đơn lớn.
Lập kế hoạch là khả năng chia một mục tiêu lớn thành các bước nhỏ. Một số framework để LLM tự lập kế hoạch trong từng bước (reactive planning), một số cho phép bạn định nghĩa kế hoạch trước dưới dạng đồ thị hay danh sách task (explicit planning). Lập kế hoạch tường minh dễ kiểm soát và dễ gỡ lỗi hơn, nhưng kém linh hoạt khi nhiệm vụ thay đổi giữa chừng. Lập kế hoạch phản ứng linh hoạt hơn, nhưng khó dự đoán và khó kiểm thử. LangGraph thiên về lập kế hoạch tường minh qua đồ thị, CrewAI thiên về lập kế hoạch qua task và vai trò, AutoGen thiên về lập kế hoạch nổi lên từ hội thoại, còn OpenAI Agents SDK để LLM tự quyết định phần lớn trong vòng lặp.
Gọi công cụ là khả năng của agent để tác động lên thế giới bên ngoài. Về mặt kỹ thuật, công cụ là một hàm có mô tả rõ ràng (tên, mô tả, tham số, kiểu dữ liệu) mà LLM có thể chọn và gọi bằng cách sinh ra một lời gọi hàm có cấu trúc. Framework chịu trách nhiệm chuyển lời gọi hàm đó thành một lần thực thi thật, kiểm tra tham số, xử lý lỗi và trả kết quả về cho LLM. Các công cụ phổ biến gồm tìm kiếm web, đọc file, truy vấn cơ sở dữ liệu, gọi API nội bộ, gửi email và chạy code. Chất lượng của công cụ quyết định phần lớn chất lượng của agent: một công cụ có mô tả mơ hồ sẽ khiến LLM gọi sai tham số, một công cụ trả về quá nhiều dữ liệu sẽ làm tràn ngữ cảnh, một công cụ không có xử lý lỗi sẽ khiến agent dừng lại khi gặp lỗi nhỏ.
Bộ nhớ của agent chia thành ba loại. Bộ nhớ ngắn hạn là lịch sử hội thoại và trạng thái hiện tại của một lần chạy, thường lưu trong một đối tượng state hoặc session. Bộ nhớ làm việc là các ghi chú, kế hoạch và kết quả trung gian mà agent tạo ra trong quá trình làm việc. Bộ nhớ dài hạn là kiến thức được lưu trữ qua nhiều phiên, ví dụ thông tin về người dùng, sở thích hay các sự kiện đã xảy ra, thường lưu trong cơ sở dữ liệu vector hoặc cơ sở dữ liệu quan hệ. LangGraph quản lý bộ nhớ qua state và checkpointer, CrewAI có bộ nhớ tích hợp cho agent và crew, AutoGen quản lý bộ nhớ qua lịch sử hội thoại, còn OpenAI Agents SDK quản lý bộ nhớ qua Session, với SQLiteSession là cài đặt có sẵn.
LangChain và LangGraph: kiểm soát tối đa cho production phức tạp
LangChain là framework lâu đời và lớn nhất trong bốn framework, ra mắt năm 2022 và nhanh chóng trở thành hệ sinh thái lớn nhất cho ứng dụng LLM. LangGraph là phần mở rộng của LangChain, được viết lại mạnh mẽ từ quý 3/2024, và hiện là lớp runtime được khuyến nghị cho các agent production. Trong khi LangChain ban đầu cung cấp AgentExecutor — một abstraction cũ cho agent chạy theo chuỗi — LangGraph thay thế nó bằng một mô hình đồ thị trạng thái rõ ràng và mạnh mẽ hơn nhiều. Bạn có thể dùng LangGraph độc lập mà không cần toàn bộ LangChain, nhưng việc kết hợp với các integration của LangChain cho LLM và công cụ sẽ giúp bạn tiết kiệm thời gian.
Cơ chế cốt lõi của LangGraph là StateGraph. Bạn định nghĩa một schema trạng thái có kiểu rõ ràng, ví dụ một TypedDict chứa danh sách messages, kế hoạch hiện tại, kết quả công cụ và cờ phê duyệt. Bạn đăng ký các node — mỗi node là một hàm nhận trạng thái và trả về phần cập nhật của trạng thái — và nối chúng bằng các cạnh (edge). Cạnh có thể là cạnh xác định (luôn đi từ node A sang node B) hoặc cạnh có điều kiện (dựa trên trạng thái hiện tại mà quyết định đi sang node nào tiếp theo). Khi bạn biên dịch đồ thị, LangGraph tạo ra một runtime có thể chạy đồ thị, lưu checkpoint sau mỗi bước, tạm dừng để chờ con người, và tua lại từ bất kỳ checkpoint nào.
Checkpointing là tính năng làm nên tên tuổi của LangGraph. Mỗi khi đồ thị chuyển sang một node mới, trạng thái được lưu lại vào một checkpointer — có thể là MemorySaver cho test, SqliteSaver cho phát triển local, hoặc PostgresSaver cho production. Mỗi lần chạy được gắn với một thread_id, ví dụ refund-{order_id} cho một yêu cầu hoàn tiền, và bạn có thể khôi phục đúng thread đó sau nhiều giờ hoặc nhiều ngày. Điều này có nghĩa là một agent có thể tạm dừng giữa chừng, máy chủ có thể khởi động lại, và agent vẫn tiếp tục được từ đúng chỗ đã dừng, không mất ngữ cảnh. Đây là tính năng bắt buộc cho các agent chạy lâu, xử lý giao dịch tài chính hay cần phê duyệt của con người.
Human-in-the-loop trong LangGraph được thực hiện bằng hàm interrupt(). Bạn gọi interrupt(payload) bên trong một node, đồ thị sẽ lưu trạng thái, dừng lại và trả payload về cho code gọi. Không có tiến trình nào bị chặn, không có tài nguyên nào bị giữ; lần chạy đã tạm dừng chỉ còn là các dòng dữ liệu trong bảng checkpoint. Khi con người trả lời, bạn gọi lại đồ thị với Command(resume=value) trên cùng thread_id, LangGraph tải checkpoint mới nhất và tiếp tục. Một điểm cần nhớ là node bị ngắt sẽ chạy lại từ dòng đầu tiên khi resume, không phải tiếp tục từ đúng dòng đã gọi interrupt(); vì vậy, mọi thứ trước lệnh interrupt trong node đó cần có tính idempotent, tức chạy lại nhiều lần vẫn cho kết quả đúng. Bạn cũng nên đặt deadline cho các phê duyệt đang chờ, vì interrupt không có thời hạn mặc định và một yêu cầu có thể nằm chờ mãi nếu không ai trả lời.
LangGraph hỗ trợ streaming, thực thi song song (fan-out), và tích hợp quan sát qua LangSmith — nền tảng quan sát của LangChain Inc., với giá khoảng 39 USD mỗi ghế theo một số nguồn tổng hợp năm 2026. Hệ sinh thái của LangChain có hơn 1.000 integration cho các mô hình, công cụ và nguồn dữ liệu, và trong khảo sát nhà phát triển Stack Overflow 2025, 32,9% nhà phát triển xây agent dùng LangChain để điều phối, chỉ đứng sau Ollama. Theo các bài so sánh cập nhật tháng 11/2026, LangGraph đạt phiên bản 1.2.19 vào ngày 30/10/2026, dùng giấy phép MIT, và được các công ty như Klarna, LinkedIn, Uber và Replit sử dụng cho agent production. Nhược điểm lớn nhất của LangGraph là đường cong học tập dốc: bạn phải hiểu đồ thị, trạng thái, reducer, checkpointer và cơ chế interrupt trước khi viết được agent đầu tiên, và code của bạn sẽ dài hơn so với các framework khác cho cùng một nhiệm vụ đơn giản.
Ví dụ code khái niệm cho LangGraph: bạn định nghĩa một class State kế thừa TypedDict với trường messages dùng reducer add_messages, tạo một StateGraph với State đó, thêm node agent gọi LLM và node tools thực thi công cụ, thêm cạnh có điều kiện từ agent sang tools hoặc sang END tùy theo LLM có yêu cầu gọi công cụ hay không, biên dịch đồ thị với một checkpointer, rồi gọi app.invoke với đầu vào và config chứa thread_id. Để thêm human-in-the-loop, bạn chèn một node human_review gọi interrupt() trước khi node gửi email hoặc trừ tiền được chạy, hoặc biên dịch đồ thị với tham số interrupt_before=[“send_email”, “charge_card”]. Đoạn code này chỉ dài vài chục dòng, nhưng nó chứa toàn bộ ý tưởng: trạng thái là sự thật duy nhất, đồ thị là luồng công việc, checkpoint là khả năng khôi phục.
LangGraph phù hợp nhất khi agent của bạn có quy trình phức tạp với rẽ nhánh, vòng lặp, cần phê duyệt của con người, cần chạy lâu và có thể khôi phục sau khi crash, hoặc cần audit trail rõ ràng cho từng bước. Nó ít phù hợp nhất khi bạn chỉ cần một chatbot đơn giản hoặc một prototype nhanh trong một buổi chiều — trong trường hợp đó, chi phí học tập và lượng code boilerplate của LangGraph sẽ lớn hơn lợi ích nó mang lại.
CrewAI: nhanh nhất để làm prototype đa agent theo vai trò
CrewAI là framework Python mã nguồn mở ra mắt năm 2024, do João Moura sáng lập, và nhanh chóng trở nên phổ biến nhờ sự đơn giản. Triết lý của CrewAI là mô phỏng cách một nhóm người làm việc: bạn định nghĩa các agent như các thành viên trong nhóm, mỗi người có một vai trò (role), một mục tiêu (goal) và một tiểu sử (backstory); bạn giao cho mỗi agent một nhiệm vụ (task) với mô tả và kết quả mong đợi (expected_output); bạn gom các agent và task vào một crew, chọn quy trình chạy là sequential (tuần tự) hoặc hierarchical (có quản lý), rồi gọi crew.kickoff() để bắt đầu. Framework lo việc chuyển kết quả từ agent này sang agent khác, và bạn nhận được kết quả cuối cùng mà không cần viết code điều phối.
Ba khái niệm cốt lõi của CrewAI là Agent, Task và Crew. Agent có các trường role, goal, backstory, llm, tools, allow_delegation và verbose. Backstory không chỉ là văn bản trang trí: CrewAI đưa backstory vào system prompt, vì vậy một backstory chi tiết thực sự định hình cách agent suy luận và trả lời. Task có các trường description, expected_output, agent và context — trong đó context là cơ chế handoff của CrewAI: khi bạn đặt context=[research_task] cho một task phân tích, agent phân tích sẽ tự động nhận toàn bộ đầu ra của task nghiên cứu trước đó. Crew có các trường agents, tasks, process và verbose, và phương thức kickoff() nhận inputs là một dict các biến sẽ được thay vào mô tả task, ví dụ {category: “khách sạn”}.
CrewAI hỗ trợ hai quy trình chính. Process.sequential chạy các task theo đúng thứ tự bạn liệt kê, mỗi task nhận đầu ra của task trước làm ngữ cảnh. Quy trình này phù hợp cho pipeline nghiên cứu – phân tích – viết báo cáo, nơi mỗi bước phụ thuộc vào bước trước. Process.hierarchical thêm một manager agent — một LLM đóng vai trò quản lý — tự động phân công task cho các agent phù hợp, theo dõi tiến độ và tổng hợp kết quả. Quy trình này linh hoạt hơn, nhưng cũng khó dự đoán hơn, vì quyết định phân công do LLM đưa ra chứ không phải do bạn viết sẵn. Ngoài Crews, CrewAI còn có Flows — luồng công việc điều khiển bằng sự kiện, cho phép bạn định nghĩa các bước có điều kiện, rẽ nhánh và trạng thái có cấu trúc, cùng khả năng checkpoint để khôi phục các crew chạy lâu.
Về phiên bản và hệ sinh thái, CrewAI đạt phiên bản 1.15.35 vào ngày 03/11/2026 theo một bài so sánh đọc trực tiếp từ GitHub, dùng giấy phép MIT, hỗ trợ Python 3.10–3.13, và có khoảng 30.000 GitHub stars theo các bài tổng hợp giữa năm 2026. CrewAI mặc định dùng mô hình OpenAI, nhưng bạn có thể đổi sang bất kỳ nhà cung cấp nào qua abstraction LLM của nó. Thư viện crewai-tools cung cấp sẵn các công cụ như SerperDevTool cho tìm kiếm web, FirecrawlSearchTool cho tìm kiếm và quét trang, và nhiều công cụ khác cho đọc file, truy vấn cơ sở dữ liệu hay gọi API. CrewAI cũng hỗ trợ MCP (Model Context Protocol), guardrail cho agent và task, và tích hợp A2A (Agent-to-Agent) cho các agent giao tiếp với nhau theo chuẩn mở.
Ví dụ code khái niệm cho CrewAI: bạn import Agent, Task, Crew, Process từ crewai, tạo ba agent là researcher, analyst và writer, mỗi agent có role, goal, backstory và tools riêng; tạo ba task là research_task, analysis_task và writing_task, trong đó analysis_task có context=[research_task] và writing_task có context=[analysis_task]; tạo một Crew với agents là ba agent trên, tasks là ba task trên, process là Process.sequential và verbose là True; gọi crew.kickoff(inputs={“category”: “khách sạn”}) để chạy. Toàn bộ ví dụ này chỉ dài vài chục dòng, và bạn có thể có một pipeline nghiên cứu thị trường chạy được trong chưa đầy một giờ. Đó là lý do CrewAI được nhiều nhà phát triển chọn cho hackathon, demo và prototype.
Nhược điểm lớn nhất của CrewAI là luồng điều khiển bị ẩn. Khi một crew làm sai, bạn khó biết chính xác agent nào đã quyết định sai ở bước nào, vì framework tự động chuyển giao và tự động gọi LLM nhiều lần mà không để lại một sơ đồ rõ ràng như LangGraph. Một số đội production nhận xét rằng việc gỡ lỗi các lỗi agent không hiển nhiên trong CrewAI có thể rất tốn thời gian, đặc biệt khi crew có nhiều agent và nhiều task phụ thuộc lẫn nhau. CrewAI cũng kém linh hoạt hơn LangGraph khi bạn cần kiểm soát chính xác từng bước chuyển đổi trạng thái, hoặc khi bạn cần tạm dừng và khôi phục một cách chi tiết. Vì vậy, CrewAI phù hợp nhất cho prototype nhanh, pipeline nghiên cứu và sáng tạo nội dung, và cho các workflow có phạm vi rõ ràng; nó ít phù hợp nhất cho các hệ thống production phức tạp cần audit trail chi tiết và human-in-the-loop chặt chẽ.
AutoGen: hiểu đúng về trạng thái đã lưu trữ và con đường thay thế
AutoGen là framework đa agent do Microsoft Research tạo ra, được giới thiệu lần đầu qua bài báo arXiv tháng 8/2023, với ý tưởng tổ chức các agent thành một cuộc hội thoại. Trong AutoGen, mỗi agent là một ConversableAgent có thể gửi và nhận tin nhắn; các agent được gom vào một GroupChat, và một GroupChatManager điều phối lượt nói: ai nói tiếp, khi nào dừng, và khi nào cần con người can thiệp. Agent có thể là agent LLM, agent thực thi code, agent con người, hoặc agent công cụ. Mô hình này đặc biệt mạnh cho các tác vụ nghiên cứu và viết code, nơi các agent có thể tranh luận, đề xuất code, chạy code, đọc kết quả lỗi và sửa lại cho đến khi code chạy đúng.
Về mặt kỹ thuật, AutoGen 0.4 là một lần viết lại lớn so với AutoGen 0.2. Phiên bản 0.4 chia thành ba package: autogen-core cung cấp runtime và mô hình agent cơ bản, autogen-agentchat cung cấp các agent hội thoại và GroupChat, autogen-ext cung cấp các integration mở rộng cho mô hình, công cụ và bộ nhớ. Bạn định nghĩa các agent, tạo một GroupChat với danh sách agent và số lượt nói tối đa, tạo một GroupChatManager, rồi gọi manager để bắt đầu cuộc hội thoại. Bạn cũng có thể dùng các pattern như Sequential Chat, Group Chat với speaker selection tự động hoặc thủ công, và Magentic-One — một hệ thống đa agent tổng quát cho các tác vụ phức tạp. AutoGen cũng hỗ trợ thực thi code trong môi trường sandbox, một tính năng quan trọng cho agent viết code.
Điều quan trọng nhất bạn cần biết về AutoGen vào cuối năm 2026 là trạng thái bảo trì của nó. Microsoft đã đưa AutoGen vào chế độ maintenance mode từ ngày 02/10/2025, và đến tháng 10/2026, README của repo AutoGen đã ghi rõ rằng Microsoft không cung cấp bản sửa lỗi, bản vá bảo mật, tính năng mới hay hỗ trợ cho dự án này, và khuyên người dùng mới không nên dùng AutoGen cho production. Bản phát hành cuối cùng của AutoGen là python-v0.7.5, phát hành ngày 30/09/2025. Theo các bài phân tích tháng 11/2026, repo AutoGen có khoảng 61.000 GitHub stars, nhưng số sao đó phản ánh lịch sử của dự án, không phản ánh trạng thái bảo trì hiện tại.
Con đường thay thế chính thức của Microsoft là Microsoft Agent Framework, gọi tắt là MAF. Framework này hợp nhất AutoGen và Semantic Kernel thành một SDK duy nhất, do chính các đội đã xây AutoGen và Semantic Kernel phát triển. Microsoft Agent Framework đạt phiên bản 1.0 vào ngày 03/04/2026 cho .NET và Python, với Go ở dạng public preview, và đến cuối tháng 10/2026 đã đạt Python 1.24.0. Framework này hỗ trợ MCP và A2A ngay từ đầu, hỗ trợ Foundry Hosted Agents với khả năng scale-to-zero, và có tài liệu migration chính thức cho cả người dùng AutoGen và Semantic Kernel. Nếu bạn đang dùng AutoGen trong production, bạn nên đóng băng việc phát triển tính năng mới trên AutoGen và lập kế hoạch migration sang Microsoft Agent Framework, vì một dependency không còn được vá bảo mật là một rủi ro thực sự.
Ngoài Microsoft Agent Framework, còn có AG2 — một fork cộng đồng của AutoGen, do chính các tác giả gốc của AutoGen là Chi Wang và Qingyun Wu quản lý, dùng giấy phép Apache 2.0. AG2 tiếp tục phát triển codebase của AutoGen, đạt phiên bản 1.2.2 vào ngày 27/10/2026, nhưng phiên bản 1.0 của AG2 đã thay đổi API và không còn tương thích hoàn toàn với AutoGen Classic. AG2 phù hợp nếu bạn muốn một governance độc lập khỏi Microsoft và sẵn sàng trả chi phí migration cho API mới. Trong bài này, khi so sánh AutoGen với ba framework còn lại, bạn nên hiểu rằng AutoGen được so sánh như một kiến trúc và một bài học lịch sử — kiến trúc hội thoại nhóm của nó vẫn có giá trị tham khảo — chứ không phải như một lựa chọn cho dự án mới vào cuối năm 2026.
Ví dụ code khái niệm cho AutoGen 0.4: bạn import AssistantAgent và UserProxyAgent từ autogen_agentchat, tạo một agent trợ lý với system message mô tả vai trò, tạo một agent người dùng có khả năng thực thi code, tạo một GroupChat với hai agent và số lượt tối đa, tạo một GroupChatManager, rồi bắt đầu cuộc hội thoại bằng một tin nhắn khởi đầu. Agent trợ lý sẽ đề xuất code, agent người dùng sẽ chạy code và trả kết quả về, và cuộc hội thoại tiếp tục cho đến khi nhiệm vụ hoàn thành hoặc đạt giới hạn lượt. Đoạn code này minh họa rõ triết lý hội thoại: không có đồ thị hay danh sách task được viết sẵn, mà có một cuộc trò chuyện mà trong đó giải pháp nổi lên từ sự tương tác giữa các agent.
OpenAI Agents SDK: tối giản, chính thức và gắn với hệ sinh thái OpenAI
OpenAI Agents SDK là framework agent chính thức của OpenAI, ra mắt ngày 11/03/2025, và là sản phẩm kế nhiệm cho Swarm — framework thử nghiệm trước đó của OpenAI. SDK này được thiết kế với triết lý tối giản: toàn bộ bề mặt API vừa trong vài khái niệm chính là Agent, Runner, Tools, Handoffs, Guardrails và Sessions. Bạn không cần học về đồ thị, crew hay group chat; bạn định nghĩa một agent bằng instructions, tools và handoffs, rồi dùng Runner để chạy agent đó. SDK có sẵn cho cả Python (package openai-agents trên PyPI, import là agents) và TypeScript (package @openai/agents trên npm).
Ba khái niệm cốt lõi của OpenAI Agents SDK là Agent, Handoff và Guardrail. Agent là một LLM được cấu hình với instructions (hướng dẫn hệ thống), tools (các công cụ nó có thể gọi), handoffs (các agent khác mà nó có thể chuyển giao), và guardrails. Handoff là cơ chế chuyển giao toàn bộ quyền điều khiển cho một agent chuyên biệt: khi agent tổng đài nhận ra câu hỏi thuộc về bộ phận thanh toán, nó chuyển giao cho agent thanh toán, và agent thanh toán tiếp tục cuộc hội thoại từ đó. Về mặt kỹ thuật, mỗi handoff được hiển thị cho LLM như một công cụ có tên dạng transfer_to_tên_agent, vì vậy LLM tự quyết định khi nào nên chuyển giao dựa trên ngữ cảnh. Guardrail là một hàm kiểm tra đầu vào hoặc đầu ra và trả về một cờ tripwire: input guardrail kiểm tra tin nhắn của người dùng trước khi agent chính chạy, output guardrail kiểm tra kết quả cuối cùng sau khi agent chạy xong, và tool guardrail bọc quanh các lần gọi công cụ để kiểm tra trước hoặc sau khi gọi.
Runner là vòng lặp thực thi của SDK. Bạn gọi Runner.run(agent, input) và Runner sẽ lặp lại việc gọi LLM, thực thi công cụ, xử lý handoff, kiểm tra guardrail, cho đến khi agent trả ra kết quả cuối cùng. Session là cách SDK quản lý bộ nhớ hội thoại qua nhiều lần chạy: SQLiteSession là cài đặt có sẵn lưu lịch sử vào SQLite, và bạn có thể tự viết Session riêng để lưu vào Redis, Postgres hay bất kỳ kho lưu trữ nào. SDK dùng Responses API làm mặc định cho các mô hình OpenAI, hỗ trợ hosted tools như WebSearchTool, FileSearchTool, CodeInterpreterTool, HostedMCPTool và ImageGenerationTool, cùng các local tools như ComputerTool, ShellTool và ApplyPatchTool. SDK cũng hỗ trợ MCP ngay từ đầu: bạn có thể kết nối tới một MCP server từ xa và các công cụ của server đó sẽ xuất hiện như các function tool bình thường.
Về phiên bản và mức độ trưởng thành, OpenAI Agents SDK đạt phiên bản 0.24.0 vào ngày 15/10/2026 theo một bài so sánh đọc trực tiếp từ GitHub, và phiên bản 0.23.1 vào ngày 02/10/2026 theo một bài hướng dẫn khác. SDK vẫn ở phiên bản 0.x sau hơn một năm ra mắt, có nghĩa là API vẫn có thể thay đổi và bạn nên ghim phiên bản khi dùng trong production. Repo Python có khoảng 22.000–27.000 GitHub stars tùy thời điểm đo trong năm 2026, dùng giấy phép MIT, và hỗ trợ Python 3.9 trở lên, mặc dù các hướng dẫn mới nhất khuyên dùng Python 3.12. SDK được thiết kế để provider-agnostic ở một mức độ: nó hỗ trợ hơn 100 mô hình bên thứ ba qua LiteLLM, nhưng các hosted tools và Responses API là tính năng riêng của OpenAI, và tích hợp LiteLLM vẫn được ghi là beta trong một số tài liệu. Tracing được tích hợp sẵn và chảy về dashboard của OpenAI trừ khi bạn chuyển hướng sang một backend khác như Sentry.
Ví dụ code khái niệm cho OpenAI Agents SDK: bạn import Agent, Runner và function_tool từ agents, định nghĩa một function tool bằng decorator @function_tool cho một hàm Python, ví dụ hàm tra cứu đặt phòng khách sạn; tạo một agent lễ tân với instructions mô tả vai trò, tools là danh sách các function tool, và handoffs là danh sách các agent chuyên biệt như agent thanh toán; tạo một agent thanh toán tương tự; gọi await Runner.run(agent_le_tan, “Tôi muốn đổi ngày đặt phòng”) với một session SQLite để giữ lịch sử hội thoại. Khi người dùng hỏi về thanh toán, agent lễ tân sẽ tự động handoff sang agent thanh toán, và bạn không cần viết code điều phối. Toàn bộ ví dụ này chỉ dài vài chục dòng, và đó là điểm mạnh lớn nhất của SDK: bạn có thể có một agent production chạy được trong một buổi chiều, với guardrail, session và tracing đã có sẵn.
Nhược điểm của OpenAI Agents SDK là nó ít ý kiến (opinionated) về quản lý trạng thái phức tạp và điều phối đa agent. Khi agent của bạn cần đồ thị trạng thái phức tạp, cần tạm dừng và khôi phục chi tiết, hoặc cần điều phối nhiều agent theo một luồng công việc chặt chẽ, bạn sẽ phải tự xây thêm các lớp đó trên nền SDK, trong khi LangGraph đã có sẵn. SDK cũng gắn chặt với hệ sinh thái OpenAI: nếu bạn muốn dùng mô hình của Anthropic hay Google làm mô hình chính, bạn sẽ gặp nhiều ma sát hơn so với dùng LangChain hay CrewAI. Vì vậy, OpenAI Agents SDK phù hợp nhất khi bạn xây agent trên hệ sinh thái OpenAI, khi bạn cần một agent đơn giản đến vừa phải chạy production nhanh, hoặc khi bạn cần handoff và guardrail có sẵn mà không muốn học một framework nặng. Nó ít phù hợp nhất khi bạn cần đa mô hình, đa nhà cung cấp, hoặc quy trình trạng thái phức tạp.
Bảng so sánh chi tiết bốn framework
Bảng dưới đây so sánh bốn framework trên các tiêu chí mà nhà phát triển quan tâm nhất. Các con số phiên bản và GitHub stars được đọc vào cuối tháng 10 và đầu tháng 11/2026, và sẽ thay đổi theo thời gian; bạn nên kiểm tra trang GitHub chính thức của từng dự án trước khi quyết định. Mục đích của bảng là giúp bạn thấy rõ sự khác biệt về kiến trúc, không phải để xếp hạng tuyệt đối.
| Tiêu chí | LangChain / LangGraph | CrewAI | AutoGen (Microsoft) | OpenAI Agents SDK |
|---|---|---|---|---|
| Nhà bảo trì | LangChain Inc. | CrewAI Inc. | Microsoft Research (đã lưu trữ) | OpenAI |
| Ngôn ngữ | Python, JavaScript/TypeScript | Python | Python, .NET | Python, JavaScript/TypeScript |
| Giấy phép | MIT | MIT | MIT (code), CC-BY-4.0 (docs) | MIT |
| Phiên bản mới nhất (đầu tháng 11/2026) | LangGraph 1.2.19 (30/10/2026) | 1.15.35 (03/11/2026) | python-v0.7.5 (30/09/2025), đã dừng | 0.24.0 (15/10/2026) |
| GitHub stars (ước tính 2026) | LangChain 110.000+, LangGraph riêng hàng chục nghìn | Khoảng 30.000 | Khoảng 61.000 (lịch sử, đã lưu trữ) | Python 22.000–27.000, JS khoảng 3.100 |
| Mô hình tư duy | Đồ thị trạng thái (state machine) | Vai trò và nhóm (role-based crew) | Hội thoại nhóm (conversational) | Mô hình + công cụ + vòng lặp tối giản |
| Khái niệm cốt lõi | StateGraph, Node, Edge, Checkpointer, interrupt() | Agent, Task, Crew, Process, Flow | ConversableAgent, GroupChat, GroupChatManager | Agent, Runner, Handoff, Guardrail, Session |
| Quản lý trạng thái | Mạnh nhất, state có kiểu, checkpoint sau mỗi bước | Có bộ nhớ tích hợp, Flows có checkpoint | Qua lịch sử hội thoại, không có checkpoint mạnh như LangGraph | Qua Session, SQLiteSession có sẵn, tự viết Session riêng được |
| Human-in-the-loop | Mạnh nhất, interrupt() và interrupt_before/after | Có, qua Flows và guardrail, nhưng ít chi tiết hơn | Có, qua UserProxyAgent và phê duyệt trong GroupChat | Có, phê duyệt tool call và tạm dừng có cấu trúc |
| Đa agent | Có, qua đồ thị nhiều node và subgraph | Thế mạnh chính, Crews và Flows | Thế mạnh chính, GroupChat và Magentic-One | Có, qua handoff và agents-as-tools |
| Hỗ trợ MCP | Có, qua integration và LangChain tools | Có, MCP là tính năng tích hợp | Có trong Microsoft Agent Framework, không phải AutoGen cũ | Có ngay từ đầu, MCP server là nguồn tool |
| Quan sát và gỡ lỗi | LangSmith, time-travel debugging, checkpoint | Verbose logging, callbacks, task caching | Logging hội thoại, khó theo dõi khi chat dài | Tracing tích hợp, chảy về dashboard OpenAI |
| Đường cong học tập | Dốc nhất | Thấp nhất cho prototype | Trung bình, nhưng không nên học mới vào 2026 | Rất thấp |
| Mức độ production | Cao, được Klarna, LinkedIn, Uber, Replit dùng | Trung bình, tốt cho workflow có phạm vi rõ ràng | Không khuyến nghị cho dự án mới, đã lưu trữ | Trung bình–cao cho hệ sinh thái OpenAI |
| Trường hợp dùng tốt nhất | Quy trình stateful, phê duyệt, chạy lâu, audit | Prototype đa agent nhanh, nghiên cứu, nội dung | Chỉ để tham khảo kiến trúc và migration | Agent OpenAI-centric, handoff, guardrail, MCP-first |
So sánh theo từng khía cạnh kỹ thuật sâu
Về kiểm soát luồng điều khiển, LangGraph cho bạn kiểm soát nhiều nhất vì bạn vẽ đồ thị một cách tường minh; OpenAI Agents SDK cho bạn kiểm soát ít nhất vì LLM tự quyết định phần lớn; CrewAI và AutoGen nằm ở giữa, với CrewAI ẩn luồng điều khiển sau task và AutoGen để luồng điều khiển nổi lên từ hội thoại. Về khả năng khôi phục sau lỗi, LangGraph mạnh nhất nhờ checkpointing; CrewAI có checkpoint cho Flows nhưng không chi tiết bằng; OpenAI Agents SDK dựa vào Session và durable execution trong các phiên bản mới; AutoGen yếu nhất ở khía cạnh này. Về khả năng mở rộng, cả bốn framework đều có thể chạy nhiều agent, nhưng LangGraph và Microsoft Agent Framework (kế nhiệm AutoGen) được thiết kế rõ ràng hơn cho các hệ thống lớn, trong khi CrewAI và OpenAI Agents SDK phù hợp hơn cho các hệ thống vừa và nhỏ.
Về tích hợp mô hình, LangChain có hệ sinh thái lớn nhất với hơn 1.000 integration, CrewAI dùng abstraction LLM để đổi nhà cung cấp dễ dàng, OpenAI Agents SDK tốt nhất cho mô hình OpenAI và hỗ trợ LiteLLM cho hơn 100 mô hình khác ở dạng beta, còn AutoGen hỗ trợ nhiều mô hình qua autogen-ext nhưng không còn được cập nhật. Về tích hợp công cụ, cả bốn đều hỗ trợ function calling và MCP, nhưng cách bạn định nghĩa công cụ khác nhau: LangGraph dùng tool của LangChain, CrewAI dùng crewai-tools, AutoGen dùng function map của ConversableAgent, còn OpenAI Agents SDK dùng decorator @function_tool và hosted tools. Bạn nên chọn framework mà cách định nghĩa công cụ của nó phù hợp với codebase hiện tại của bạn, vì bạn sẽ viết rất nhiều công cụ trong quá trình xây agent.
Về chi phí, cả bốn framework đều mã nguồn mở và miễn phí theo giấy phép MIT, nhưng chi phí thực tế nằm ở token LLM, ở dịch vụ quan sát và ở thời gian của nhà phát triển. LangSmith có giá khoảng 39 USD mỗi ghế, CrewAI có gói cloud trả phí cho các tính năng nâng cao, OpenAI Agents SDK miễn phí nhưng bạn trả tiền token cho OpenAI, còn Microsoft Agent Framework miễn phí và gắn với Azure. Đừng so sánh framework chỉ bằng giá license; hãy so sánh bằng tổng chi phí sở hữu, bao gồm thời gian học, thời gian gỡ lỗi và chi phí vận hành.
Chọn framework theo dự án: ma trận quyết định
Nếu bạn xây một chatbot hỗ trợ khách hàng đơn giản, chỉ cần trả lời câu hỏi, tra cứu đơn hàng và chuyển cho nhân viên khi cần, hãy chọn OpenAI Agents SDK. Bạn sẽ có agent chạy được trong một buổi chiều, với handoff sang agent chuyên biệt, guardrail để chặn nội dung không phù hợp, session để giữ lịch sử hội thoại, và tracing để xem agent đã làm gì. Nếu sau này bạn cần thêm quy trình phức tạp, bạn có thể chuyển sang LangGraph mà không mất quá nhiều công sức, vì bạn đã hiểu rõ bài toán của mình.
Nếu bạn xây một pipeline nghiên cứu thị trường, nơi một agent tìm kiếm thông tin, một agent phân tích và một agent viết báo cáo, hãy chọn CrewAI. Bạn sẽ có prototype chạy được trong chưa đầy một giờ, với vai trò và task rõ ràng, và bạn có thể demo cho đội sản phẩm ngay trong ngày. Nếu pipeline này sau đó cần đưa vào production với yêu cầu audit và phê duyệt chặt chẽ, hãy cân nhắc viết lại bằng LangGraph, vì CrewAI sẽ khó gỡ lỗi khi pipeline có nhiều bước phụ thuộc lẫn nhau.
Nếu bạn xây một hệ thống xử lý giao dịch tài chính, hoàn tiền, phê duyệt hợp đồng hay bất kỳ quy trình nào mà mỗi bước sai đều tốn tiền thật, hãy chọn LangGraph ngay từ đầu. Bạn sẽ phải học nhiều hơn, nhưng bạn sẽ có checkpointing, human-in-the-loop, audit trail và khả năng tua lại từng bước — những tính năng mà bạn sẽ cần đến khi hệ thống gặp sự cố lúc 2 giờ sáng. Đừng chọn CrewAI hay OpenAI Agents SDK cho trường hợp này chỉ vì chúng dễ hơn; sự dễ dàng ban đầu sẽ trở thành chi phí gỡ lỗi lớn hơn về sau.
Nếu bạn đang dùng AutoGen trong một dự án hiện có, hãy dừng việc phát triển tính năng mới trên AutoGen và lập kế hoạch migration. Nếu đội của bạn dùng Azure và .NET hoặc Python, hãy đánh giá Microsoft Agent Framework, đọc tài liệu migration chính thức và thử migration trên một agent nhỏ trước. Nếu bạn muốn một governance độc lập và sẵn sàng trả chi phí thay đổi API, hãy đánh giá AG2. Trong cả hai trường hợp, đừng bắt đầu dự án mới trên AutoGen vào cuối năm 2026, vì bạn sẽ xây trên một nền tảng không còn được vá bảo mật.
Nếu bạn xây một hệ thống đa agent cho nghiên cứu khoa học, nơi các agent cần tranh luận, viết code, chạy code và sửa lỗi cho nhau, hãy tham khảo kiến trúc hội thoại của AutoGen như một bài học, nhưng triển khai bằng LangGraph hoặc Microsoft Agent Framework. Bạn có thể mô phỏng GroupChat bằng một đồ thị LangGraph, trong đó mỗi node là một agent và cạnh có điều kiện quyết định agent nào nói tiếp. Cách này cho bạn sự linh hoạt của hội thoại, nhưng vẫn giữ được checkpointing và khả năng gỡ lỗi của đồ thị.
Nếu bạn là một nhà phát triển độc lập hoặc một nhóm nhỏ, và bạn chưa chắc chắn bài toán của mình cần framework nào, hãy bắt đầu với OpenAI Agents SDK hoặc CrewAI, tùy theo bạn thích tư duy handoff hay tư duy vai trò hơn. Hãy xây một agent nhỏ, đo chất lượng trên dữ liệu thật, và chỉ chuyển sang LangGraph khi bạn gặp một vấn đề cụ thể mà LangGraph giải quyết tốt hơn — ví dụ bạn cần tạm dừng để con người phê duyệt, hoặc bạn cần khôi phục sau khi crash. Đừng chọn framework vì nó phổ biến nhất; hãy chọn vì nó giải quyết đúng vấn đề của bạn.
Checklist chọn framework trong 10 phút
- Agent của bạn có cần tạm dừng để con người phê duyệt trước khi thực hiện hành động có hậu quả không? Nếu có, hãy ưu tiên LangGraph.
- Agent của bạn có cần chạy lâu hơn vài phút và có thể khôi phục sau khi crash không? Nếu có, hãy ưu tiên LangGraph.
- Bạn có cần nhiều agent với vai trò khác nhau phối hợp trong một pipeline rõ ràng không? Nếu có và cần prototype nhanh, hãy thử CrewAI trước.
- Bạn có xây trên hệ sinh thái OpenAI và cần handoff, guardrail, MCP có sẵn không? Nếu có, hãy thử OpenAI Agents SDK trước.
- Bạn có đang dùng AutoGen không? Nếu có, hãy lập kế hoạch migration sang Microsoft Agent Framework ngay, đừng bắt đầu tính năng mới trên AutoGen.
- Bạn có cần dùng mô hình của nhiều nhà cung cấp khác nhau không? Nếu có, hãy ưu tiên LangChain/LangGraph hoặc CrewAI thay vì OpenAI Agents SDK.
- Đội của bạn dùng ngôn ngữ nào? Nếu đội dùng .NET, hãy đánh giá Microsoft Agent Framework; nếu đội chỉ dùng Python, cả bốn framework đều phù hợp.
- Bạn có bao nhiêu thời gian để học framework? Nếu chỉ có một buổi chiều, hãy chọn CrewAI hoặc OpenAI Agents SDK; nếu có một tuần, hãy học LangGraph.
Ví dụ thực tế: cùng một bài toán, bốn cách triển khai khác nhau
Hãy tưởng tượng bạn cần xây một agent hỗ trợ khách sạn: agent nhận yêu cầu của khách, tra cứu thông tin phòng trống, tính giá, và khi khách đồng ý, tạo đơn đặt phòng và gửi email xác nhận. Trước khi tạo đơn, agent phải dừng lại để nhân viên lễ tân phê duyệt nếu tổng giá trị vượt quá một ngưỡng nhất định. Đây là một bài toán điển hình có cả tra cứu, tính toán, phê duyệt và hành động có hậu quả.
Với LangGraph, bạn sẽ định nghĩa một State chứa messages, thông tin khách, phòng đã chọn, giá đã tính và cờ phê duyệt. Bạn tạo các node: node tra_cuu_phong gọi công cụ tìm phòng trống, node tinh_gia gọi công cụ tính giá, node phe_duyet gọi interrupt() để chờ nhân viên lễ tân, node tao_don gọi công cụ tạo đơn đặt phòng, node gui_email gọi công cụ gửi email. Bạn nối các node bằng cạnh có điều kiện: nếu giá vượt ngưỡng thì đi qua node phe_duyet, nếu không thì đi thẳng sang node tao_don. Bạn biên dịch đồ thị với PostgresSaver và thread_id là mã đặt phòng. Khi nhân viên phê duyệt, bạn resume đồ thị và agent tiếp tục tạo đơn. Toàn bộ quá trình được lưu lại và có thể audit.
Với CrewAI, bạn sẽ định nghĩa ba agent: agent lễ tân có vai trò tiếp nhận yêu cầu và giao tiếp với khách, agent định giá có vai trò tra cứu phòng và tính giá, agent đặt phòng có vai trò tạo đơn và gửi email. Bạn tạo ba task tương ứng, với task định giá có context là task lễ tân, và task đặt phòng có context là task định giá. Bạn tạo một Crew với process sequential và gọi kickoff(). Bạn sẽ có prototype chạy được rất nhanh, nhưng việc chèn bước phê duyệt của con người vào giữa pipeline sẽ cần thêm code tùy chỉnh, vì CrewAI không có interrupt() mạnh như LangGraph.
Với AutoGen, bạn sẽ tạo một GroupChat gồm agent lễ tân, agent định giá, agent đặt phòng và một UserProxyAgent đại diện cho nhân viên lễ tân. Các agent sẽ trò chuyện với nhau: agent lễ tân hỏi agent định giá về phòng trống, agent định giá trả lời, agent lễ tân hỏi khách có đồng ý không, rồi chuyển cho agent đặt phòng. Khi giá vượt ngưỡng, GroupChatManager sẽ chuyển lượt nói cho UserProxyAgent để nhân viên phê duyệt. Cách này mô phỏng tốt cách con người làm việc, nhưng cuộc hội thoại có thể kéo dài và khó kiểm soát nếu các agent hiểu sai ý nhau.
Với OpenAI Agents SDK, bạn sẽ tạo một agent lễ tân với tools là tra cứu phòng và tính giá, và handoffs là agent đặt phòng. Bạn tạo một agent đặt phòng với tools là tạo đơn và gửi email, cùng một guardrail kiểm tra tổng giá trị. Khi khách đồng ý, agent lễ tân handoff sang agent đặt phòng. Để thêm bước phê duyệt, bạn dùng tính năng human approval của SDK: trước khi tool tạo đơn được gọi, SDK tạm dừng và chờ con người phê duyệt. Cách này gọn nhẹ và dễ hiểu, nhưng nếu quy trình của bạn sau này thêm nhiều bước rẽ nhánh, bạn sẽ cần tự xây thêm logic điều phối.
Bốn cách triển khai trên cho cùng một kết quả cuối cùng, nhưng code, khả năng gỡ lỗi và khả năng mở rộng khác nhau rất nhiều. Bài học ở đây không phải là framework nào cũng làm được mọi việc, mà là bạn nên chọn framework mà cách tổ chức của nó phù hợp với cách bạn suy nghĩ về bài toán, và với mức độ kiểm soát mà bài toán yêu cầu.
Lộ trình học bốn tuần cho nhà phát triển mới bắt đầu
Tuần thứ nhất, hãy học khái niệm agent mà không dùng framework. Viết một vòng lặp while gọi LLM qua API, định nghĩa hai công cụ đơn giản bằng function calling, và cho agent tự quyết định khi nào gọi công cụ và khi nào dừng. Đo số bước, số token và thời gian chạy. Bạn sẽ hiểu rõ vòng lặp ReAct, và bạn sẽ biết chính xác framework đang giúp bạn những gì khi bạn bắt đầu dùng nó vào tuần sau.
Tuần thứ hai, hãy chọn một framework để làm prototype: CrewAI nếu bạn thích tư duy vai trò, hoặc OpenAI Agents SDK nếu bạn thích tư duy handoff. Xây một agent nhỏ với ba công cụ, một handoff hoặc một crew ba agent, và một guardrail đơn giản. Đo thời gian bạn cần để có prototype chạy được, và ghi lại những điểm bạn thấy khó hiểu. Cuối tuần, hãy demo prototype cho một đồng nghiệp và hỏi họ có hiểu code của bạn không.
Tuần thứ ba, hãy học LangGraph. Viết lại cùng một agent bằng StateGraph, thêm checkpointer SQLite, thêm một node human_review dùng interrupt(), và thử tạm dừng rồi resume agent sau vài giờ. Bạn sẽ thấy code dài hơn, nhưng bạn cũng sẽ thấy mình kiểm soát được nhiều hơn. Hãy so sánh thời gian gỡ lỗi khi agent làm sai giữa LangGraph và framework bạn dùng ở tuần thứ hai.
Tuần thứ tư, hãy xây một agent production nhỏ với framework bạn đã chọn, bao gồm: giới hạn số bước tối đa, giới hạn ngân sách token, retry với backoff cho lỗi API, logging đầy đủ cho mỗi lần gọi LLM và mỗi lần gọi công cụ, và một dashboard đơn giản để xem agent đã làm gì. Hãy cho agent chạy với dữ liệu thật trong một tuần, ghi lại mọi lỗi, và sửa code dựa trên lỗi thực tế chứ không phải lỗi tưởng tượng. Sau bốn tuần, bạn sẽ không chỉ biết framework nào phù hợp với mình, mà còn biết vì sao nó phù hợp.
Những lỗi thường gặp khi dùng AI Agent framework
Lỗi thứ nhất là để agent chạy không giới hạn. Một agent không có giới hạn số bước có thể gọi LLM hàng trăm lần, tốn hàng chục USD cho một nhiệm vụ duy nhất, và vẫn không hoàn thành. Hãy đặt max_steps, ngân sách token và timeout cho mỗi lần chạy, và dừng lại với một thông báo rõ ràng khi đạt giới hạn.
Lỗi thứ hai là cho agent quá nhiều công cụ. Một agent có 30 công cụ sẽ khó chọn đúng công cụ hơn một agent có 5 công cụ, vì LLM phải đọc mô tả của tất cả các công cụ trong mỗi lần gọi. Hãy chia agent lớn thành nhiều agent chuyên biệt, mỗi agent chỉ có vài công cụ liên quan, và dùng handoff hoặc đồ thị để điều phối giữa chúng.
Lỗi thứ ba là không kiểm tra kết quả công cụ. Một công cụ có thể trả về lỗi, trả về dữ liệu rỗng, hoặc trả về dữ liệu sai định dạng, và LLM có thể tiếp tục suy luận dựa trên dữ liệu sai đó. Hãy kiểm tra kết quả công cụ trong code, trả về thông báo lỗi rõ ràng cho LLM, và cho agent cơ hội thử lại hoặc chọn công cụ khác.
Lỗi thứ tư là không có human-in-the-loop cho hành động có hậu quả. Một agent có thể gửi email sai, trừ tiền sai, hoặc xóa dữ liệu sai nếu không có ai kiểm tra trước. Hãy luôn đặt điểm phê duyệt trước các hành động không thể hoàn tác, và ghi lại ai đã phê duyệt, khi nào, và dựa trên thông tin nào.
Lỗi thứ năm là không ghi log và không quan sát được agent. Khi agent làm sai trong production, bạn cần biết nó đã gọi mô hình nào, với prompt nào, đã gọi công cụ nào với tham số nào, và đã nhận kết quả nào. Hãy dùng LangSmith, tracing của OpenAI Agents SDK, hoặc một hệ thống logging đơn giản của riêng bạn, và đảm bảo bạn có thể xem lại toàn bộ lịch sử của một lần chạy chỉ bằng một ID.
Lỗi thứ sáu là chọn framework vì nó phổ biến, không phải vì nó phù hợp. Một framework có 110.000 stars không có nghĩa là nó phù hợp với bài toán của bạn. Hãy thử nghiệm với bài toán thật của bạn, đo thời gian phát triển, thời gian gỡ lỗi và chất lượng kết quả, rồi mới quyết định.
Câu hỏi thường gặp (FAQs)
AI Agent framework là gì?
AI Agent framework là bộ công cụ giúp nhà phát triển xây dựng AI Agent mà không phải tự viết lại toàn bộ vòng lặp suy luận, quản lý trạng thái và xử lý lỗi. Framework cung cấp sẵn các khối như vòng lặp gọi mô hình ngôn ngữ, cơ chế gọi công cụ, quản lý bộ nhớ, điều phối nhiều agent, human-in-the-loop và quan sát quá trình chạy. Bạn chỉ cần định nghĩa agent, công cụ và luồng công việc, framework lo phần khung còn lại.
Nên chọn LangChain, CrewAI, AutoGen hay OpenAI Agents SDK?
Chọn LangGraph khi bạn cần kiểm soát trạng thái, checkpointing và human-in-the-loop cho production phức tạp. Chọn CrewAI khi bạn cần prototype đa agent theo vai trò nhanh nhất. Không nên bắt đầu dự án mới trên AutoGen vào cuối năm 2026 vì Microsoft đã lưu trữ dự án và không còn vá bảo mật; hãy chuyển sang Microsoft Agent Framework nếu bạn theo hệ sinh thái Microsoft. Chọn OpenAI Agents SDK khi bạn xây agent trên hệ sinh thái OpenAI và cần handoff, guardrail và MCP có sẵn với code gọn nhẹ nhất.
AutoGen có còn dùng được không?
AutoGen vẫn cài đặt và chạy được, nhưng Microsoft đã đưa dự án vào chế độ maintenance từ tháng 10/2025 và đến tháng 10/2026 đã ghi rõ trong README rằng Microsoft không cung cấp bản sửa lỗi, bản vá bảo mật, tính năng mới hay hỗ trợ cho dự án. Bản phát hành cuối cùng là python-v0.7.5 ngày 30/09/2025. Vì vậy, bạn không nên bắt đầu dự án mới trên AutoGen, và nếu đang dùng AutoGen trong production, bạn nên lập kế hoạch migration sang Microsoft Agent Framework, framework kế nhiệm chính thức đã đạt 1.0 vào tháng 04/2026.
LangChain và LangGraph khác nhau như thế nào?
LangChain là framework tổng thể cho ứng dụng LLM, với nhiều thành phần như chains, prompts, tools và integrations. LangGraph là runtime agent của LangChain, mô hình hóa agent như một đồ thị trạng thái với các node, cạnh và checkpointer. Trong năm 2026, LangGraph là lớp được khuyến nghị cho các agent production, trong khi AgentExecutor cũ của LangChain đã lỗi thời. Bạn có thể dùng LangGraph độc lập mà không cần toàn bộ LangChain, nhưng kết hợp với các integration của LangChain sẽ giúp bạn tiết kiệm thời gian.
OpenAI Agents SDK có dùng được với mô hình không phải của OpenAI không?
Có, nhưng có giới hạn. OpenAI Agents SDK hỗ trợ hơn 100 mô hình bên thứ ba qua LiteLLM, nhưng các hosted tools như web search, file search và code interpreter là tính năng riêng của OpenAI, và Responses API là API được khuyến nghị cho các mô hình OpenAI. Tích hợp LiteLLM vẫn được ghi là beta trong một số tài liệu. Nếu bạn cần dùng mô hình của nhiều nhà cung cấp làm mô hình chính, LangChain/LangGraph hoặc CrewAI sẽ ít ma sát hơn.
CrewAI có phù hợp cho production không?
CrewAI phù hợp cho production với các workflow có phạm vi rõ ràng, ví dụ pipeline nghiên cứu và sáng tạo nội dung, nơi các task và vai trò được định nghĩa rõ. Tuy nhiên, CrewAI ẩn luồng điều khiển bên trong framework, vì vậy việc gỡ lỗi các lỗi agent phức tạp có thể tốn thời gian hơn so với LangGraph. Nếu hệ thống của bạn cần audit trail chi tiết, human-in-the-loop chặt chẽ và khả năng khôi phục sau crash, bạn nên cân nhắc LangGraph thay vì CrewAI cho production.
Nhà phát triển mới nên học framework nào đầu tiên?
Nhà phát triển mới nên bắt đầu bằng cách viết một agent đơn giản không dùng framework, để hiểu vòng lặp ReAct và function calling. Sau đó, hãy học OpenAI Agents SDK hoặc CrewAI để có prototype chạy được trong một buổi chiều, rồi học LangGraph khi bạn cần kiểm soát trạng thái và human-in-the-loop. Lộ trình bốn tuần trong bài này — tuần 1 không framework, tuần 2 prototype, tuần 3 LangGraph, tuần 4 production nhỏ — là một cách bắt đầu thực tế và đã được nhiều nhà phát triển áp dụng thành công.
MCP và A2A có vai trò gì trong AI Agent framework?
MCP (Model Context Protocol) là chuẩn mở để agent kết nối tới các công cụ và nguồn dữ liệu bên ngoài qua một giao diện thống nhất, thay vì phải viết integration riêng cho từng công cụ. A2A (Agent-to-Agent) là chuẩn mở để các agent giao tiếp với nhau. Cả bốn framework trong bài này đều hỗ trợ MCP ở mức độ khác nhau, và Microsoft Agent Framework cùng OpenAI Agents SDK hỗ trợ MCP ngay từ đầu. Khi chọn framework, bạn nên kiểm tra khả năng hỗ trợ MCP của nó, vì MCP đang trở thành cách chuẩn để mở rộng agent mà không bị khóa vào một nhà cung cấp công cụ.
Liên hệ AIA qua hotline 0939 936 168 để được tư vấn giải pháp AI phù hợp với doanh nghiệp của bạn.

