当前位置: 首页 > news >正文

简述谷歌A2A协议

A2A 协议是由谷歌发起的一项开放标准,旨在实现不同AI智能体之间的通信与互操作性。核心目标是让基于不同框架(如LangGraph、CrewAI、Google ADK、Genkit)或由不同厂商构建的智能体能够发现彼此能力、协商交互模式(文本、表单、文件,未来可能支持音视频)并协作完成任务。

协议开源地址:https://github.com/google/A2A
在这里插入图片描述

A2A协议规定了以下部分:

  • 代理发现:客户端通过获取AgentCard JSON(通常来自/.well-known/agent.json)发现代理及其能力。
  • 任务生命周期:任务按TaskState定义的状态流转(提交 -> 处理中 -> [需输入] -> 完成/取消/失败)。
  • 通信:使用包含Part(文本/文件/数据)的Message对象,任务输出表示为含PartArtifact
  • 流式处理:长任务可通过tasks/sendSubscribe使用SSE提供实时更新,更新以TaskStatusUpdateEventTaskArtifactUpdateEvent形式发送。
  • 推送通知:代理可通过tasks/pushNotification/set提供的webhook URL主动通知客户端任务更新,支持认证机制(如使用代理JWKS端点密钥签名的JWT Bearer令牌)。
  • 认证:在AgentCardPushNotificationConfig中定义,可涉及多种方案(如API密钥/OAuth/JWT),示例使用JWT实现推送通知。
  • 表单:可通过消息/工件中的DataPart请求和提交结构化数据(ADK示例中演示)。

代理发现谷歌预定义了4中方式

  • 直接公布在使用 DNS 解析已知或找到的域。比如:https:///.well-known/agent.json
  • 通过注册表方式进行发现,目前协议中还未定义注册方式。
  • 通过智能体商店,目前还不支持
  • 认证后发现。应用于含有敏感信息的智能体。

A2A协议对智能体描述主要分为两部分,AgentCard用户描述智能体能力,Task用户下发任务,作了字段信息如下:

  • AgentCard:描述代理的元数据,通常位于/.well-known/agent.json
    • name:(字符串)人类可读名称。
    • description:(字符串 | null)代理描述。
    • url:(字符串)代理A2A服务的基础URL端点。
    • provider:(AgentProvider | null)组织详情。
    • version:(字符串)代理/API版本。
    • documentationUrl:(字符串 | null)文档链接。
    • capabilities:(AgentCapabilities)支持的功能(流式/推送)。
    • authentication:(AgentAuthentication | null)所需的认证方案/凭证。
    • defaultInputModes:(字符串[])默认支持的输入类型(如"text"/“file”)。
    • defaultOutputModes:(字符串[])默认支持的输出类型。
    • skills:(AgentSkill[])具体能力列表。
  • *AgentCapabilities
    • streaming:(布尔值)支持tasks/sendSubscribe
    • pushNotifications:(布尔值)支持tasks/pushNotification/set|get
    • stateTransitionHistory:(布尔值)支持提供详细历史记录。
  • AgentSkill
    • id:(字符串)唯一技能ID。
    • name:(字符串)技能名称。
    • description:(字符串 | null)技能描述。
    • tags:(字符串[] | null)关键词。
    • examples:(字符串[] | null)使用示例。
    • inputModes:(字符串[] | null)覆盖此技能的默认输入。
    • outputModes:(字符串[] | null)覆盖此技能的默认输出。
  • Task:表示代理处理的工作单元:
    • id:(字符串)唯一任务标识符。
    • sessionId:(字符串 | null)关联任务的分组ID。
    • status:(TaskStatus)当前状态及相关消息。
    • artifacts:(Artifact[] | null)任务生成的输出。
    • history:(Message[] | null)(可选)该任务的交互消息历史(通过historyLength请求时提供)。
    • metadata:(对象 | null)额外任务元数据。
  • A2A协议中包含任务动作如下(server中需要提供具体实现):
    • tasks/send:(请求/响应),发送消息以启动或继续任务。
    • tasks/sendSubscribe:(请求/流),发送消息并通过SSE订阅实时更新。
    • tasks/get:(请求/响应),获取任务的当前状态。
    • tasks/cancel:(请求/响应),请求取消运行中的任务。
    • tasks/pushNotification/set:(请求/响应),设置或更新任务的推送通知配置。
    • tasks/pushNotification/get:(请求/响应),获取任务的当前推送通知配置。
    • tasks/resubscribe:(请求/流),连接中断后重新订阅任务更新(SSE)。

开源项目中包含了智能体 server和智能体 client的通用库,可复用的Python(samples/python/common)和JavaScript/TypeScript(samples/js/src)用于构建A2A客户端/服务器,处理JSON-RPC通信、任务管理及可能的认证。

可用的智能体服务有crewai、google_sdk、langgraph三类。
运行方式如下:(以crewai举例)

  1. 切换到 samples 对应目录:
    cd samples/python/agents/crewai
    
  2. 设置谷歌 API key 环境变量:
    echo "GOOGLE_API_KEY=your_api_key_here" > .env
    
  3. 设置 Python 环境:
    uv python pin 3.12
    uv venv
    source .venv/bin/activate
    
  4. 运行智能体:
    uv run . --host 0.0.0.0 --port 8080
    

可用的智能体客户端在samples/python/hosts目录,分为cli和multiagent。
运行方式如下:(以cli举例)

  1. 切换到对应目录:
    cd samples/python
    
  2. 运行智能体客户端
    uv run hosts/cli --agent [url-of-your-a2a-server]
    

相关文章:

  • 迷你世界脚本脚本常见问题
  • mongodb 4.0+多文档事务的实现原理
  • 表单数据校验方法
  • 有ts文件却无法ts出来解决办法
  • LeetCode 2999.统计强大整数的数目:上下界数位DP
  • 【渗透测试】Vulnhub靶机-Mordor: 1.1-详细通关教程
  • SpringAi 会话记忆功能
  • Linux扩展名相关知识
  • 信息安全管理与评估广东省2023省赛正式赛题
  • Python中数值计算、表格处理和可视化的应用
  • React基础知识一
  • 【项目管理】第13章 项目资源管理-- 知识点整理
  • 【github】github不能访问了,Access to this site has been restricted.
  • 反序列化漏洞介绍与挖掘指南
  • 拜特科技签约惠生工程,携手打造高效资金管理系统
  • FTXUI 笔记(五)——基本交互组件
  • redission锁释放失败处理
  • 2025阿里云AI 应用-AI Agent 开发新范式-MCP最佳实践-78页.pptx
  • 利用 Genspark 和 AI IDE 一键配置 Java 开发环境
  • java异常 与 泛型<T>
  • 观察|本轮印巴冲突或促使印度空军寻求更先进战机
  • 蚊媒传染病、手足口病……上海疾控发布近期防病提示
  • 西班牙政府排除因国家电网遭攻击导致大停电的可能
  • 从《让·桑特伊》到《追忆》,假故事的胜利
  • 阿尔巴尼亚执政党连续第四次赢得议会选举,反对党此前雇用特朗普竞选经理
  • 广东省原省长卢瑞华逝世,享年88岁