Agent 开发框架(一)有哪些框架A2A协议

张开发
2026/6/25 7:32:05 15 分钟阅读
Agent 开发框架(一)有哪些框架A2A协议
一、有哪些框架这些框架简单来说有两种分为高代码平台和低代码平台。低代码平台通过可视化界面和拖拽式操作降低开发门槛适合非技术用户或快速原型设计。代表性平台为 Coze这是一个企业商业产品提供直观的界面允许用户通过配置构建 Agent无需深入编码还有 Dify是半开源的 Agent 低代码平台也被很多企业所采用AutoGen Studio 则是微软推出集成到 AutoGen 框架提供低代码工具适合企业用户快速部署多代理工作流。这些低代码平台的特点是开发周期短易于上手适合快速迭代或非开发者使用。局限性是定制性较弱复杂需求可能受限依赖平台提供的功能。我们则主要聚焦于像 LangChainLangGraph、AutoGenAG2和 CrewAI 等高代码 Agent 开发平台来讲解 A2A 的实战。6 大 Agent 开发框架1、AG2 / AutoGen2、CrewAI3、Google ADK (Agent Development Kit)4、LangGraph它是由 LangChain 团队开发的一个开源框架专注于构建和优化基于语言模型LLM的多代理系统和图状工作流。于 2024 年初发布LangGraph 旨在为开发者提供一种灵活、可视化且强大的工具处理复杂任务的代理协作和状态管理特别适用于需要动态决策和上下文跟踪的场景。目前LangGraph 已发展成为 AI 开发社区中的重要工具尤其在多智能体应用中表现出色。LangGraph 的主要特点如下图状工作流通过有向图 (Directed Acyclic Graph, DAG) 设计工作流允许任务以节点和边的形式定义方便复杂逻辑的建模。状态管理内置状态跟踪机制确保代理间的上下文一致性支持多轮对话和任务持续性。多代理协作支持多个智能体按图定义的路径协作每个智能体可执行特定任务或调用工具。工具集成无缝对接 LangChain 生态的工具如 SerpAPI、Wikipedia以及自定义工具。动态路由根据 LLM 输出或条件动态调整工作流路径增强适应性。可视化支持提供图形界面如基于 NetworkX 的可视化便于调试和优化。Python 开发以 Python 为主要开发语言易于集成现有项目。LangGraph 深深嵌入 LangChain 生态与 LangChain 的代理、内存和检索模块高度兼容。它还支持其他框架如 CrewAI、AutoGen的部分功能增强了跨框架的互操作性。开发者可以通过 LangSmith 进行工作流的监控和评估。5、LlamaIndex AgentLlamaIndex Agent 是由 LlamaIndex 项目团队开发的一个开源 AI 代理框架专为增强基于大型语言模型LLM的数据索引和检索任务而设计。自 2023 年底首次亮相以来LlamaIndex Agent 已发展为一个强大的工具特别适用于需要高效处理结构化和非结构化数据的应用场景它在知识管理、问答系统和数据驱动的代理协作中表现出色。LlamaIndex Agent 深深嵌入了 LlamaIndex 生态与其数据连接器支持 PDF、CSV、SQL 等、索引器和查询引擎紧密协作。它还与 LangChain 和 CrewAI 等框架兼容增强了多代理系统的互操作性。开发者可以通过 LlamaIndex 的可视化工具如 Playground进行调试和优化。LlamaIndex Agent 以其强大的数据索引和检索能力成为处理知识密集型任务的理想选择。其模块化设计和多模态支持使其在教育、研究和企业应用中广受欢迎尤其适合需要深度数据交互的场景。LlamaIndex Agent 主要特点如下数据索引与检索利用 LlamaIndex 的核心优势构建高效的索引如向量存储、文档图支持快速检索和语义搜索。代理增强将 LLM 转化为智能代理具备上下文感知和工具使用能力如查询数据库、调用 API。工具集成支持与 LangChain、OpenAI、Hugging Face 等生态工具无缝对接扩展功能。内存与上下文管理提供短期和长期记忆机制确保代理在多轮交互中保持一致性。模块化设计允许开发者自定义代理行为、索引结构和查询策略。多模态支持除了文本还支持图像和表格数据适用于多样化数据源。优化性能通过缓存和批处理提升查询效率特别适合大规模数据集。6、Semantic KernelSemantic Kernel (SK) 是一种由 Microsoft 开发的轻量级开源软件开发套件 (SDK)旨在帮助开发者将最新的大型语言模型 (LLM) 轻松集成到 C#、Python 或 Java 代码中。它作为高效的中介层加速企业级解决方案的交付受到大型企业的青睐。这张图展示了 Semantic Kernel 的核心架构通过将用户代码与插件、钩子与过滤器集成结合最新的 AI 模型支持灵活扩展和模型更新。其核心特性如下灵活性与模块化支持多种 LLM如 OpenAI、Azure OpenAI、Hugging Face便于切换模型。代理框架构建模块化 AI 代理支持工具 / 插件、记忆和规划功能。多代理系统协调复杂工作流允许专业代理协作。插件生态通过原生代码、提示模板、OpenAPI 规范或模型上下文协议MCP扩展功能。多模态支持处理文本、视觉和音频输入。企业级可靠性1.0 版本在 C#、Python 和 Java 上提供支持确保非破坏性更新。安全与可观察性提供遥测支持、钩子与过滤器确保负责任的 AI 解决方案。比较这些 Agent 拥有一系列的通用性特征协议兼容性所有 Agent 都通过 A2AAgent-to-Agent协议暴露服务采用统一的 JSON-RPC 通信格式支持同步和异步调用模式。任务管理所有 Agent 具备统一的任务状态管理机制WORKING、INPUT_REQUIRED、COMPLETED支持任务流式更新以及错误处理和恢复机制。会话管理所有 Agent 基于 session_id 进行会话隔离支持有状态持久化和多用户并发。扩展性支持插件化工具集成、模块化框架适配以及标准化的配置管理。二、A2A协议1、A2A 和 MCP 是互补而非互斥关系Agent2Agent简称 A2A协议应运而生旨在为多 Agent 生态提供一套开放、标准、安全的互操作层使不同厂商、不同平台上的 Agent 能够动态发现、调用并协同完成复杂任务从而让 Agent 的生产力大幅上升并优化成本。MCP提供垂直集成将代理连接到工具和资源A2A提供水平通信将代理连接到其他代理。2、A2A 的 5 大核心设计原则3、A2A 协议的角色这种设计使得 A2A 成为一个真正的 Agent-to-Agent 协议而不仅仅是客户端 - 服务器架构的变种。1用户User最终用户人类或服务使用 Agent 系统完成任务。2客户端Client代表用户向远程 Agent 请求行动的实体。需要注意的是在 A2A 框架中客户端Client通常也是一个具有一定决策能力 Agent。它代表用户行事 可以是应用程序、服务或另一个 AI Agent负责选择合适的远程 Agent 来完成特定任务管理与远程 Agent 的通信、认证和任务状态。3远程 AgentRemote Agent远程 AgentRemote Agent则是执行实际任务的 Agent作为“黑盒”存在 提供特定领域的专业能力通过 AgentCard 声明自己的技能和接口保持内部工作机制的不透明性。说明在实际应用中我们可以看到多个 Agent 形成的网络其中一个 Agent 可以同时是某些交互中的 Client又在其他交互中作为 Remote Agent。例如一个负责旅行规划的 Agent 可能作为 Client 向地图 Agent、酒店预订 Agent 和航班查询 Agent 发送请求然后整合这些信息为用户提供完整的旅行方案。这种灵活的角色设计使得 A2A 协议能够支持复杂的 Agent 生态系统实现 Agent 之间的专业分工和协作。4、A2A 协议的核心对象A2A 协议设计了一套完整的对象体系包括 Agent Card、Task、Artifact 和 Message。它们用于实现不同 Agent 之间的高效协作这些核心对象相互配合共同构成了 A2A 的通信框架。1Agent CardAgent 名片每个支持 A2A 的远程 Agent 需要发布一个 JSON 格式的 “Agent Card”描述该 Agent 的能力和认证机制。Client 可以通过这些信息选择最适合的 Agent 来完成任务。{ name: Google Maps Agent, description: Plan routes, remember places, and generate directions, url: https://maps-agent.google.com, provider: { organization: Google, url: https://google.com }, version: 1.0.0, authentication: { schemes: OAuth2 }, defaultInputModes: [text/plain], defaultOutputModes: [text/plain, application/html], capabilities: { streaming: true, pushNotifications: false }, skills: [ { id: route-planner, name: Route planning, description: Helps plan routing between two locations, tags: [maps, routing, navigation], examples: [ plan my route from Sunnyvale to Mountain View, whats the commute time from Sunnyvale to San Francisco at 9AM ], outputModes: [application/html, video/mp4] } ] }2Task任务Task 是 Client 和 Remote Agent 之间协作的核心概念。一个 Task 代表一个需要完成的任务包含状态、历史记录和结果。Task 的具体状态列表如下submitted已提交working处理中input-required需要额外输入completed已完成canceled已取消failed失败unknown未知3Artifact成果Artifact 是 Remote Agent 生成的任务结果。Artifact 可以有多个部分parts可以是文本、图像等。4Message消息Message 用于 Client 和 Remote Agent 之间的通信可以包含指令、状态更新等内容。一个 Message 可以包含多个 parts用于传递不同类型的内容。5、A2A 协议工作流程类似于MCP1能力发现每个 Agent 通过一个 JSON 格式的 “Agent Card” 公布自己能执行的能力如检索文档、调度会议等。2任务管理Agent 间围绕一个 “task” 对象展开协作。该对象有生命周期、状态更新和最终产物artifact支持即时完成与长跑任务两种模式。3消息协作双方可互发消息携带上下文、用户指令或中间产物消息中包含若干 “parts”每个 part 都指明内容类型便于双方就 UI 呈现形式如图片、表单、视频进行协商。4状态同步通过 SSE 等机制Client Agent 与 Remote Agent 保持实时状态同步确保用户看到最新的进度和结果。demo1Client 发送任务{ jsonrpc: 2.0, id: 1, method: tasks/send, params: { id: de38c76d-d54c-436c-8b9f-4c2703648d64, message: { role: user, parts: [ { type: text, text: 请分析下面5位候选人是否符合岗位需求并推荐最佳人选。 } ] }, metadata: {} } }2Remote Agent 响应{ jsonrpc: 2.0, id: 1, result: { id: de38c76d-d54c-436c-8b9f-4c2703648d64, sessionId: c295ea44-7543-4f78-b524-7a38915ad6e4, status: { state: completed }, artifacts: [ { name: result, parts: [ { type: text, text: 第二位候选人最符合你的需求! } ] } ], metadata: {} } }

更多文章