A2A Protocol v1.2 — Giao thức chuẩn để các AI Agent giao tiếp với nhau

Posted on: 4/26/2026 6:14:13 PM

Trong thế giới AI ngày càng phức tạp, mỗi tổ chức không chỉ có một AI agent mà là hàng chục — thậm chí hàng trăm — agent chuyên biệt. Vấn đề nảy sinh: làm sao để các agent từ các framework khác nhau, các vendor khác nhau có thể tìm thấy nhau, giao tiếp và phối hợp mà không cần custom integration cho từng cặp? Đó chính là bài toán mà A2A Protocol (Agent-to-Agent) ra đời để giải quyết.

💡 Tóm tắt nhanh

Nếu MCP (Model Context Protocol) là cách agent kết nối với công cụ và dữ liệu, thì A2A là cách agent kết nối với agent. Hai giao thức bổ trợ nhau, không cạnh tranh — và cả hai đều thuộc Agentic AI Foundation dưới Linux Foundation.

150+ Tổ chức tham gia
v1.2 Phiên bản stable (03/2026)
3 Transport bindings (HTTP, JSON-RPC, gRPC)
8 Task lifecycle states

1. Vì sao cần A2A Protocol?

Giả sử bạn có một hệ thống doanh nghiệp với:

  • Agent HR (xây dựng trên LangGraph) xử lý tuyển dụng
  • Agent Finance (xây dựng trên Semantic Kernel) quản lý ngân sách
  • Agent IT Support (xây dựng trên CrewAI) hỗ trợ kỹ thuật

Khi một nhân viên mới được tuyển, Agent HR cần yêu cầu Agent Finance cấp phát ngân sách thiết bị, đồng thời yêu cầu Agent IT Support tạo tài khoản email. Nếu không có giao thức chung, bạn phải viết N × M integration riêng cho từng cặp agent — một cơn ác mộng bảo trì.

graph LR
    A[Agent HR
LangGraph] -->|A2A| B[Agent Finance
Semantic Kernel] A -->|A2A| C[Agent IT Support
CrewAI] B -->|A2A| D[Agent Procurement
AutoGen] C -->|A2A| D style A fill:#e94560,stroke:#fff,color:#fff style B fill:#2c3e50,stroke:#fff,color:#fff style C fill:#2c3e50,stroke:#fff,color:#fff style D fill:#16213e,stroke:#fff,color:#fff

Các agent từ framework khác nhau giao tiếp qua giao thức A2A chuẩn

2. Lịch sử phát triển

04/2025
Google công bố A2A Protocol tại Cloud Next '25, với sự tham gia của Salesforce, SAP, ServiceNow ngay từ đầu.
06/2025
A2A được chuyển giao cho Linux Foundation, trở thành dự án mã nguồn mở hoàn toàn.
08/2025
Phiên bản v0.3 ra mắt: thêm gRPC binding, signed Agent Cards, mở rộng Python SDK.
01/2026
A2A v1.0 chính thức — stable specification với đầy đủ 3 transport bindings.
03/2026
A2A v1.2 — Signed Agent Cards với chữ ký mã hóa, xác minh domain, multi-tenancy. 150+ tổ chức tham gia.

3. Kiến trúc cốt lõi

A2A được thiết kế xung quanh 5 khái niệm trung tâm:

3.1 Agent Card — Danh thiếp số của Agent

Agent Card là tài liệu JSON metadata mà mỗi A2A Server công bố, mô tả danh tính, khả năng, skills, endpoint và yêu cầu xác thực. Đây là cơ chế discovery — cho phép agent khác biết bạn là ai và có thể làm gì.

{
  "name": "Finance Agent",
  "description": "Quản lý ngân sách, phê duyệt chi tiêu, báo cáo tài chính",
  "url": "https://agents.company.com/finance",
  "version": "1.2",
  "skills": [
    {
      "id": "budget-approval",
      "name": "Budget Approval",
      "description": "Phê duyệt yêu cầu chi tiêu dưới 10,000 USD"
    },
    {
      "id": "expense-report",
      "name": "Expense Report",
      "description": "Tạo báo cáo chi tiêu theo phòng ban"
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "flows": {
        "clientCredentials": {
          "tokenUrl": "https://auth.company.com/token",
          "scopes": { "finance:read": "", "finance:write": "" }
        }
      }
    }
  }
}

✅ Signed Agent Cards (v1.2)

Từ v1.2, Agent Card có thể được ký số bằng chữ ký mã hóa (cryptographic signature) để xác minh domain sở hữu. Điều này ngăn chặn tấn công giả mạo agent — một vấn đề bảo mật nghiêm trọng khi agent tự động phát hiện và giao tiếp với nhau.

3.2 Task — Đơn vị công việc

