AI代理通信协议

一个开放的协议,用于实现不同AI代理之间的通信和互操作性,支持多代理协作和任务管理。

  • by waldzellai
  • 本地部署
  • 更新于
在 GitHub 查看 waldzellai/a2a-plus

使用说明

代理2代理(A2A)协议

一种开放协议,实现不透明代理应用程序之间的通信和互操作性。

企业采用人工智能的最大挑战之一是让基于不同框架和供应商的代理协同工作。这就是为什么我们创建了一个开放 代理2代理(A2A)协议,一种帮助不同生态系统中的代理相互通信的协作方式。谷歌正在推动该行业的开放协议倡议,因为我们相信该协议将 通过为代理提供一种通用语言来支持多代理通信至关重要,无论它们基于什么框架或供应商构建. 随着 A2A,代理可以相互展示他们的能力,并协商他们将如何与用户交互(通过文本、表单或双向音频/视频),同时安全地协同工作。

见A2A在行动

手表 这个演示视频 了解A2A如何实现不同代理框架之间的无缝通信。

概念概述

Agent2Agent(A2A)协议促进了独立AI代理之间的通信。以下是核心概念:

  • 代理卡: 公共元数据文件(通常位于 /.well-known/agent.json)描述代理的能力、技能、端点URL和身份验证要求。客户端使用它进行发现。
  • A2A服务器: 暴露实现A2A协议方法的HTTP端点的代理(在 json规范).它接收请求并管理任务执行。
  • A2A客户: 使用A2A服务的应用程序或其他代理。它发送请求(如 tasks/send)到A2A服务器的URL。
  • 任务: 中央工作单元。客户端通过发送消息来启动任务(tasks/send 或 tasks/sendSubscribe).任务具有唯一的ID和状态进度(submitted, working, input-required, completed, failed, canceled).
  • 留言: 表示客户端之间的通信转换(role: "user")以及代理人(role: "agent").邮件包含 Parts.
  • 零件: a中的基本内容单元 Message 或 Artifact.可以 TextPart, FilePart (带内联字节或URI),或 DataPart (对于结构化JSON,例如表单)。
  • 工件: 表示代理在任务期间生成的输出(例如,生成的文件、最终结构化数据)。文物还包含 Parts.
  • 流动: 对于长时间运行的任务,支持 streaming 能力可以使用 tasks/sendSubscribe客户端接收服务器发送的事件(SSE),其中包含 TaskStatusUpdateEvent 或 TaskArtifactUpdateEvent 消息,提供实时进度。
  • 推送通知: 服务器支持 pushNotifications 可以主动向客户端提供的webhook URL发送任务更新,通过以下方式配置 tasks/pushNotification/set.

典型流量

  1. 发现: 客户端从服务器的已知URL获取代理卡。
  2. 启动: 客户端发送 tasks/send 或 tasks/sendSubscribe 包含初始用户消息和唯一任务ID的请求。
  3. 处理:
    • (流媒体): 服务器在任务进行时发送SSE事件(状态更新、工件)。
    • (非流媒体): 服务器同步处理任务并返回最终结果 Task 响应中的对象。
  4. 交互(可选): 如果任务进入 input-required,客户端通过以下方式使用相同的任务ID发送后续消息 tasks/send 或 tasks/sendSubscribe.
  5. 完成: 任务最终达到终端状态(completed, failed, canceled).

入门指南

贡献

我们高度重视社区的贡献,并感谢您对A2A协议的兴趣!以下是您如何参与其中:

  • 开始?请查看我们的 贡献指南 开始吧。
  • 有问题吗?加入我们的社区 GitHub讨论.
  • 想帮助提供协议改进反馈吗?探察 GitHub问题.
  • 私人反馈?请使用这个 谷歌表单
  • 现有的谷歌云平台客户,想加入我们的合作伙伴计划,为A2A生态系统做出贡献吗?请填写这个 形式

下一个是什么

未来的计划包括对协议本身的改进和对样本的增强:

协议增强:

  • 代理发现:
    • 正式将授权方案和可选凭证直接纳入 AgentCard.
  • 代理协作:
    • 调查a QuerySkill() 动态检查不支持或意外技能的方法。
  • 任务生命周期和用户体验:
    • 支持动态用户体验协商 在...之内 任务(例如代理在对话中添加音频/视频)。
  • 客户方法和运输:
    • 探索将支持扩展到客户端启动的方法(超出任务管理)。
    • 流媒体可靠性和推送通知机制的改进。

示例和文档增强:

  • 简化“Hello World”示例。
  • 包括与不同框架集成的代理或展示特定A2A功能的其他示例。
  • 为常见的客户端/服务器库提供更全面的文档。
  • 从JSON模式生成人类可读的HTML文档。

关于

A2A协议是由谷歌有限责任公司运营的一个开源项目 Apache许可证 并向整个社区的贡献开放。