Google ADK — Framework Mã nguồn Mở để Xây dựng AI Agent Production

Posted on: 5/7/2026 3:21:58 AM

Khi phong trào AI Agent bùng nổ trong 2025–2026, mỗi vendor và framework đều đưa ra cách tiếp cận riêng: LangChain/LangGraph cho Python community, Semantic Kernel cho hệ sinh thái .NET, CrewAI cho role-based agents. Vấn đề chung? Mỗi framework có cách quản lý context, tool, memory và orchestration khác nhau — và gần như không tương thích lẫn nhau. Google Agent Development Kit (ADK) ra mắt giữa năm 2025 với tham vọng lớn hơn: không chỉ là thêm một framework nữa, mà là nền tảng mở tích hợp cả MCP (truy cập tool) lẫn A2A (agent-to-agent communication), hỗ trợ đa ngôn ngữ (Python, TypeScript, Go, Java) và triển khai từ local đến Google Cloud chỉ với một lệnh duy nhất.

Bài viết này đi sâu vào kiến trúc, hệ thống agent types, tool integration, context management và các pattern production thực tế của ADK — framework đang nhanh chóng trở thành lựa chọn hàng đầu cho các team xây dựng hệ thống multi-agent enterprise.

4Ngôn ngữ SDK: Python, TS, Go, Java
5Loại Agent tích hợp sẵn
MCP + A2ATích hợp cả hai giao thức chuẩn
1 lệnhDeploy lên Cloud Run / GKE

1. Google ADK là gì và tại sao cần quan tâm?

Agent Development Kit (ADK) là framework mã nguồn mở của Google dùng để xây dựng, debug và triển khai AI agent ở quy mô enterprise. Khác với các framework tập trung vào một ngôn ngữ hay một mô hình duy nhất, ADK được thiết kế với triết lý model-agnosticprotocol-native:

  • Model-agnostic: Hỗ trợ Gemini, Claude, Ollama, vLLM, LiteLLM — thay đổi model chỉ bằng một dòng config
  • Protocol-native: Tích hợp MCP để truy cập tool/data và A2A để giao tiếp agent-to-agent ngay trong core, không cần plugin bên thứ ba
  • Multi-language: SDK chính thức cho Python (google-adk), TypeScript (@google/adk), Go (google.golang.org/adk), Java (com.google.adk:google-adk)
  • Deployment-ready: Từ local dev (Web UI, CLI, API Server) đến Google Cloud (Agent Runtime, Cloud Run, GKE) mà không cần thay đổi code

Điểm khác biệt cốt lõi

Hầu hết framework AI agent hiện tại buộc bạn chọn giữa đơn giản nhưng giới hạn (CrewAI) hoặc linh hoạt nhưng phức tạp (LangGraph). ADK theo hướng progressive disclosure — bắt đầu với vài dòng code cho agent đơn giản, mở rộng dần đến multi-agent orchestration, graph-based workflows và production deployment mà không phải refactor lại kiến trúc.

2. Kiến trúc cốt lõi của ADK

ADK xây dựng trên bốn trụ cột chính: Agents (đơn vị xử lý), Tools (khả năng tương tác với thế giới bên ngoài), Sessions (ngữ cảnh hội thoại) và Memory (kiến thức dài hạn). Mỗi trụ cột được thiết kế modular — bạn có thể thay thế bất kỳ thành phần nào bằng implementation custom mà không ảnh hưởng phần còn lại.

