Claude Agent SDK, OpenAI Agents SDK hay Google ADK: bốn câu hỏi FDE cần hỏi khách trước khi chọn
Ba framework agent nhìn qua thì na ná nhau, nhưng chỉ một điều khoản về lưu trữ dữ liệu hay yêu cầu chạy trên hạ tầng riêng của khách cũng đủ buộc đội dự án phải tính lại lựa chọn.

Tóm tắt nhanh
- Đừng bắt đầu từ benchmark. Hãy bắt đầu từ bốn câu hỏi: agent chạy ở đâu, dùng mô hình nào, ai kiểm soát quyền hạn, và ai đọc trace.
- Khách dùng API của OpenAI theo Zero Data Retention thì không dùng được tracing mặc định của OpenAI Agents SDK. Đội của khách viết Go hoặc Java thì ADK có thư viện chính thức cho cả hai, còn Claude Agent SDK chỉ có Python và TypeScript.
- Claude Agent SDK có thứ tự phân quyền được mô tả rất cụ thể, với hook deny chạy trước mọi bước; còn ADK có sẵn công cụ đánh giá quỹ đạo thực thi của agent.
Tài liệu của OpenAI Agents SDK ghi rằng tracing được bật sẵn. Ngay trong tài liệu đó cũng có câu: tổ chức nào dùng API của OpenAI theo chính sách Zero Data Retention thì không dùng được tracing. Một tính năng mặc định có thể biến mất chỉ vì một điều khoản trong hợp đồng của khách.
Chi tiết này cho thấy cách chọn agent SDK ở dự án thật. Người ta không chọn bằng bảng so sánh điểm số. Danh sách được thu hẹp dần bởi những ràng buộc mà khách nói ra, thường ngay trong buổi làm việc đầu tiên, và thường trước khi ai kịp mở editor.
Với một FDE, đây là kỹ năng đáng tiền. Chọn sai framework ở tuần đầu thì sang tuần thứ sáu sẽ phải viết lại phần quan sát hệ thống, phần phân quyền, có khi cả lớp gọi mô hình. Phần dưới đây là bốn câu hỏi giúp loại trừ giữa Claude Agent SDK, OpenAI Agents SDK và Google ADK, đi kèm điểm dễ vấp của từng bộ.
Agent sẽ chạy ở đâu, và ai vận hành nó?
Nên hỏi câu này trước tiên, vì nó quyết định ai phải trực khi hệ thống gặp sự cố. Theo tài liệu của Anthropic, Claude Agent SDK đóng gói đúng agent loop, bộ tool và cơ chế quản lý context đang chạy bên trong Claude Code thành thư viện Python và TypeScript.
Agent này được nhúng vào ứng dụng của bạn và chạy trong một tiến trình do bạn vận hành. OpenAI Agents SDK cũng là một thư viện Python cài bằng pip, chạy trong tiến trình của bạn, và có thêm sandbox agent để chạy tác vụ trong không gian làm việc cô lập.
Nếu khách không muốn tự vận hành, Anthropic có một sản phẩm riêng là Managed Agents. Đây là harness được host sẵn để chạy agent loop, với session nằm trong sandbox trên cloud do Anthropic quản lý hoặc sandbox tự host trên hạ tầng của khách.
Cần phân biệt rõ hai sản phẩm này khi trao đổi với khách. Nhầm giữa chúng là cách nhanh nhất để hứa sai về chuyện dữ liệu nằm ở đâu.
Google ADK là mã nguồn mở, được thiết kế để triển khai ở đâu cũng được: đóng container chạy trên hạ tầng của bạn, hoặc triển khai bằng một lệnh lên Google Cloud. Như vậy cả ba bộ đều chạy được trên hạ tầng do đội dự án kiểm soát. Điểm khác nhau nằm ở ngôn ngữ.
Thử hình dung một ngân hàng chỉ cho phép phần mềm chạy trong data center riêng, và đội nội bộ của họ viết Java. ADK có bản Python, TypeScript, Go, Java và Kotlin, nên đáng đưa lên đầu danh sách.
Claude Agent SDK chỉ có thư viện Python và TypeScript. Với ngôn ngữ khác, tài liệu của Anthropic hướng dẫn chạy CLI của Claude Code như một subprocess và đọc output dạng JSON. Cách này dùng được, nhưng đội của khách sẽ phải bảo trì thêm một lớp ghép nối.
Khách đã chọn mô hình chưa, hay muốn giữ quyền đổi?
Nhiều khách đã có hợp đồng với một nhà cung cấp mô hình. Một số khác muốn để ngỏ khả năng đổi sau này. Hai nhóm này cần hai lời khuyên khác nhau.
OpenAI Agents SDK có hỗ trợ mô hình không phải của OpenAI qua Any-LLM và LiteLLM, nhưng tài liệu xếp hai tích hợp này vào loại beta, chỉ hỗ trợ ở mức best-effort.
Nếu khách chạy một mô hình khác, bạn phải tự kiểm chứng provider đó trên đúng các luồng của dự án trước khi cam kết bất cứ điều gì. Còn ADK thì tự giới thiệu là làm việc được với gần như mọi mô hình sinh, không chỉ Gemini, thông qua các adapter tới từng nhà cung cấp.
Claude Agent SDK được xây quanh chính agent của Claude Code. Hợp lý nhất là coi nó là lựa chọn dành cho khách đã quyết dùng Claude, chứ không phải lớp trung gian để đổi mô hình qua lại. Lời khuyên ở đây đơn giản: nếu khách nói “chưa chắc dùng mô hình nào”, đừng chọn SDK theo sở thích của đội mình rồi mong adapter sẽ đủ tốt.
Ai giữ quyền chặn một hành động nguy hiểm?
Agent gọi được tool nghĩa là agent làm được việc thật: ghi file, gọi API, sửa dữ liệu. Vì thế đội an ninh của khách sẽ hỏi: điều gì ngăn nó làm sai? Tài liệu của Anthropic trả lời câu này rất cụ thể.
Theo tài liệu phân quyền của Anthropic, mỗi lần gọi tool được xét theo đúng thứ tự: hooks, deny rules, ask rules, permission mode, allow rules, rồi đến callback canUseTool. Hook chạy trước tất cả các bước còn lại.
Một hook deny vẫn có hiệu lực kể cả khi agent đang ở chế độ bypassPermissions. Với agent chạy headless, Anthropic khuyên kết hợp allowedTools với permissionMode “dontAsk” để khoá cứng tập tool được phép dùng.
OpenAI Agents SDK chủ trương tối giản, chỉ có vài primitive: agent, handoff để agent này giao việc cho agent khác, guardrail, cùng tracing tích hợp sẵn. Cái bẫy nằm ở guardrail. Guardrail đầu vào chỉ chạy ở agent đầu tiên của chuỗi, còn guardrail đầu ra chỉ chạy ở agent cuối cùng.
Thử hình dung một chuỗi ba agent cho bộ phận chăm sóc khách hàng, trong đó agent ở giữa có quyền hoàn tiền. Nếu bạn đặt kiểm tra trong guardrail đầu vào và nghĩ rằng nó bao phủ cả chuỗi, agent ở giữa sẽ không được kiểm tra ở bước nào cả.
Cách xử lý là đặt kiểm tra ngay tại tool hoàn tiền. SDK có sẵn tool guardrail cho việc này: theo tài liệu, nó chạy ở mọi lần gọi function tool được gắn guardrail, kiểm tra đầu vào trước khi tool chạy và đầu ra sau khi tool chạy.
Hãy viết rõ điểm này vào tài liệu thiết kế gửi khách. Đội bảo mật của khách sẽ hỏi đúng câu đó. Bạn nên trả lời được trước khi họ hỏi.
Ai đọc trace, và chất lượng được đo bằng gì?
Câu hỏi thứ tư hay bị để đến tháng thứ hai, lúc khách hỏi tại sao agent trả lời sai hôm thứ Ba. Mỗi bộ trả lời câu này theo một cách riêng.
OpenAI Agents SDK có tracing tích hợp và bật mặc định, rất tiện khi cần gỡ lỗi. Nhưng như đã nói ở đầu bài, khách theo chính sách Zero Data Retention sẽ không có tính năng này. Với họ, bạn phải tự dựng lớp quan sát ngay từ đầu.
Theo tài liệu Google Cloud, ADK có công cụ đánh giá tích hợp, cùng công cụ từ đối tác, để kiểm tra quỹ đạo thực thi của agent: không chỉ xem câu trả lời cuối có đúng không mà còn xem agent đã đi qua những bước nào.
Với khách cần chứng minh agent làm đúng quy trình, như nghiệp vụ duyệt hồ sơ chẳng hạn, đây là lợi thế thật.
Claude Agent SDK có hooks để chạy code tại các điểm then chốt trong vòng đời agent, cùng sessions, subagents và MCP. Hooks là chỗ tự nhiên để gắn phần quan sát.
Một cách làm với Claude Agent SDK là dùng hook ghi lại từng lần gọi tool vào hệ thống log của khách, rồi xây bộ test trên chính dữ liệu đó. Cách này tốn công dựng ban đầu, nhưng dữ liệu nằm hoàn toàn trong tay khách.
Bốn câu hỏi, ba câu trả lời
Từng bộ tài liệu chỉ nói về sản phẩm của mình. Đặt câu trả lời của chúng vào cùng một khung câu hỏi mới thấy được chỗ mỗi bộ mạnh và chỗ cần hỏi thêm.
| Câu hỏi với khách | Claude Agent SDK | OpenAI Agents SDK | Google ADK |
|---|---|---|---|
| Agent chạy ở đâu, ai vận hành? | Thư viện Python/TypeScript trong tiến trình do đội dự án vận hành; muốn được host thì dùng Managed Agents | Thư viện Python chạy trong tiến trình của đội dự án, có thêm sandbox agent | Mã nguồn mở, có bản Go và Java; đóng container chạy trên hạ tầng riêng hoặc Google Cloud |
| Mô hình nào, có đổi được không? | Xây quanh agent của Claude Code | Mô hình ngoài OpenAI chạy qua adapter beta, best-effort | Làm việc với gần như mọi mô hình sinh |
| Ai chặn hành động nguy hiểm? | Hooks chạy trước mọi bước, hook deny có hiệu lực cả ở bypassPermissions | Guardrail đầu vào chỉ ở agent đầu, đầu ra chỉ ở agent cuối; tool guardrail chạy ở mọi lần gọi tool được gắn | Tài liệu tổng quan không mô tả cơ chế chặn tool; cần tự thử trên chính luồng của khách trước khi cam kết |
| Ai đọc trace, đo chất lượng ra sao? | Hooks chạy code tại các điểm then chốt, dùng được để ghi log từng lần gọi tool | Tracing bật mặc định, nhưng không dùng được với Zero Data Retention | Có công cụ eval tích hợp cho quỹ đạo thực thi |
Bảng này không chỉ ra bộ nào thắng. Nó chỉ ra câu hỏi nào loại bộ nào. Khách có Zero Data Retention mà vẫn cần quan sát hệ thống thì phải tính lại khi nghĩ đến OpenAI Agents SDK.
Khách cần Go hoặc Java thì ADK có lợi thế rõ, còn Claude Agent SDK chỉ dùng được qua đường vòng là gọi CLI. Khách đã chọn Claude và có đội bảo mật khó tính thì mô hình phân quyền theo thứ tự của Anthropic là thứ đáng đem ra trình bày.
Luyện gì từ đây?
Theo một tutorial, dựng xong một demo rồi dừng ở đó là cách học agent ít giúp ích nhất cho công việc FDE.
Cách luyện hiệu quả nhất là dựng cùng một agent trên hai SDK, rồi cố tình làm hỏng nó: cho tool nguy hiểm lọt qua guardrail, tắt tracing, đổi sang một mô hình khác.
Khi đọc job description, hãy để ý các cụm như “on-prem”, “data residency”, “Zero Data Retention”, “GCP” hoặc “Java”. Đó là những ràng buộc sẽ quyết định SDK nào được chọn.
Trong CV, thay vì viết “có kinh nghiệm với LangChain và các agent framework”, hãy viết một dòng kiểu: “chọn SDK cho agent xử lý hồ sơ dựa trên yêu cầu lưu trữ dữ liệu và kiểm soát quyền gọi tool”.
Câu đó cho thấy bạn đã ngồi với khách thật.
Các framework sẽ còn thay đổi theo từng bản phát hành. Bốn câu hỏi trên thì ít thay đổi hơn nhiều, và FDE nào hỏi chúng trước khi viết code thường là người ít phải viết lại code nhất.
Bài này có hữu ích không?
Cảm ơn bạn đã góp ý!