开始使用 A2A¶
A2A 协议是一个开放标准,可实现 AI 智能体之间的无缝通信和协作。它为使用不同框架和由不同供应商构建的智能体提供了一种通用语言,促进互操作性并打破信息孤岛。智能体是在其环境中独立行动的自主问题解决者。A2A 允许来自不同开发者、基于不同框架构建并由不同组织拥有的智能体联合并协同工作。
为什么使用 A2A 协议¶
A2A 解决了 AI 智能体协作中的关键挑战。它为智能体交互提供了一种标准化方法。本节解释了 A2A 解决的问题及其提供的优势。
A2A 解决的问题¶
考虑用户请求 AI 助手规划国际旅行的情况。此任务涉及编排多个专业智能体,例如:
- 航班预订智能体
- 酒店预订智能体
- 本地旅游推荐智能体
- 货币转换智能体
没有 A2A,集成这些不同的智能体会带来几个挑战:
- 智能体暴露:开发者通常将智能体包装为工具以向其他智能体暴露,类似于在多智能体控制平台(模型上下文协议)中暴露工具的方式。然而,这种方法效率低下,因为智能体被设计为直接协商。将智能体包装为工具会限制其能力。A2A 允许智能体按原样暴露,无需这种包装。
- 自定义集成:每次交互都需要自定义的点对点解决方案,造成显著的工程开销。
- 创新缓慢:为每个新集成进行定制开发会减缓创新。
- 可扩展性问题:随着智能体和交互数量的增长,系统变得难以扩展和维护。
- 互操作性:这种方法限制了互操作性,阻止了复杂 AI 生态系统的自然形成。
- 安全漏洞:临时通信通常缺乏一致的安全措施。
A2A 协议通过建立 AI 智能体可靠安全交互的互操作性来解决这些挑战。
A2A 协议如何工作¶
A2A 定义了独立 AI 智能体系统如何交互。它为智能体通信和协作提供了标准化方式。
- 它利用 HTTP(S) 上的 JSON-RPC 2.0 来构建和传输消息。
- 它允许智能体通过 Agent Card 宣传其能力并被其他智能体发现。
- 它概述了启动、进展和完成任务的工作流程。
- 它促进文本、文件和结构化数据的交换。
- 它提供了安全通信和管理长时间运行任务的指南。
支持的语言和代码示例¶
A2A 项目目前托管四种语言(Python、JS、Java、.NET)的 SDK,贡献者正在添加更多语言,包括 Go。
下表列出了支持的语言及其稳定性。
| 语言 | 支持 |
|---|---|
| Python | 稳定 |
| Java | 稳定 |
| JavaScript | 稳定 |
| C#/.NET | 稳定 |
| Go | 进行中 |
A2A 项目在 a2a-samples 仓库 中提供了多种支持语言的大量示例
Python¶
- 跟随 A2A Python 入门教程
- 有关更多 Python 示例,请参见以下内容:
Java¶
- 有关使用 Java 的多语言翻译智能体,请参见 Java 示例。
JavaScript¶
- 有关使用 JavaScript 的电影研究智能体,请参见 JavaScript 示例。
C#/.NET¶
- 有关所有 .NET 示例,请参见 .NET 示例。