graph TB
    subgraph ADK["Google ADK Framework"]
        direction TB
        subgraph Agents["Agent Layer"]
            LLM["LlmAgent
Suy luận + Tool calling"] SEQ["SequentialAgent
Chạy tuần tự"] PAR["ParallelAgent
Chạy song song"] LOOP["LoopAgent
Lặp đến khi xong"] CUSTOM["CustomAgent
Logic tùy chỉnh"] end subgraph Tools["Tool Layer"] FT["FunctionTool
Hàm Python/TS/Go"] MCPT["MCPTool
MCP Servers"] A2AT["AgentTool
A2A Protocol"] OAPI["OpenAPI Tool
REST APIs"] GS["GoogleSearchTool"] end subgraph Context["Context Layer"] SESS["Sessions
Hội thoại + State"] MEM["Memory
Cross-session learning"] ART["Artifacts
File & Data lớn"] end end Agents --> Tools Agents --> Context style ADK fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style Agents fill:#fff,stroke:#e94560,color:#2c3e50 style Tools fill:#fff,stroke:#4CAF50,color:#2c3e50 style Context fill:#fff,stroke:#2196F3,color:#2c3e50 style LLM fill:#e94560,stroke:#fff,color:#fff style SEQ fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style PAR fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style LOOP fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style CUSTOM fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style FT fill:#f8f9fa,stroke:#4CAF50,color:#2c3e50 style MCPT fill:#4CAF50,stroke:#fff,color:#fff style A2AT fill:#4CAF50,stroke:#fff,color:#fff style OAPI fill:#f8f9fa,stroke:#4CAF50,color:#2c3e50 style GS fill:#f8f9fa,stroke:#4CAF50,color:#2c3e50 style SESS fill:#f8f9fa,stroke:#2196F3,color:#2c3e50 style MEM fill:#2196F3,stroke:#fff,color:#fff style ART fill:#f8f9fa,stroke:#2196F3,color:#2c3e50

Hình 1: Kiến trúc ba tầng của Google ADK — Agents, Tools và Context

2.1. Hệ thống Agent Types

ADK cung cấp năm loại agent tích hợp sẵn, mỗi loại phục vụ một pattern orchestration khác nhau:

Agent Type Mô tả Khi nào dùng
LlmAgent Agent cốt lõi, sử dụng LLM để suy luận, gọi tool và tạo response. Có instructions, tools và model config riêng. Mọi tác vụ cần suy luận ngôn ngữ tự nhiên: trả lời câu hỏi, phân tích dữ liệu, viết code
SequentialAgent Chạy một danh sách sub-agents theo thứ tự, output của agent trước là input của agent sau. Pipeline xử lý nhiều bước: extract → transform → validate → load
ParallelAgent Chạy nhiều sub-agents đồng thời, tổng hợp kết quả khi tất cả hoàn thành. Fan-out tasks: gọi nhiều API cùng lúc, tìm kiếm song song trên nhiều nguồn
LoopAgent Lặp đi lặp lại một sub-agent cho đến khi đạt điều kiện dừng (max iterations hoặc escalation). Refinement loops: tự review và sửa code, iterative research, retry with feedback
CustomAgent Override hoàn toàn logic orchestration, tự viết vòng lặp agent theo ý muốn. Khi cần logic điều phối đặc thù mà 4 loại trên không đáp ứng

Composability là chìa khóa

Điểm mạnh lớn nhất của ADK là các agent types có thể lồng nhau (composable). Một SequentialAgent có thể chứa một ParallelAgent ở bước 2, bên trong đó mỗi nhánh là một LlmAgent với tool riêng. Kiến trúc này cho phép biểu diễn bất kỳ workflow phức tạp nào mà không cần custom code.

2.2. Tool System — MCP, A2A và Function Tools

ADK hỗ trợ năm loại tool, trong đó ba loại đáng chú ý nhất là:

FunctionTool — Biến bất kỳ hàm Python/TypeScript/Go/Java nào thành tool mà agent có thể gọi. ADK tự động sinh JSON Schema từ type annotations và docstring, không cần viết schema tay:

from google.adk import Agent, FunctionTool

def get_weather(city: str, unit: str = "celsius") -> dict:
    """Lấy thời tiết hiện tại cho một thành phố."""
    return {"city": city, "temp": 28, "unit": unit}

agent = Agent(
    model="gemini-2.5-flash",
    name="weather_agent",
    instructions="Bạn là trợ lý thời tiết.",
    tools=[FunctionTool(get_weather)]
)

MCPTool — Kết nối trực tiếp với bất kỳ MCP Server nào (filesystem, database, GitHub, Slack...). Thay vì viết wrapper cho từng API, agent dùng MCPTool để truy cập hàng trăm MCP server có sẵn trong hệ sinh thái:

from google.adk.tools.mcp import MCPTool

# Kết nối tới MCP server cho GitHub
github_tools = MCPTool.from_server(
    command="npx",
    args=["-y", "@modelcontextprotocol/server-github"],
    env={"GITHUB_TOKEN": "ghp_xxx"}
)

AgentTool (A2A) — Cho phép agent gọi các agent khác qua giao thức A2A, kể cả agent được xây dựng bằng framework khác (LangGraph, CrewAI, Semantic Kernel). Đây là điểm khiến ADK trở nên độc đáo — nó không khóa bạn vào một hệ sinh thái duy nhất:

from google.adk.a2a import A2AClient

# Gọi agent pricing bên ngoài qua A2A
pricing_client = A2AClient("https://pricing-agent.example.com")
result = await pricing_client.send_task(
    "Kiểm tra giá bán buôn cho 500kg cà phê Robusta"
)
graph LR
    ADK_AGENT["ADK Agent
(Orchestrator)"] ADK_AGENT -->|"FunctionTool"| LOCAL["Hàm local
Python/TS/Go"] ADK_AGENT -->|"MCPTool"| MCP_S["MCP Servers
GitHub, DB, Slack..."] ADK_AGENT -->|"AgentTool (A2A)"| EXT["Agent bên ngoài
LangGraph, CrewAI..."] ADK_AGENT -->|"OpenAPI Tool"| REST["REST APIs
Bất kỳ endpoint nào"] ADK_AGENT -->|"GoogleSearchTool"| SEARCH["Google Search
Real-time web data"] style ADK_AGENT fill:#e94560,stroke:#fff,color:#fff style LOCAL fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style MCP_S fill:#4CAF50,stroke:#fff,color:#fff style EXT fill:#2196F3,stroke:#fff,color:#fff style REST fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style SEARCH fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50

Hình 2: Năm loại tool trong ADK — từ local function đến remote agent qua A2A

2.3. Session, Memory và Artifacts

ADK xử lý context theo ba tầng phân biệt rõ ràng:

Session — Đại diện cho một cuộc hội thoại đang diễn ra. Mỗi session chứa lịch sử message, state (key-value store tạm thời) và danh sách events. ADK hỗ trợ rewind (quay lại trạng thái trước) và migrate (chuyển session sang agent khác) — rất hữu ích cho kịch bản handoff giữa các agent chuyên biệt.

Memory — Kiến thức dài hạn xuyên suốt nhiều session. ADK cho phép cấu hình memory strategy (in-memory, file-based, hoặc external store). Agent có thể học từ các session trước mà không cần nhồi toàn bộ lịch sử vào context window — giải quyết vấn đề Context Rot mà nhiều framework khác gặp phải.

Artifacts — Quản lý file và dữ liệu lớn (hình ảnh, PDF, dataset). Thay vì nhồi binary vào context, ADK lazy-load artifacts khi agent thực sự cần — tiết kiệm token và giữ cho context window gọn gàng.

Context không phải là không giới hạn

Dù ADK tự động filter irrelevant events và summarize lịch sử cũ, bạn vẫn cần thiết kế agent với context budget trong đầu. Một agent có 50 tools sẽ tiêu tốn hàng nghìn token chỉ riêng cho tool schema. Nguyên tắc: mỗi agent chỉ nên có 5–10 tools trực tiếp, còn lại delegate cho sub-agents chuyên biệt.

3. Multi-Agent Orchestration Patterns

Sức mạnh thực sự của ADK thể hiện khi bạn xây dựng hệ thống nhiều agent phối hợp. Dưới đây là ba pattern phổ biến nhất trong production:

3.1. Hierarchical Delegation

Một agent "quản lý" (orchestrator) nhận yêu cầu từ user, phân tích và delegate cho các agent chuyên biệt. Pattern này phù hợp cho các hệ thống phức tạp như customer support, code generation, hoặc research:

graph TD
    USER["User Request"] --> ORCH["Orchestrator Agent
(LlmAgent)"] ORCH -->|"Câu hỏi kỹ thuật"| TECH["Tech Support Agent
Tools: docs, codebase"] ORCH -->|"Đơn hàng/billing"| BILL["Billing Agent
Tools: payment API, CRM"] ORCH -->|"Feedback/complaint"| FEED["Feedback Agent
Tools: ticket system"] TECH --> RESP["Response tổng hợp"] BILL --> RESP FEED --> RESP RESP --> USER style USER fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style ORCH fill:#e94560,stroke:#fff,color:#fff style TECH fill:#2c3e50,stroke:#fff,color:#fff style BILL fill:#2c3e50,stroke:#fff,color:#fff style FEED fill:#2c3e50,stroke:#fff,color:#fff style RESP fill:#4CAF50,stroke:#fff,color:#fff

Hình 3: Hierarchical Delegation — orchestrator phân việc cho agent chuyên biệt

3.2. Pipeline (Sequential)

Dữ liệu chảy qua một chuỗi agent, mỗi agent xử lý và enrichment trước khi chuyển tiếp. Ví dụ pipeline content creation:

from google.adk import Agent, SequentialAgent

researcher = Agent(name="researcher", model="gemini-2.5-pro",
    instructions="Nghiên cứu chủ đề và thu thập facts.",
    tools=[google_search, web_scraper])

writer = Agent(name="writer", model="gemini-2.5-flash",
    instructions="Viết bài từ research notes.",
    tools=[])

reviewer = Agent(name="reviewer", model="gemini-2.5-pro",
    instructions="Review bài viết, đề xuất sửa đổi.",
    tools=[])

pipeline = SequentialAgent(
    name="content_pipeline",
    sub_agents=[researcher, writer, reviewer]
)

3.3. Fan-out / Fan-in (Parallel)

Khi cần thu thập thông tin từ nhiều nguồn đồng thời — gọi nhiều API, tìm kiếm trên nhiều database, hoặc phân tích song song nhiều tài liệu:

from google.adk import Agent, ParallelAgent

price_checker = Agent(name="price_checker", ...)
review_analyzer = Agent(name="review_analyzer", ...)
inventory_checker = Agent(name="inventory_checker", ...)

market_research = ParallelAgent(
    name="market_research",
    sub_agents=[price_checker, review_analyzer, inventory_checker]
)
# Ba agent chạy đồng thời, kết quả tổng hợp khi tất cả hoàn thành

4. Skills — Chuyên gia theo Yêu cầu

Một trong những tính năng nổi bật nhất của ADK là SkillToolset — hệ thống nạp kiến thức chuyên gia theo yêu cầu với mô hình progressive disclosure ba tầng, giảm khoảng 90% token baseline cho mỗi agent.

Tầng Nội dung Kích thước Khi nào load
L1 — Metadata Tên + mô tả ngắn của skill ~100 tokens/skill Luôn luôn (startup)
L2 — Instructions Hướng dẫn chi tiết step-by-step <5.000 tokens Khi agent kích hoạt skill
L3 — Resources Style guide, API spec, reference docs Không giới hạn Khi instructions yêu cầu

SkillToolset tự động tạo ba tool cho agent: list_skills (xem menu L1), load_skill (nạp instructions L2) và load_skill_resource (nạp tài liệu tham chiếu L3). Agent tự quyết định khi nào cần skill nào — không cần hard-code logic.

Skills được định nghĩa theo chuẩn agentskills.io — cùng định dạng được hỗ trợ bởi Gemini CLI, Claude Code, Cursor và hơn 40 sản phẩm khác. Điều này có nghĩa skill bạn viết cho ADK có thể tái sử dụng ngay trong các công cụ khác mà không cần chỉnh sửa:

# skills/seo-checker/SKILL.md
---
name: seo-checker
description: Kiểm tra và đề xuất tối ưu SEO cho bài blog
---

## Hướng dẫn
1. Đọc nội dung bài viết từ context
2. Kiểm tra: title length, meta description, heading hierarchy, internal links
3. Đánh giá điểm SEO từ 0-100
4. Đề xuất cải thiện cụ thể cho từng mục chưa đạt

Skill Factory — Agent tự tạo skill mới

ADK cho phép tạo meta-skill — một skill hướng dẫn agent cách tạo ra skill mới. Agent có thể sinh ra file SKILL.md tuân chuẩn agentskills.io tại runtime, sau đó nạp và sử dụng ngay. Đây là pattern cực kỳ mạnh cho các hệ thống cần mở rộng khả năng liên tục mà không cần deploy lại code.

5. Triển khai và Đánh giá

5.1. Deployment Options

ADK hỗ trợ triển khai ở nhiều cấp độ, từ development đến enterprise production:

Local Development: ADK đi kèm Web UI (giao diện debug trực quan), CLI chat interface và API Server cho tích hợp. Web UI cho phép inspect từng bước suy luận của agent, xem tool calls, state changes và token usage — rất hữu ích trong quá trình phát triển.

Google Cloud — Agent Runtime: Deploy với một lệnh duy nhất, agent tự động được cấp managed infrastructure, built-in authentication, Cloud Trace observability và enterprise-grade security. Không cần thay đổi code so với bản local.

Containerized (Cloud Run / GKE): Đóng gói agent thành container Docker và deploy lên Cloud Run (serverless, scale tự động) hoặc GKE (Kubernetes, kiểm soát tối đa). Pattern này phù hợp cho team đã có pipeline CI/CD sẵn.

Ambient Agents: Một pattern mới trong ADK — agent chạy ở background, lắng nghe events (webhook, message queue, cron) và phản ứng tự động. Ví dụ: agent giám sát Slack channel, tự phát hiện và trả lời câu hỏi kỹ thuật khi được tag.

5.2. Evaluation Framework

ADK tích hợp framework evaluation cho phép kiểm thử agent trước khi deploy production:

  • Custom Criteria: Định nghĩa tiêu chí đánh giá riêng (accuracy, relevance, format compliance...)
  • User Simulation: Tạo synthetic users để test conversation flows
  • Environment Simulation: Mock external services để test deterministic
  • Metrics Dashboard: Token usage, latency, success rate, tool call patterns

6. ADK so với các Framework AI Agent khác

Tiêu chí Google ADK LangGraph CrewAI Semantic Kernel
Ngôn ngữ Python, TS, Go, Java Python, JS Python C#, Python, Java
Model support Gemini, Claude, Ollama, vLLM, LiteLLM OpenAI, Anthropic, Google qua LangChain OpenAI, Anthropic, local OpenAI, Azure, Gemini, local
MCP tích hợp Native (MCPTool) Qua adapter Qua plugin Native (từ v1.x)
A2A support Native (AgentTool) Qua adapter Qua adapter Qua adapter
Orchestration Sequential, Parallel, Loop, Graph, Custom Graph-based (mạnh) Role-based crew Planner-based
Managed deployment Google Cloud Agent Runtime LangSmith Cloud CrewAI Enterprise Azure AI Agent Service
Skills system SkillToolset (agentskills.io) Không Không Plugins
Evaluation Tích hợp sẵn LangSmith Cơ bản Không tích hợp sẵn

7. ADK trong Protocol Stack — MCP + A2A = Hệ sinh thái hoàn chỉnh

Một trong những lý do ADK nổi bật là cách nó tích hợp cả hai giao thức chuẩn của hệ sinh thái AI Agent:

graph TB
    subgraph Stack["Protocol Stack cho AI Agents"]
        direction TB
        A2A_L["A2A Protocol
Agent ↔ Agent Communication"] MCP_L["MCP Protocol
Agent ↔ Tool/Data Access"] ADK_L["Google ADK
Agent Framework + Orchestration"] INFRA["Infrastructure
Cloud Run · GKE · Local"] end A2A_L --> ADK_L MCP_L --> ADK_L ADK_L --> INFRA style Stack fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style A2A_L fill:#2196F3,stroke:#fff,color:#fff style MCP_L fill:#4CAF50,stroke:#fff,color:#fff style ADK_L fill:#e94560,stroke:#fff,color:#fff style INFRA fill:#2c3e50,stroke:#fff,color:#fff

Hình 4: Protocol stack — ADK là tầng orchestration kết nối MCP (tool access) và A2A (agent communication)

MCP giải quyết bài toán "agent truy cập tool/data như thế nào" — một chuẩn kết nối duy nhất cho hàng trăm nguồn dữ liệu (database, file system, APIs, SaaS tools). A2A giải quyết bài toán "agent nói chuyện với agent khác như thế nào" — cho phép agent từ các framework và vendor khác nhau phát hiện, giao task và phối hợp công việc. ADK là tầng orchestration nằm giữa, biến hai giao thức này thành tool mà bất kỳ agent nào cũng có thể sử dụng ngay.

Ví dụ thực tế: Pipeline tuyển dụng

Một ADK orchestrator nhận yêu cầu "Tìm ứng viên Senior Backend Engineer". Nó sử dụng MCPTool để truy cập internal HR database và job spec. Sau đó gọi AgentTool (A2A) tới một sourcing agent (có thể viết bằng LangGraph) để tìm kiếm trên LinkedIn. Khi có danh sách ứng viên, nó gọi tiếp một scheduling agent (viết bằng Semantic Kernel) qua A2A để đặt lịch phỏng vấn — tất cả được điều phối bởi ADK mà không cần các agent nói cùng "ngôn ngữ" framework.

8. Bắt đầu nhanh với ADK

Cài đặt và chạy agent đầu tiên chỉ mất vài phút:

# Cài đặt ADK
pip install google-adk

# Tạo project mới
adk init my-first-agent
cd my-first-agent

# Chạy Web UI để debug
adk web

# Hoặc chat trực tiếp qua CLI
adk chat

File agent.py mẫu cho agent đơn giản:

from google.adk import Agent

def search_products(query: str, max_results: int = 5) -> list:
    """Tìm kiếm sản phẩm theo từ khóa."""
    # Logic tìm kiếm thực tế ở đây
    return [{"name": f"Product {i}", "price": 100 + i * 10} for i in range(max_results)]

root_agent = Agent(
    model="gemini-2.5-flash",
    name="shopping_assistant",
    instructions="""Bạn là trợ lý mua sắm thông minh.
    Giúp khách tìm sản phẩm phù hợp với nhu cầu và ngân sách.""",
    tools=[search_products]
)

Deploy lên Cloud Run:

# Một lệnh duy nhất để deploy production
adk deploy cloud-run \
    --project my-gcp-project \
    --region asia-southeast1 \
    --service-name shopping-agent

9. Kết luận

Google ADK không phải framework AI Agent duy nhất, nhưng là framework đầu tiên tích hợp native cả MCP lẫn A2A, hỗ trợ đa ngôn ngữ, và cung cấp con đường triển khai từ local đến cloud liền mạch. Triết lý progressive disclosure — đơn giản với agent đơn lẻ, mở rộng đến multi-agent orchestration phức tạp mà không phải refactor — giúp ADK phù hợp với cả prototype nhanh lẫn hệ thống enterprise production.

Với sự hỗ trợ của hơn 150 tổ chức trong hệ sinh thái A2A, bộ SDK đa ngôn ngữ, và hệ thống Skills tuân chuẩn agentskills.io, ADK đang định hình cách chúng ta xây dựng và triển khai AI Agents trong nửa cuối năm 2026 và xa hơn.

Nguồn tham khảo