A2A协议规范

Agent2Agent (A2A) 协议官方规范

最新版本: v0.3.0 | 发布说明

历史版本:

📋 规范概述

Agent2Agent (A2A) 协议是一个开放标准,旨在促进独立的、潜在不透明的AI智能体系统之间的通信和互操作性。在智能体可能使用不同框架、语言或由不同供应商构建的生态系统中,A2A提供了共同的语言和交互模型。

本文档提供了A2A协议的详细技术规范。其主要目标是使智能体能够:

  • 发现彼此的能力
  • 协商交互模式(文本、文件、结构化数据)
  • 管理协作任务
  • 安全地交换信息以实现用户目标,无需访问彼此的内部状态、内存或工具

🎯 A2A的关键目标

互操作性

弥合不同智能体系统之间的通信鸿沟

协作能力

使智能体能够委托任务、交换上下文,并在复杂的用户请求上协同工作

服务发现

允许智能体动态发现和理解其他智能体的能力

灵活性

支持各种交互模式,包括同步请求/响应、实时更新的流式传输,以及长时间运行任务的异步推送通知

安全性

促进适合企业环境的安全通信模式,依赖标准的Web安全实践

异步性

原生支持长时间运行任务和可能涉及人工干预的交互

📐 指导原则

🔧 简单性

重用现有的、易于理解的标准(HTTP、JSON-RPC 2.0、服务器发送事件)

🏢 企业就绪

通过与既定的企业实践保持一致,解决身份验证、授权、安全、隐私、跟踪和监控问题

⚡ 异步优先

为(可能非常)长时间运行的任务和人工干预交互而设计

🎨 模态无关

支持多种内容类型的交换,包括文本、音频/视频(通过文件引用)、结构化数据/表单,以及潜在的嵌入式UI组件

🔒 不透明执行

智能体基于声明的能力和交换的信息进行协作,无需分享其内部思考、计划或工具实现

🏗️ 核心概念摘要

A2A围绕几个关键概念展开。详细说明请参考核心概念指南

概念描述作用
A2A客户端代表用户或其他系统向A2A服务器发起请求的应用程序或智能体请求发起者
A2A服务器暴露A2A兼容HTTP端点的智能体或智能体系统,处理任务并提供响应服务提供者
智能体卡片A2A服务器发布的JSON元数据文档,描述其身份、能力、技能、服务端点和身份验证要求服务发现
消息客户端和远程智能体之间的通信轮次,具有role(“用户"或"智能体”)并包含一个或多个Parts通信载体
任务A2A管理的基本工作单元,由唯一ID标识。任务是有状态的,通过定义的生命周期进行进展工作管理
部分消息或工件中最小的内容单元(例如TextPartFilePartDataPart内容容器
工件智能体因任务而生成的输出(例如文档、图像、结构化数据),由Parts组成结果输出

🚀 传输和格式

传输层要求

A2A支持多种传输协议,都在**HTTP(S)**上运行:

  • A2A通信必须通过**HTTP(S)**进行
  • A2A服务器在其AgentCard中定义的一个或多个URL处暴露其服务
  • 智能体必须实现本规范中定义的三个核心传输协议中的至少一个
  • 所有支持的传输协议在地位和能力上被认为是相等的

支持的传输协议

A2A定义了三个核心传输协议,智能体可以根据需求选择实现:

1. JSON-RPC over HTTP

  • 基于JSON-RPC 2.0标准
  • 适合同步请求/响应模式
  • 简单易实现,广泛支持

2. 服务器发送事件 (SSE)

  • 基于HTTP的流式传输
  • 适合实时更新和长时间运行任务
  • 客户端友好的单向流

3. 推送通知

  • 异步Webhook模式
  • 适合极长时间运行的任务
  • 支持断开连接场景

📖 规范章节

🔧 核心协议

  • 基本通信模式
  • 消息格式定义
  • 任务生命周期管理

📡 传输协议

  • JSON-RPC实现规范
  • SSE流式传输协议
  • Webhook推送通知机制

🗂️ 数据结构

  • 智能体卡片格式
  • 消息和工件结构
  • 错误处理规范

🔐 安全机制

  • 身份验证方案
  • 授权控制
  • 数据保护要求

🎛️ API接口

  • 端点定义
  • 参数说明
  • 响应格式

📋 实现指南

  • 最佳实践建议
  • 常见模式和陷阱
  • 测试和验证

🔗 相关资源

官方文档

开发工具

社区支持


💡 提示:本规范是A2A协议的权威技术文档。建议结合实践教程代码示例一起学习,以更好地理解协议的实际应用。

📄 PDF版本下载完整规范文档(即将推出)