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

一、有哪些框架

这些框架简单来说,有两种,分为高代码平台和低代码平台。低代码平台通过可视化界面和拖拽式操作降低开发门槛,适合非技术用户或快速原型设计。代表性平台为 Coze,这是一个企业商业产品,提供直观的界面,允许用户通过配置构建 Agent,无需深入编码;还有 Dify,是半开源的 Agent 低代码平台,也被很多企业所采用;AutoGen Studio 则是微软推出,集成到 AutoGen 框架,提供低代码工具,适合企业用户快速部署多代理工作流。这些低代码平台的特点是开发周期短,易于上手,适合快速迭代或非开发者使用。局限性是定制性较弱,复杂需求可能受限,依赖平台提供的功能。

我们则主要聚焦于像 LangChain(LangGraph)、AutoGen(AG2)和 CrewAI 等高代码 Agent 开发平台来讲解 A2A 的实战。

6 大 Agent 开发框架:

1、AG2 / AutoGen

2、CrewAI

3、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 Agent

LlamaIndex 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 Kernel

Semantic 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 都通过 A2A(Agent-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)远程 Agent(Remote Agent)

远程 Agent(Remote 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 的通信框架。

(1)Agent Card(Agent 名片)

每个支持 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",
        "what's the commute time from Sunnyvale to San Francisco at 9AM"
      ],
      "outputModes": ["application/html", "video/mp4"]
    }
  ]
}

(2)Task(任务)

Task 是 Client 和 Remote Agent 之间协作的核心概念。一个 Task 代表一个需要完成的任务,包含状态、历史记录和结果。Task 的具体状态列表如下:

  • submitted(已提交)
  • working(处理中)
  • input-required(需要额外输入)
  • completed(已完成)
  • canceled(已取消)
  • failed(失败)
  • unknown(未知)

(3)Artifact(成果)

Artifact 是 Remote Agent 生成的任务结果。Artifact 可以有多个部分(parts),可以是文本、图像等。

(4)Message(消息)

Message 用于 Client 和 Remote Agent 之间的通信,可以包含指令、状态更新等内容。一个 Message 可以包含多个 parts,用于传递不同类型的内容。

5、A2A 协议工作流程

类似于MCP,

(1)能力发现:

每个 Agent 通过一个 JSON 格式的 "Agent Card" 公布自己能执行的能力(如检索文档、调度会议等)。

(2)任务管理

Agent 间围绕一个 "task" 对象展开协作。该对象有生命周期、状态更新和最终产物(artifact),支持即时完成与长跑任务两种模式。

(3)消息协作

双方可互发消息,携带上下文、用户指令或中间产物;消息中包含若干 "parts",每个 part 都指明内容类型,便于双方就 UI 呈现形式(如图片、表单、视频)进行协商。

(4)状态同步

通过 SSE 等机制,Client Agent 与 Remote Agent 保持实时状态同步,确保用户看到最新的进度和结果。

demo

(1)Client 发送任务
复制代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tasks/send",
  "params": {
    "id": "de38c76d-d54c-436c-8b9f-4c2703648d64",
    "message": {
      "role": "user",
      "parts": [
        {
          "type": "text",
          "text": "请分析下面5位候选人是否符合岗位需求,并推荐最佳人选。"
        }
      ]
    },
    "metadata": {}
  }
}
(2)Remote 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": {}
  }
}
相关推荐
龙亘川2 小时前
医院通用人工智能平台设计与落地实践(2026)—— 面向智慧医院的 AI 操作系统架构解析
人工智能·医院通用人工智能平台技术白皮书
SelectDB技术团队2 小时前
SelectDB Enterprise 4.0.5:强化安全与治理,构建企业级实时分析与 AI 数据底座
数据库·人工智能·apache doris
輕華2 小时前
LSTM实战:遗忘门、输入门与输出门解决长期依赖
人工智能·rnn·lstm
Li emily2 小时前
解决了美股api历史数据调用不稳定问题
人工智能·api·fastapi
weixin_513449962 小时前
PCA、SVD 、 ICP 、kd-tree算法的简单整理总结
c++·人工智能·学习·算法·机器人
code_pgf2 小时前
Qwen2.5-VL 算法解析
人工智能·深度学习·算法·transformer
xiaotao1312 小时前
01-编程基础与数学基石:概率与统计
人工智能·python·numpy·pandas
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【23】短期记忆
java·人工智能·spring
竹之却3 小时前
【Agent-阿程】OpenClaw v2026.4.15 版本更新全解析
人工智能·ai·openclaw