Mỗi yêu cầu giữa agent tạo ra một Task — đơn vị công việc có trạng thái, lịch sử tương tác, và kết quả đầu ra. Task duy trì trạng thái xuyên suốt vòng đời, cho phép xử lý bất đồng bộ.

stateDiagram-v2
    [*] --> Submitted
    Submitted --> Working : Agent bắt đầu xử lý
    Working --> Completed : Thành công
    Working --> Failed : Lỗi
    Working --> Canceled : Client hủy
    Working --> InputRequired : Cần thêm thông tin
    Working --> AuthRequired : Cần xác thực
    Submitted --> Rejected : Agent từ chối
    InputRequired --> Working : Client cung cấp thông tin
    AuthRequired --> Working : Client xác thực
    Completed --> [*]
    Failed --> [*]
    Canceled --> [*]
    Rejected --> [*]

Vòng đời trạng thái của Task trong A2A Protocol

Đáng chú ý là trạng thái InputRequiredAuthRequired — đây là các interrupted states cho phép multi-turn interaction. Agent có thể yêu cầu thêm thông tin hoặc xác thực trước khi tiếp tục, tương tự như cách con người hỏi lại khi thiếu thông tin.

3.3 Message, Artifact và Part

Khái niệmVai tròVí dụ
MessageĐơn vị giao tiếp giữa client và agent, mang role (user/agent) và một hoặc nhiều Part"Hãy phê duyệt ngân sách $5,000 cho phòng kỹ thuật"
ArtifactKết quả đầu ra của Task, tách biệt khỏi luồng giao tiếpFile PDF báo cáo, bảng dữ liệu JSON
PartĐơn vị nội dung nhỏ nhất: text, bytes (base64), URL, hoặc structured JSONĐoạn text, hình ảnh base64, link file

⚠️ Lưu ý quan trọng

Theo specification: "Messages SHOULD NOT be used to deliver task outputs. Results SHOULD BE returned using Artifacts." — Tách biệt giao tiếp (Message) và kết quả (Artifact) giúp hệ thống dễ theo dõi và xử lý lỗi hơn.

4. Transport Bindings — Ba cách giao tiếp

A2A v1.2 hỗ trợ 3 transport bindings, phục vụ các use case khác nhau:

BindingFormatStreamingUse case
HTTP/RESTJSON over HTTPSSSE (Server-Sent Events)Web apps, public API, đơn giản nhất để bắt đầu
JSON-RPC 2.0JSON-RPC over HTTPSSSETương thích với hệ sinh thái MCP (cũng dùng JSON-RPC)
gRPCProtocol BuffersServer streamingHigh-throughput, low-latency, internal microservices

Ví dụ: Gửi message qua HTTP/REST

POST /messages HTTP/1.1
Host: agents.company.com
Content-Type: application/json
A2A-Version: 1.2
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...

{
  "message": {
    "role": "user",
    "parts": [
      {
        "text": "Tạo báo cáo chi tiêu Q1/2026 cho phòng Engineering"
      }
    ]
  },
  "configuration": {
    "acceptedOutputModes": ["text", "file"],
    "blocking": false
  }
}

Ví dụ: Streaming response qua SSE

POST /messages:stream HTTP/1.1
Host: agents.company.com
A2A-Version: 1.2

---
event: TaskStatusUpdateEvent
data: {"taskId":"t-123","status":{"state":"working","message":"Đang truy vấn dữ liệu..."}}

event: TaskArtifactUpdateEvent
data: {"taskId":"t-123","artifact":{"parts":[{"text":"Tổng chi tiêu Q1: $234,500"}]}}

event: TaskStatusUpdateEvent
data: {"taskId":"t-123","status":{"state":"completed"}}

5. Cơ chế nhận kết quả bất đồng bộ

Không phải task nào cũng hoàn thành ngay. A2A cung cấp 3 cơ chế để theo dõi task dài:

graph TB
    subgraph Polling
        A1[Client] -->|GET /tasks/id| B1[Server]
        B1 -->|Task status| A1
    end
    subgraph Streaming
        A2[Client] -->|GET /tasks/id:subscribe| B2[Server]
        B2 -->|SSE events| A2
    end
    subgraph Push Notification
        A3[Client] -->|Register webhook| B3[Server]
        B3 -->|HTTP POST events| C3[Client Webhook]
    end
    style A1 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
    style A2 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
    style A3 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
    style B1 fill:#e94560,stroke:#fff,color:#fff
    style B2 fill:#e94560,stroke:#fff,color:#fff
    style B3 fill:#e94560,stroke:#fff,color:#fff
    style C3 fill:#2c3e50,stroke:#fff,color:#fff

