A2A协议规范
Agent2Agent (A2A) 协议官方规范
历史版本:
📋 规范概述
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标识。任务是有状态的,通过定义的生命周期进行进展 | 工作管理 |
部分 | 消息或工件中最小的内容单元(例如TextPart 、FilePart 、DataPart ) | 内容容器 |
工件 | 智能体因任务而生成的输出(例如文档、图像、结构化数据),由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版本:下载完整规范文档(即将推出)