0

A2A, Agent and Agent protocol

Google A2A (Agent-to-Agent) là một giao thức được thiết kế nhằm hỗ trợ khả năng hợp tác giữa các (agent) theo cách tự nhiên và không theo khuôn mẫu cứng nhắc. Giao thức này giúp các tác nhân làm việc đa chiều, từ xử lý nhiệm vụ nhanh đến nghiên cứu chuyên sâu kéo dài hàng giờ, thậm chí hàng ngày.

Nếu so sánh về mặt con người, thì giống như các chuyên gia làm việc với nhau, giờ đây đã có một ngôn ngữ chính thức (ví dụ như english) để các kĩ sư có thể giao tiếp với nhau liền mạch

MCP

image.png

A2A

image.png

Dưới đây là các điểm nổi bật của Google A2A:

image.png image.png


1. Nắm Bắt Khả Năng Tác Nhân (Embrace Agentic Capabilities)

  • Hợp tác đa tác nhân: Google A2A cho phép các tác nhân giao tiếp, cộng tác với nhau trong môi trường tự nhiên, ngay cả khi chúng không cùng chia sẻ bộ nhớ, công cụ hay ngữ cảnh.
  • Tự do và linh hoạt: Mỗi tác nhân không bị giới hạn chỉ sử dụng một công cụ cụ thể, mở ra khả năng làm việc trong các kịch bản đa tác nhân thật sự, tăng hiệu quả xử lý các tác vụ phức tạp.

2. Xây Dựng Dựa Trên Các Chuẩn Mực Hiện Hữu (Build on Existing Standards)

  • Tích hợp dễ dàng: A2A được xây dựng dựa trên các chuẩn mực phổ biến hiện nay như HTTP, SSE (Server-Sent Events) và JSON-RPC.
  • Tiện ích cho doanh nghiệp: Việc sử dụng các giao thức này giúp tích hợp A2A vào hệ thống CNTT hiện có của doanh nghiệp trở nên dễ dàng hơn, giảm chi phí và thời gian triển khai.

3. Bảo Mật Theo Mặc Định (Secure by Default)

  • Xác thực cấp doanh nghiệp: Giao thức A2A được thiết kế để hỗ trợ các cơ chế xác thực và phân quyền theo tiêu chuẩn doanh nghiệp, tương đương với các chuẩn của OpenAPI ngay từ giai đoạn ra mắt.
  • An toàn thông tin: Các tính năng bảo mật được tích hợp sẵn giúp bảo vệ dữ liệu và thông tin quan trọng khi các tác nhân trao đổi qua giao thức này.

4. Hỗ Trợ Các Tác Vụ Chạy Lâu (Support for Long-Running Tasks)

  • Tính linh hoạt cao: A2A không chỉ thích hợp cho các tác vụ ngắn hạn mà còn có thể xử lý các nhiệm vụ kéo dài, từ các công việc đơn giản cho đến nghiên cứu sâu chuyên đề.
  • Theo dõi tiến trình: Trong quá trình xử lý các tác vụ dài hạn, hệ thống A2A cung cấp phản hồi thời gian thực, thông báo và cập nhật trạng thái cho người dùng, giúp quản lý công việc hiệu quả hơn.

5. Không Giới Hạn Theo Phương Thức (Modality Agnostic)

  • Đa phương thức xử lý: Không chỉ hỗ trợ xử lý văn bản, A2A còn được thiết kế để tích hợp các loại hình dữ liệu khác như âm thanh và video.
  • Môi trường đa dạng: Điều này giúp mở rộng ứng dụng của A2A trong nhiều lĩnh vực, từ giao tiếp thông thường đến các hệ thống truyền thông và giải trí.

Example code mô phỏng (không phải production).

Dưới đây là một ví dụ đơn giản minh họa cách xây dựng một ứng dụng A2A sử dụng giao thức JSON-RPC qua HTTP bằng Python. Ví dụ này gồm 2 phần: một máy chủ (server) dùng Flask để xử lý các yêu cầu từ các agent và một client gửi yêu cầu tới server.