Ba cơ chế nhận kết quả bất đồng bộ: Polling, Streaming, Push Notification

Cơ chếĐộ trễPhức tạpKhi nào dùng
PollingCao (phụ thuộc tần suất poll)ThấpTask cập nhật không thường xuyên, prototype
StreamingRất thấp (real-time)Trung bìnhTask cần phản hồi tức thời, UI hiển thị tiến trình
Push NotificationThấpCao (cần webhook server)Server-to-server, task chạy hàng giờ/ngày

6. Bảo mật — Không chỉ là OAuth

A2A specification yêu cầu bảo mật nghiêm ngặt với nhiều lớp:

  • Transport Security: HTTPS bắt buộc cho mọi communication
  • Authentication: Hỗ trợ API Key, HTTP Bearer, OAuth 2.0, OpenID Connect, Mutual TLS
  • Signed Agent Cards (v1.2): Chữ ký mã hóa xác minh danh tính agent, chống giả mạo
  • Capability-based Authorization: Server chỉ cho phép truy cập đúng resource đã được ủy quyền
  • Information Leakage Prevention: Server KHÔNG ĐƯỢC phân biệt "không tồn tại" và "không có quyền" — tránh enumeration attack
// OAuth 2.0 Client Credentials flow cho agent-to-agent
{
  "securitySchemes": {
    "agent_oauth": {
      "type": "oauth2",
      "flows": {
        "clientCredentials": {
          "tokenUrl": "https://auth.company.com/oauth2/token",
          "scopes": {
            "agent:execute": "Thực thi task",
            "agent:read": "Đọc kết quả task"
          }
        }
      }
    }
  }
}

7. A2A vs MCP — Bổ trợ, không cạnh tranh

Đây là câu hỏi thường gặp nhất: "Nên dùng A2A hay MCP?" Câu trả lời: cả hai.

graph TB
    U[Người dùng] --> O[Orchestrator Agent]
    O -->|A2A| AG1[Agent Phân tích]
    O -->|A2A| AG2[Agent Viết báo cáo]
    O -->|A2A| AG3[Agent Gửi email]
    AG1 -->|MCP| T1[Database Tool]
    AG1 -->|MCP| T2[Analytics API]
    AG2 -->|MCP| T3[Template Engine]
    AG3 -->|MCP| T4[Email Service]
    style U fill:#f8f9fa,stroke:#e94560,color:#2c3e50
    style O fill:#e94560,stroke:#fff,color:#fff
    style AG1 fill:#2c3e50,stroke:#fff,color:#fff
    style AG2 fill:#2c3e50,stroke:#fff,color:#fff
    style AG3 fill:#2c3e50,stroke:#fff,color:#fff
    style T1 fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50
    style T2 fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50
    style T3 fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50
    style T4 fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50

A2A cho agent-to-agent routing, MCP cho agent-to-tool execution

Tiêu chíA2A ProtocolMCP (Model Context Protocol)
Mục đíchAgent giao tiếp với AgentAgent kết nối với Tool/Data
DiscoveryAgent Card (JSON metadata)Tool listing qua capability negotiation
TransportHTTPS, JSON-RPC, gRPCstdio (local), Streamable HTTP (remote)
OpacityAgent là "hộp đen" — không biết nội bộTool schema rõ ràng, deterministic
StatefulTask có lifecycle states phức tạpStateless per-request
Tạo bởiGoogle (04/2025)Anthropic (11/2024)
Quản trịLinux Foundation / AAIFLinux Foundation / AAIF

✅ Khi nào bắt đầu với cái nào?

MCP trước nếu bạn đang xây dựng agent đầu tiên cần kết nối database, API, file system. A2A khi bạn đã có nhiều agent và cần chúng phối hợp — ví dụ agent HR gọi agent Finance để phê duyệt chi tiêu.

8. Multi-Turn Interaction — Hội thoại nhiều lượt

Một tính năng mạnh mẽ của A2A là hỗ trợ multi-turn interaction thông qua contextId. Điều này cho phép:

  • Agent hỏi lại khi thiếu thông tin (trạng thái InputRequired)
  • Nhiều task liên quan được nhóm lại trong cùng một ngữ cảnh hội thoại
  • Agent duy trì conversational history xuyên suốt các tương tác
// Turn 1: Client gửi yêu cầu
{
  "message": {
    "role": "user",
    "parts": [{ "text": "Phê duyệt chi tiêu cho team Backend" }]
  }
}

// Server trả về: cần thêm thông tin
{
  "taskId": "t-456",
  "contextId": "ctx-789",
  "status": { "state": "input-required", "message": "Số tiền cụ thể là bao nhiêu?" }
}

