AI News HubLIVE
站内改写3 分钟阅读

改造而非重建:用智能体覆盖层改造遗留企业服务

本文提出一种实用解决方案——智能体覆盖层(Agentic Overlays),这是一种薄包装层,可将传统REST服务转化为能够参与智能体间通信(A2A)的智能体,同时将REST API暴露为与模型上下文协议(MCP)兼容的工具。企业无需重写业务逻辑、复制代码或维护并行基础设施,即可为现有REST服务添加A2A能力,并减少基础设施中的智能体泛滥。文章提供了参考架构和示例代码。

来源AWS Machine Learning Blog作者: Renuka Kumar

本文表达的观点仅代表作者个人,而非Cisco的观点。

长期以来,企业架构一直以REST API和微服务为中心。这些系统稳定、经过充分测试,并深度嵌入生产环境。然而,它们并非为智能体间通信(A2A)而设计——A2A是自主智能体通过结构化消息进行协作、推理和协调的新兴标准。在缺乏通用智能体协议的情况下,这种架构尚能工作,但如今许多现有智能体已脱离A2A框架。当前的挑战不仅是为传统服务添加A2A能力,还需要将这些基于REST的智能体融入标准化的智能体世界。

在AWS与作者的技术合作中,我们提出了一种实用解决方案:智能体覆盖层。智能体覆盖层是薄包装层,可将传统REST服务转化为能够参与A2A交互的智能体,同时将REST API暴露为与模型上下文协议(MCP)兼容的工具。结合使用,企业无需重写业务逻辑、无需复制代码、无需运行并行基础设施,即可为现有REST服务添加A2A能力。通过将现有服务复用为智能体,减少了基础设施中的智能体泛滥。我们提供了参考架构和示例代码,展示如何构建智能体覆盖层。

背景:REST与A2A

REST API专为确定性的客户端-服务器集成设计。客户端调用定义明确的端点、传递参数并接收可预测的响应,通常是遵循HTTP语义的无状态请求-响应流。这使得REST在暴露业务能力(如创建、读取、更新、删除)方面表现出色,具有清晰的契约、强兼容性和操作简单性。

A2A专为自主智能体间的互操作性而设计。智能体通过元数据(如智能体卡片)相互发现,协商能力,并通过结构化消息(通常通过JSON-RPC)交换信息以协调多步骤任务。REST优化稳定的服务接口和直接执行,而A2A优化推理驱动的协调、面向任务的消息传递和智能体协作。结果是系统能够跨多个服务进行规划、委托和组合动作,而非调用孤立端点。

向智能体系统迁移的挑战

REST API和智能体系统基于正交范式,这使得企业难以将现有服务迁移到标准化的智能体通信中。然而,企业需要在不进行重大改造的情况下同时使用两者。尽管通过A2A进行的新式智能体通信引入了企业系统的协调模型,但由于需要在现有企业系统旁部署和运行智能体基础设施,采用速度受到阻碍。这种并行运行增加了操作复杂性和成本,成为有效采用AI的障碍。

在A2A标准化之前,企业通常将智能体部署为基于REST或专有服务,将其视为带有嵌入智能体逻辑的请求-响应端点。因此,许多现有智能体并非A2A原生,这产生了新的迁移挑战:使这些智能体能够使用标准化A2A协议进行互操作,同时无需重写其核心逻辑。

解决方案方法

本节讨论为遗留企业系统添加智能体能力的几种不同方法,并与使用智能体覆盖层的方法进行比较。

维护独立的REST和A2A栈:一种方法是开发并维护两条并行的路径来暴露相同的能力。这意味着两组端点、两套认证和验证实现、两个部署管道、双倍的可观测性工作,以及更高的不一致风险。长期来看,这增加了成本和操作复杂性。

分离栈但共享业务逻辑:重构现有端点意味着改变当前REST API代码结构,使其能被A2A等新接口复用。即使外部REST路径保持不变,重构也可能引入回归、行为漂移和大量测试负担。

核心思想:智能体覆盖层

智能体覆盖层是一种薄包装层,使基于REST的服务能够参与A2A通信。该覆盖层将智能体消息转换为REST负载,反之亦然;将REST端点暴露为智能体任务或工具。最重要的是,A2A不是新的API,而是现有API的新接口。底层REST服务保持不变。

在应用程序内添加智能体覆盖层时,有两组端点(/api/v2/...和/a2a/...),但只有一个部署管道。传统REST API端点可以转换为智能体端点,无需重写核心业务逻辑。同一主机和端口添加新路由,系统可能需要扩展以处理增加的流量。智能体技能本身可用于路由,无需独立的MCP服务器。这种方法通过复用现有服务作为智能体,减少了基础设施中的智能体泛滥,适用于需要基于REST和智能体能力的监督智能体。

智能体覆盖层示例实现

作为概念验证,本节展示如何将使用Flask的遗留REST计算器服务通过覆盖层移植到智能体系统。对于覆盖层,我们添加标准A2A组件(如智能体卡片、智能体消息端点、能力、技能和健康检查)。我们还引入了一种消息转换设计模式,将智能体消息转换为REST API消息,然后从智能体发出REST调用。A2A消息转换工作流如下:

  1. 接收JSON-RPC 2.0请求。
  2. 将A2A任务映射到REST端点。
  3. 转发认证头。
  4. 内部调用REST端点。
  5. 将REST响应转换为JSON-RPC格式。

步骤0:请求-响应格式:比较REST和A2A协议的请求-响应格式。例如,REST计算器请求为{"operation": "add", "operands": [5, 3]},A2A请求则封装在JSON-RPC消息中。响应方面,REST返回{"result": 8},A2A返回结构化的JSON-RPC响应。

步骤1:设置智能体:创建计算器智能体示例,包含众所周知的智能体卡片和加载的智能体技能。build_agent_card函数动态构建智能体卡片。

步骤2:实现内部REST调用器:通过HTTP请求调用内部REST端点,确保中间件、装饰器和头部得到正确执行。该实现展示了如何通过薄层将遗留REST服务转换为A2A兼容的智能体,同时保持现有业务逻辑不变。