什么是 A2A?

什么是 A2A?

https://medium.com/@akash22675/what-is-a2a-agent-to-agent-protocol-d2325a41633a


代理到代理协议(Agent to Agent Protocol / A2A) 是一个标准化的通信框架,使 AI agent 代理能够以一致、可预测的方式相互交互。A2A 由 Google 发布,并被包括 Intuitive,LangChain 和 MongoDB 在内的多家公司采用,它为不同的 AI agent 提供了基础设施,以便在复杂的任务上进行有效的协作。

A2A 协议的核心概念

A2A 解决了什么问题?

在现代人工智能应用中,复杂的任务通常需要多个专业代理的专业知识。例如,计划旅行可能涉及专门从事机票预订,酒店推荐和当地活动的代理商。如果没有标准化的协议,这些代理中的每一个都需要自定义集成代码来相互通信,从而导致:

  • 不一致的通信模式
  • 不兼容的数据格式
  • 维护和更新困难
  • 有限的互操作性

A2A 通过为代理建立标准方法来解决这些问题:

  • 发现彼此的能力
  • 交换信息
  • 协作处理任务
  • 处理错误和异常

A2A 与 MCP(模型上下文协议)

虽然这些协议看起来相似,但它们用于不同的目的:

  • MCP(Model Context Protocol)

    专注于语言模型如何与工具和资源(如 API、数据库和知识源)进行通信。把 MCP 看作是机械师如何与他们的工具进行交互,您可以在这里阅读更多上下文。

  • A2A

    A2A(Agent to Agent Protocol):专注于完整的代理(每个代理包含一个 LLM 加上工具)如何相互通信。A2A 是机械师与客户或零件供应商沟通的方式。

一个有用的类比:如果一个代理就像一个汽车维修人员(LLM)与他们的工具箱(通过 MCP 连接的工具),那么 A2A 定义了这个汽车维修人员如何与客户,零件供应商和其他专家进行沟通。

A2A 的主要组成部分

Agent Card

代理卡是代理用来向其他代理通告其能力的标准化描述。将 Agent Card 视为名片或个人资料,其中包括:

代理卡示例(JSON 格式):

{
  "name": "Google Maps Agent",
  "description": "An agent that helps with map-related tasks",
  "url": "https://maps-agent.example.com",
  "provider": {
    "name": "Google",
    "url": "https://google.com"
  },
  "capabilities": [
    {
      "type": "route_planning",
      "description": "Plan routes between locations"
    },
    {
      "type": "custom_map",
      "description": "Create custom maps with points of interest"
    }
  ]
}

代理发现

为了让代理进行协作,它们首先需要发现彼此。A2A 支持多种发现方法:

  • 基于 DNS 的发现 :客户端可以通过解析域名找到 agent.json 文件来发现代理。
  • 基于注册表的发现 :应用程序维护受信任代理的注册表。
  • 私有发现 :已知代理端点的直接配置。

任务处理流程

A2A 协议定义了代理之间的任务处理的标准流程:

A2A 中的任务遵循标准格式,通常用 JSON 表示:

{
  "task": {
    "input": "Tell me a joke",
    "instructions": "Generate a short, family-friendly joke"
  }
}

通信协议

A2A 基于已建立的通信协议:

  • HTTP/HTTPS:用于基本的请求/响应通信
  • JSON-RPC:用于结构化方法调用
  • 服务器发送事件(Server-Sent Events / SSE):用于流响应
  • JSON:作为标准数据交换格式

高级功能

A2A 支持多个高级功能,可实现强大的 agent 交互:

  • 多模式通信 :处理文本、图像、音频和其他数据类型
  • 流 :对长时间运行的任务进行实时流响应
  • 错误处理 :标准化的错误格式,以便更好地调试
  • 澄清请求 :agent 提出后续问题的能力

实用 A2A 实现

让我们看看 A2A 在实际实现中的样子:

示例:报销代理

// Agent Card Definition
const agentCard = {
  name: "Expense Reimbursement Agent",
  description: "An agent that processes expense reimbursement requests",
  url: "https://reimbursement.example.com",
  provider: {
    name: "Financial Services Inc.",
    url: "https://financial-services.example.com"
  },
  capabilities: [
    {
      type: "process_reimbursement",
      description: "Process expense receipts and generate reimbursement forms"
    }
  ]
};

// Agent Implementation
class ReimbursementAgent {
  constructor() {
    this.llm = new GeminiModel("gemini-2.0-flash");
    this.tools = [
      new ReceiptParser(),
      new PolicyValidator(),
      new FormGenerator()
    ];
  }
  
  async processTask(task) {
    // Process the task using LLM and tools
    const parsedReceipt = await this.tools[0].execute(task.input);
    const validationResult = await this.tools[1].execute(parsedReceipt);
    
    if (validationResult.needsClarification) {
      return {
        type: "clarification_request",
        question: validationResult.question
      };
    }
    
    const reimbursementForm = await this.tools[2].execute(validationResult);
    return {
      type: "task_complete",
      result: reimbursementForm
    };
  }
}

真实世界的 A2A 工作流程示例

为了更好地理解 A2A 的实际应用,让我们来看看一个真实的示例:

在本例中:

  • HR 经理在 Google Agent Workspace 中与客户端代理交互
  • 客户端代理发现并与专门的代理进行通信,以确定候选人来源和安排面试
  • 代理商在需要时提出澄清问题
  • 每个代理使用自己的工具和资源执行其专门功能
  • 客户端代理协调整个工作流并将结果呈现给用户

A2A 协议的优点

  • 标准化通信 :代理交互的一致方式,无需自定义集成
  • 可组合性 :易于联合专用代理以执行复杂任务
  • 发现 :发现可用代理及其能力的机制
  • 互操作性 :来自不同提供商的代理可以一起工作
  • 可扩展性 :新的代理类型可以加入生态系统

现状和未来潜力

Agent to Agent Protocol 仍处于早期阶段,最近由 Google 发布。虽然许多公司已经开始采用该协议,但该协议的全面影响和演变将随着时间的推移而展开。

主要发展领域包括:

  • 安全和认证标准
  • 更复杂的代理发现机制
  • 高级错误处理和恢复
  • 跨平台代理兼容性
  • 与现有 AI 生态系统的整合

Agent to Agent Protocol(A2A)是创建更具协作性的人工智能生态系统的重要一步。通过标准化代理之间的通信方式,A2A 可以实现更复杂的多代理解决方案,而无需为每个代理配对进行自定义集成。