// Turn 2: Client bổ sung thông tin (cùng contextId)
{
  "message": {
    "role": "user",
    "contextId": "ctx-789",
    "taskId": "t-456",
    "parts": [{ "text": "$8,500 cho license phần mềm Q2" }]
  }
}

9. Hệ sinh thái và SDK

A2A đã được tích hợp native vào các framework agent phổ biến nhất:

Framework / SDKHỗ trợ A2ANgôn ngữ
Google ADK (Agent Development Kit)Native, first-classPython
LangGraphBuilt-in integrationPython, TypeScript
CrewAIPluginPython
Semantic KernelBuilt-inC#, Python
AutoGenBuilt-inPython
LlamaIndex AgentsIntegrationPython

Triển khai nhanh với Google ADK

# Tạo project với A2A support
uvx agent-starter-pack create my-finance-agent -a adk@gemini-fullstack

# Agent Card được tự động tạo tại /.well-known/agent.json
# Deploy lên Cloud Run
gcloud run deploy my-finance-agent --source .

10. Production Deployment — Ai đang dùng?

A2A không chỉ là specification trên giấy — các tổ chức lớn đã triển khai production:

  • Tyson Foods & Gordon Food Service: Hệ thống supply chain với nhiều agent A2A phối hợp chia sẻ dữ liệu sản phẩm và lead bán hàng real-time
  • Adobe: Agent sáng tạo nội dung phối hợp qua A2A
  • ServiceNow: IT workflow agent tự động routing ticket qua A2A
  • S&P Global: Agent phân tích tài chính giao tiếp cross-domain
  • Salesforce, SAP, Twilio: Tích hợp A2A vào platform agent ecosystem

11. Thiết kế hệ thống thực tế với A2A

Dưới đây là kiến trúc mẫu cho một hệ thống quản lý đơn hàng sử dụng A2A:

graph TB
    GW[API Gateway] --> OA[Order Agent]
    OA -->|A2A: kiểm tra tồn kho| IA[Inventory Agent]
    OA -->|A2A: xử lý thanh toán| PA[Payment Agent]
    OA -->|A2A: tạo vận đơn| SA[Shipping Agent]
    PA -->|A2A: kiểm tra fraud| FA[Fraud Detection Agent]
    SA -->|A2A: gửi notification| NA[Notification Agent]
    IA -->|MCP| DB1[(Inventory DB)]
    PA -->|MCP| PS[Payment Service]
    SA -->|MCP| LP[Logistics Partner API]
    NA -->|MCP| ES[Email/SMS Service]
    style GW fill:#f8f9fa,stroke:#e94560,color:#2c3e50
    style OA fill:#e94560,stroke:#fff,color:#fff
    style IA fill:#2c3e50,stroke:#fff,color:#fff
    style PA fill:#2c3e50,stroke:#fff,color:#fff
    style SA fill:#2c3e50,stroke:#fff,color:#fff
    style FA fill:#16213e,stroke:#fff,color:#fff
    style NA fill:#16213e,stroke:#fff,color:#fff
    style DB1 fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50
    style PS fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50
    style LP fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50
    style ES fill:#f8f9fa,stroke:#2c3e50,color:#2c3e50

Kiến trúc hệ thống quản lý đơn hàng kết hợp A2A (agent-to-agent) và MCP (agent-to-tool)

12. Best Practices khi triển khai A2A

📋 Checklist triển khai

  • Agent Card phải cụ thể: Mô tả rõ skills, input/output format, giới hạn — agent card mơ hồ sẽ khiến discovery kém hiệu quả
  • Dùng contextId để nhóm task: Tránh tạo context mới cho mỗi message trong cùng luồng công việc
  • Implement cả 3 cơ chế async: Polling cho backward compatibility, Streaming cho UX tốt, Push cho server-to-server
  • Signed Agent Cards bắt buộc cho production: Không bao giờ tin tưởng unsigned agent card trong môi trường thực
  • Tách Message và Artifact: Kết quả task phải trả về qua Artifact, không nhồi vào Message
  • Versioning: Luôn gửi header A2A-Version, xử lý gracefully khi server không hỗ trợ phiên bản mới

Kết luận

A2A Protocol v1.2 đánh dấu bước trưởng thành của giao thức agent-to-agent: từ proposal của Google thành tiêu chuẩn mở dưới Linux Foundation với 150+ tổ chức tham gia. Kết hợp với MCP cho agent-to-tool, bộ đôi A2A + MCP tạo nên nền tảng giao tiếp hoàn chỉnh cho hệ sinh thái AI đa agent.

Với signed Agent Cards, multi-turn interaction, và 3 transport bindings linh hoạt, A2A sẵn sàng cho production. Nếu bạn đang vận hành nhiều hơn một AI agent — đã đến lúc nghiêm túc xem xét A2A.

Tham khảo