- Published on

Agent to Agent Protocol (A2A): Ngôn ngữ chung cho kỷ nguyên multi-agent
A2A (Agent2Agent) là chuẩn mở cho phép các AI agent từ các framework khác nhau khám phá, ủy thác và cộng tác với nhau — ngôn ngữ chung cho kỷ nguyên multi-agent.
Agent to Agent Protocol (A2A): Ngôn ngữ chung cho kỷ nguyên multi-agent
Năm 2026, multi-agent systems không còn là khái niệm học thuật nữa — chúng là mô hình kiến trúc chủ đạo cho các ứng dụng AI thực tế. Nhưng càng có nhiều agent, câu hỏi càng cấp bách: các agent từ các framework khác nhau nói chuyện với nhau bằng gì?
A2A Protocol ra đời để trả lời câu hỏi đó.
Bài toán thực tế
Hãy tưởng tượng bạn đang xây dựng một hệ thống AI phục vụ khách hàng. Bạn có:
- Một flight booking agent viết bằng LangGraph
- Một hotel reservation agent dùng CrewAI
- Một currency conversion agent tự xây
- Một local tours agent từ bên thứ ba
Khi user hỏi "Giúp tôi lên kế hoạch chuyến đi Đà Nẵng tuần tới", orchestrator cần điều phối cả bốn agent này. Không có chuẩn chung, bạn phải viết custom glue code cho từng cặp agent, bảo mật không đồng nhất, và không có cách nào để agent biết agent kia có khả năng gì.
Hãy xem điều gì xảy ra với A2A:
Bước 1 — Discovery. Orchestrator fetch AgentCard của từng agent tại /.well-known/agent.json. Card cho biết agent có skill gì, cần auth gì, hỗ trợ những loại request nào — không cần đọc docs hay viết adapter thủ công.
Bước 2 — Phân tách yêu cầu. Orchestrator phân tích câu hỏi và tạo ra bốn task song song:
- Gửi task
"Tìm chuyến bay HCM → Đà Nẵng ngày 27/6"đến Flight Agent - Gửi task
"Tìm khách sạn 3 sao Đà Nẵng từ 27–30/6"đến Hotel Agent - Gửi task
"Tỷ giá VND/USD hiện tại"đến Currency Agent
Bước 3 — Agent tự xử lý, stateful. Flight Agent không trả về ngay — nó vào trạng thái WORKING và stream lại kết quả theo từng phần qua SSE. Khi cần thêm thông tin (ví dụ: hạng ghế), nó chuyển sang INPUT_REQUIRED và orchestrator tự động hỏi lại user — không cần orchestrator code logic này.
Bước 4 — Điều phối kết quả. Sau khi có kết quả từ ba agent, orchestrator gửi task tổng hợp đến Tours Agent: "Gợi ý 3 tour phù hợp cho khách đến Đà Nẵng ngày 27/6, budget 500 USD" — bao gồm ngữ cảnh từ các task trước.
Bước 5 — Trả kết quả. Orchestrator tổng hợp artifacts từ tất cả agent, trả về một itinerary hoàn chỉnh cho user.
Toàn bộ luồng này — discovery, delegation, streaming, human-in-the-loop — hoạt động giống nhau dù bốn agent được viết bằng bốn framework khác nhau, bởi tất cả đều nói cùng một ngôn ngữ: A2A.
A2A (Agent2Agent) Protocol là chuẩn mở giải quyết bài toán này — cho phép các AI agent khám phá, ủy thác, và cộng tác với nhau, bất kể chúng được xây bằng framework nào.
A2A là gì?
An open standard for agent-to-agent communication — a "common language" that lets AI agents built on different frameworks discover, delegate to, and collaborate with each other.
Ban đầu được phát triển bởi Google, A2A đã được trao cho Linux Foundation vào năm 2026. Version 1.0 phát hành theo giấy phép Apache 2.0, với Technical Steering Committee gồm: AWS, Cisco, Google, IBM Research, Microsoft, Salesforce, SAP, ServiceNow.
Đây không phải sản phẩm của một công ty — đây là chuẩn ngành.
A2A vs MCP: Hai tầng khác nhau, không phải đối thủ
Hiểu A2A phải đặt bên cạnh MCP (Model Context Protocol) — hai protocol này thường bị nhầm là cạnh tranh, nhưng thực ra chúng bổ sung cho nhau:
| MCP | A2A | |
|---|---|---|
| Tương tác | Agent ↔ Tool/Resource | Agent ↔ Agent |
| Trạng thái | Stateless | Stateful, multi-turn |
| Phong cách | Structured input → output | Conversational, negotiated |
| Nội tâm | Tool internals exposed | Agents hoàn toàn opaque |
| Ví dụ | Gọi DB, đọc file, gọi API | Lập kế hoạch, ủy thác, đàm phán |
Kiến trúc thực tế của một multi-agent system dùng cả hai:
User
└─► Orchestrator Agent ──(A2A)──► Specialist Agent A ──(MCP)──► Database
──(A2A)──► Specialist Agent B ──(MCP)──► API
──(A2A)──► External Agent C
A2A xử lý lớp cộng tác bên ngoài; MCP xử lý tool access bên trong mỗi agent.
Tại sao không wrap agent thành MCP tool?
Đây là điểm mấu chốt mà spec A2A nhấn mạnh: agent không phải tool. Một "billing agent" được expose qua MCP chỉ có thể trả lời một câu hỏi tại một thời điểm. Cùng agent đó qua A2A có thể đàm phán hoàn tiền, hỏi thêm thông tin, leo thang lên human-in-the-loop, rồi bàn giao cho finance agent — tất cả trong một task context liên tục. Wrap agent thành tool là đánh mất chính xác những gì làm agent có giá trị.
Cách A2A hoạt động
1. Agent Discovery — AgentCard
Mỗi A2A server publish một AgentCard tại endpoint chuẩn:
GET /.well-known/agent.json
AgentCard khai báo: capabilities, skills, authentication requirements, protocol version. Client đọc card này để biết agent kia có thể làm gì và cần auth như thế nào — trước khi gửi bất kỳ request nào.
2. Protocol Bindings
A2A không phát minh transport mới — nó dùng những gì enterprise đã có:
- JSON-RPC 2.0 over HTTP (primary) + SSE cho streaming
- gRPC với native streaming
- HTTP+JSON/REST
Versioning dùng format Major.Minor; client phải gửi header A2A-Version trong mỗi request.
3. Task Lifecycle — State Machine
Đơn vị công việc trong A2A là một Task. Mỗi task đi qua state machine rõ ràng:
SUBMITTED ──► WORKING ──► COMPLETED (terminal)
│
├──► FAILED (terminal)
├──► CANCELED (terminal)
├──► REJECTED (terminal)
│
├──► INPUT_REQUIRED ──► (client gửi thêm input) ──► WORKING
└──► AUTH_REQUIRED ───► (client lấy credentials) ──► WORKING
Hai trạng thái interrupted (INPUT_REQUIRED, AUTH_REQUIRED) là điểm đặc biệt: thay vì block hoặc fail, agent có thể tạm dừng và yêu cầu thêm thông tin. Đây là cơ chế native cho human-in-the-loop và lazy authentication — agent chỉ xin quyền khi thực sự cần, không phải upfront.
Client và server dùng contextId để nhóm các task và message liên quan thành một conversational session.
4. Streaming
Với long-running tasks, server stream updates qua SSE:
TaskStatusUpdateEvent— thông báo state changeTaskArtifactUpdateEvent— gửi partial results
Client không cần polling — cứ giữ connection và nhận updates khi có.
Tính năng Enterprise
A2A được thiết kế cho môi trường production, không phải demo. Một số điểm nổi bật:
Security:
- HTTPS mandatory (TLS 1.2+)
- Identity hoàn toàn ở HTTP headers — A2A payload không chứa credentials
- Auth schemes khai báo trong AgentCard theo OpenAPI spec (OAuth2, API key)
- Skill-level và action-level authorization
- Agent opacity là feature bảo mật: agent cộng tác mà không expose internal memory hay proprietary logic
Observability:
- OpenTelemetry + W3C Trace Context propagation across agent boundaries
- Log
taskId,sessionId, correlation IDs trên cả client và server - Audit trail cho task creation, state changes, sensitive operations
Extensions: A2A có cơ chế extension để layer thêm capabilities mà không break core standard. Extensions được khai báo trong AgentCard và activated per-request qua header A2A-Extensions. Các loại extension: data-only, profile, method (Extended Skills), và state machine extensions.
Multi-Tenancy: Một endpoint duy nhất có thể serve nhiều agent hoặc tenant qua ba cơ chế có thể kết hợp: URL sub-path routing, auth-credential routing, và body-based tenant field routing.
SDK và Ecosystem
Official SDKs: Python, JavaScript, Java, C#/.NET, Golang, Rust.
Các framework đã support A2A: LangGraph, CrewAI, Semantic Kernel, Google ADK (native A2AServer/RemoteA2aAgent).
Tại sao A2A quan trọng ngay bây giờ
Multi-agent systems đang trở thành mặc định. Mỗi team xây một agent; mỗi vendor ship một agent. Không có chuẩn chung, hệ quả là:
- Point-to-point integrations nhân lên theo bình phương số lượng agent
- Security inconsistencies giữa các integration
- Không có discoverability — không biết agent nào đang chạy ở đâu với khả năng gì
- Vendor lock-in vì mỗi framework có cách giao tiếp riêng
A2A giải quyết tất cả ở tầng protocol, không phải framework. Đây là lý do nó cần là chuẩn ngành, không phải sản phẩm của một công ty — và việc Linux Foundation tiếp quản là bước đi đúng hướng.
Vị trí của A2A trong agent stack
Models (LLMs) ← reasoning
Frameworks (ADK, LangGraph…) ← agent construction
MCP ← agent ↔ tool / data
A2A ← agent ↔ agent (cross-org, cross-framework)
Nếu MCP là USB-C cho tools, thì A2A là TCP/IP cho agents — một lớp kết nối cơ bản mà mọi thứ bên trên có thể build on top.
Kết
A2A không giải quyết bài toán agent thông minh hơn hay nhanh hơn. Nó giải quyết bài toán agents làm việc cùng nhau một cách đáng tin cậy — discoverable, secure, interoperable, và stateful đủ để phản ánh cách agent thực sự hoạt động.
Với sự bảo trợ của Linux Foundation và ecosystem framework đang mở rộng, A2A đang trên đường trở thành nền tảng cho multi-agent infrastructure — giống như HTTP là nền tảng cho web.
Bài viết dựa trên nghiên cứu từ A2A Protocol official documentation (Linux Foundation / A2A Project, v1.0) và wiki cá nhân.