1. Mã Nguồn Máy Chủ (Server)

File: a2a_server.py

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/jsonrpc', methods=['POST'])
def json_rpc():
    # Lấy dữ liệu JSON gửi từ client (agent khác)
    data = request.get_json()
    method = data.get("method")
    params = data.get("params", {})
    req_id = data.get("id", None)

    # Xử lý theo phương thức được yêu cầu
    if method == "echo":
        # Phương thức echo: trả lại thông điệp đã nhận
        result = params.get("message", "")
    elif method == "add":
        # Phương thức add: tính tổng của hai số
        a = params.get("a", 0)
        b = params.get("b", 0)
        result = a + b
    else:
        # Trả về lỗi nếu không tìm thấy phương thức yêu cầu
        return jsonify({
            "jsonrpc": "2.0",
            "error": {"code": -32601, "message": "Method not found"},
            "id": req_id
        })
    
    # Trả về kết quả dạng JSON-RPC
    response = {"jsonrpc": "2.0", "result": result, "id": req_id}
    return jsonify(response)

if __name__ == '__main__':
    # Chạy server trên cổng 5000
    app.run(debug=True, port=5000)

Giải thích:

  • Endpoint /jsonrpc được thiết lập để nhận các yêu cầu POST dưới định dạng JSON-RPC.
  • Dữ liệu nhận được sẽ bao gồm:
    • method: tên hàm cần gọi (ví dụ: "echo" hay "add").
    • params: tham số truyền vào phương thức.
    • id: định danh của yêu cầu, giúp client đối chiếu kết quả.
  • Khi nhận yêu cầu, server kiểm tra phương thức và xử lý tương ứng, sau đó trả về kết quả theo chuẩn JSON-RPC.

2. Mã Nguồn Client

File: a2a_client.py

import requests

# Địa chỉ server chạy dịch vụ JSON-RPC
url = "http://127.0.0.1:5000/jsonrpc"

# Ví dụ gửi yêu cầu 'echo'
payload_echo = {
    "jsonrpc": "2.0",
    "method": "echo",
    "params": {"message": "Xin chào từ Agent A2A"},
    "id": 1
}

response_echo = requests.post(url, json=payload_echo)
print("Response echo:", response_echo.json())

# Ví dụ gửi yêu cầu 'add'
payload_add = {
    "jsonrpc": "2.0",
    "method": "add",
    "params": {"a": 5, "b": 3},
    "id": 2
}

response_add = requests.post(url, json=payload_add)
print("Response add:", response_add.json())

Giải thích:

  • Client gửi yêu cầu thông qua phương thức POST tới endpoint /jsonrpc đã được server cung cấp.
  • Payload của mỗi yêu cầu tuân theo chuẩn JSON-RPC:
    • jsonrpc: phiên bản giao thức (ở đây là "2.0").
    • method: tên phương thức cần gọi.
    • params: tham số cho phương thức.
    • id: định danh của yêu cầu.
  • Sau khi nhận phản hồi từ server, client in kết quả ra màn hình.

Mã nguồn opensource của google ví dụ đầy đủ:

https://github.com/google/A2A/tree/main/samples/python


Kết Luận

  • Google A2A là một giao thức hiện đại, linh hoạt và bảo mật, được xây dựng trên nền tảng các chuẩn mực công nghệ phổ biến hiện nay. Với khả năng hỗ trợ các tác vụ từ ngắn hạn đến dài hạn, cũng như việc tích hợp đa phương thức (text, audio, video).
  • A2A mở ra nhiều cơ hội ứng dụng trong môi trường làm việc đa tác nhân và tự động hóa thông minh. Việc hiểu rõ và áp dụng các tính năng trên sẽ giúp doanh nghiệp và nhà phát triển nâng cao hiệu suất và tính cạnh tranh trong kỷ nguyên số.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí