简述谷歌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]
    
基于html+python+Apriori 算法、SVD(奇异值分解)的电影推荐算法+源码+项目文档+算法解析+数据集,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 电影推荐算法:Apriori 算法、SVD(奇异值分解)推荐算法 电影、用户可视化 电影、用户管理 数据统计 SVD 推荐 根据电影打分进行推荐 使用 svd 模型计算用户对未评分的电影打分,返回前 n 个打分最高的电影作为推荐结果 n = 30 for now 使用相似电影进行推荐 根据用户最喜欢的前 K 部电影,分别计算这 K 部电影的相似电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now 根据相似用户进行推荐 获取相似用户 K 个,分别取这 K 个用户的最喜爱电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now Redis 使用 Redis 做页面访问次数统计 缓存相似电影 在使用相似电影推荐的方式时,每次请求大概需要 6.6s(需要遍历计算与所有电影的相似度)。 将相似电影存储至 redis 中(仅存储 movie_id,拿到 movie_id 后还是从 mysql 中获取电影详细信息), 时间缩短至:93ms。 十部电影,每部存 top 5 similar movie 登录了 1-6 user并使用了推荐系统,redis 中新增了 50 部电影的 similar movie,也就是说,系统只为 6 为用户计算了共 60 部电影的相似度,其中就有10 部重复电影。 热点电影重复度还是比较高的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值