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": {}
  }
}
相关推荐
sell-cloud2 小时前
Prompt Engineering要凉了?Fable 5.5能“猜“意图,但银行正在封杀AI Agent——企业AI的真正护城河是什么
人工智能·prompt
Navicat中国3 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI4 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区4 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris6 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy6 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V6 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI6 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技6 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据6 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化