当前位置: 首页 > news >正文

基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南

作者:如漫、席翁

AI Agent 的构建模式正在从“单个智能体做所有事”走向“多个专精智能体协作”,以更好地拆解并解决复杂任务、更精准的选取和使用工具。A2A(Agent-to-Agent)协议作为统一的通信层,旨在为跨进程、跨语言的智能体互操作提供标准化语义与传输通道,从而解决智能体数量增加引起的运维、管理和部署成本过高等问题。

为了让开发者能够高效、便捷的构建分布式多智能体系统,同时更专注于 Agent 本身功能的构建和调试。Spring AI Alibaba 与 Nacos 在今年的云栖大会上协同发布了 1.0.0.4 与 3.1.0 版本。

其中,Nacos 3.1.0 引入 A2A 了注册中心功能,提供了轻量化的 Agent 服务注册与发现能力;Spring AI Alibaba 通过集成 Nacos,提供了开箱即用的 Agent 注册、Agent 发现与负载均衡能力,让开发者能够快速构建使用 A2A 标准协议通信的分布式多智能体系统。

本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。

为什么需要分布式多智能体?

从单智能体到多智能体

随着开发者期望智能体解决的问题复杂性和专业性提高,伴随着工具数量的增加、多轮会话导致的消息上下文膨胀,我们发现单智能体很难作为一个“全面的超级专家”,来解决多种复合类型的问题。

为了有效解决这个问题,工程上提出了多智能体模式,在这种模式下,系统由多个具备一定自治能力的 Agent 组成,每个 Agent 有自己的角色、能力或工具使用范围。它们之间可以通过消息或上下文进行交互,协同完成复杂目标。多智能体模式具有较强的灵活性和适应性,在研究型问答、复杂数据分析或跨领域问题求解等复杂任务场景下能够取得更好的效果,已经得到越来越多开发者的青睐。

image

多智能体的分布式演进趋势

在过去的一段时间里,AI 应用框架支持的多智能体构建模式,主要以单进程、多线程模式为主。从代码形态上来看,多个 Agent 被实现在同一个仓库;从部署形态上来看,多个智能体被整合到一个服务中,每个智能体以线程的方式存在于服务内并互相通信。这种实现方式在原型验证阶段,能够快速实现并调试功能,但在企业级落地和持续生产迭代过程中,逐渐暴露出以下问题:

  1. 组织协同困难。 企业内部的组织主要以职能或领域划分,在一个多智能体系统中,交易智能体和搜索智能体作为领域专精智能体,更适合由支付团队和搜索团队独立维护,但在上述模式下,两个团队需要共同维护同一份代码、同一个服务,这些无疑会给跨团队协同带来极大的困难,更不符合企业组织拆分的初衷和原则。
  2. 可用性难保证。 由于所有智能体共享同一进程资源,一个智能体出现问题引起的服务崩溃,可能会导致其他智能体均不可用,无法有效隔离故障;同时,也无法按智能体维度进行水平扩缩容,难以实现细粒度的资源配额和限流。
  3. 存在安全风险。 内存与上下文共享导致权限边界模糊,难以对不同智能体实施最小权限与数据隔离策略,存在一定的安全风险。

因此,将多智能体系统拆解成分布式架构,一方面适配于组织架构、便于各自领域的智能体独立开发和迭代,一方面便于提升系统的整体可用性和安全性,正在逐渐成为复杂多智能体系统企业级落地的必要选择。

基于 A2A 协议的分布式多智能体构建方案

Agent2Agent (A2A) [ 1] 协议是由 Google 开发并捐赠给 Linux 基金会的一项开放标准,旨在实现 AI Agent 之间的无缝通信与协作,从而解决智能体数量增加引起的运维、管理和部署成本过高等问题,实现像构建微服务架构一样构建 Multi Agent 系统。

为了管理这些 Agent,Nacos 从 3.1.0 版本开始,提供了 Agent 注册中心(A2A Registry),实现 Agent 的注册、发现、命名空间隔离、版本管理等功能。Spring AI Alibaba 作为一款高代码 AI 应用开发框架,形态上天然适合构建分布式多智能体系统,从 1.0.0.4 版本开始,支持通过 Agentic API 便捷定义和构建 Agent,同时集成 Nacos 进行分布式 Agent 之间的 A2A 协议通信。

基于 Spring AI Alibaba + Nacos 的实现方案示意如下图所示。Server Agent 在启动时,会将 Agent 信息与端点信息注册到 Nacos 中;Client Agent 监听并获取 Agent 信息,同时发现对应 Agent 的端点列表;在需要访问 Server Agent 时,会通过负载均衡选取 Agent 端点,并采用 A2A 协议进行通信。

image

快速开发指南

Demo 介绍

为了方便开发者参考和使用,我们基于 Spring AI Alibaba + Nacos 构建并开源了“云边奶茶铺智能助手” 分布式多智能体 Demo,让消费者一站式咨询、点单与反馈,持续根据用户行为和喜好推荐并下单产品, 从而实现“越来越懂我”,“越用越好用”的用户体验。

构建 Demo 所使用到的 AI 技术包括 A2A、MCP、RAG、Memory、Prompt 管理、AI 观测等,支持集成 Nacos、Higress AI 网关、Spring AI Alibaba Admin、百炼知识库 、Mem0 等。本文将主要围绕 A2A 能力展开介绍。

Demo 工程地址请参见:spring-ai-alibaba-multi-agent-demo [ 2]

完整的 Demo 效果演示和介绍,可以观看视频了解↓

分布式多智能体 Demo 演示——基于 Spring AI Alibaba Agentic API 构建:https://www.bilibili.com/video/BV12Kniz2EE6/

Demo 的整体 Agent 依赖关系如下图所示。用户的会话首先会传递给 Supervisor Agent,Supervisor Agent 根据对话属性,委托 Consult Agent、Business Agent 和 Feedback Agent 子智能体处理不同类型的问题,这些子智能体通过多轮模型对话交互以及使用各自的工具完成任务后,将结果返回给 Supervisor Agent,并最终返回给用户。

四个 Agent 分别在不同的进程中独立部署,支持水平扩展。Supervisor Agent 与 Sub Agents 集成 Nacos 进行 Agent 注册与发现,并通过 A2A 协议进行分布式通信。

接下来,我们将以 Feedback Agent 与 Supervisor Agent 为例,分别介绍作为 AI 应用开发者,如何开发实现 A2A Server Agent 与 A2A Client Agent。

image

构建 A2A Server Agent

以 Feedback Agent 为例,介绍使用 Spring AI Alibaba 构建 A2A Server Agent 的关键步骤。

  • 引入 Pom 依赖
<!-- Spring AI Alibaba版本1.0.0.4及以上 -->
<properties>
    <spring.ai.alibaba.version>1.0.0.4</spring.ai.alibaba.version>
</properties>
<dependencies>
    <!-- 引入A2A Server starter -->
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-a2a-server</artifactId>
        <version>${spring-ai-alibaba.version}</version>
    </dependency>
    <!-- 引入A2A Nacos 注册中心 -->
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-a2a-registry</artifactId>
        <version>${spring-ai-alibaba.version}</version>
    </dependency>
    <!-- 引入A2A 百炼大模型客户端,可以用其他的spring ai大模型客户端代替,如openai -->
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
        <version>${spring-ai-alibaba.version}</version>
    </dependency>
</dependencies>
  • 构建 Agent

通过 Spring AI Alibaba 中定义的 Agentic API 快速定义及构建 Agent 运行逻辑,如下所示,使用几十行代码即可创建用于处理用户反馈的 ReAct Agent。

@Configuration
public class FeedbackAgent {
    private static final Logger logger = LoggerFactory.getLogger(FeedbackAgent.class);
@Autowired
private FeedbackAgentPromptConfig promptConfig;
    @Bean
    public ReactAgent feedbackSubAgentBean(@Qualifier("dashscopeChatModel") ChatModel chatModel,  @Autowired(required = false)  @Qualifier("loadbalancedMcpSyncToolCallbacks")  ToolCallbackProvider toolsProvider) throws Exception {
KeyStrategyFactory stateFactory = () -> {HashMap<String, KeyStrategy> keyStrategyHashMap = new HashMap<>();keyStrategyHashMap.put("messages", new ReplaceStrategy());
return keyStrategyHashMap;};
return ReactAgent.builder().name("feedback_agent").model(chatModel).state(stateFactory).description("用户反馈相关业务处理,支持从反馈中提取和记录用户偏好").instruction(promptConfig.getFeedbackAgentInstruction()).inputKey("messages").outputKey("messages").tools(Arrays.asList(toolsProvider.getToolCallbacks())).build();}
}
  • 配置 Agent 注册参数
spring:
  ai:
    alibaba:
      a2a:
        # 配置Nacos的地址和用户名密码
        nacos:
          server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
          username: ${NACOS_USERNAME:nacos}
          password: ${NACOS_PASSWORD:nacos}
        # 配置A2A server的额外信息,如版本号,agentCard中的Skills等
        server:
          version: 1.0.0
          card:
            # 配置Agent(AgentCard)的URL,若当前版本无可用端点,会使用此 URL
            url: http://localhost:9999/a2a
            name: feedback_agent
            description: 云边奶茶铺反馈处理助手
            provider:
              organization: 云边奶茶铺
              url: xxxxx

启动 A2A Server 后,即可在 Nacos 控制台上看到注册的 Agent 信息。如下图所示。

image

image

Feedback Agent 的完整的代码实现请详见:feedback-sub-agent [ 3]

构建 A2A Client Agent

以 Supervisor Agent 为例,介绍使用 Spring AI Alibaba 构建 Client Agent 的关键步骤。

  • 引入 Pom 依赖
<properties>
  <spring.ai.alibaba.version>1.0.0.4</spring.ai.alibaba.version>
</properties>
<dependencies>
  <!-- 引入A2A Client starter -->
  <dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-a2a-client</artifactId>
    <version>${spring-ai-alibaba.version}</version>
  </dependency>
  <!-- 引入A2A Nacos 注册中心 -->
  <dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-a2a-registry</artifactId>
    <version>${spring-ai-alibaba.version}</version>
  </dependency>
  <!-- 引入A2A 百炼大模型客户端,可以用其他的spring ai大模型客户端代替,如openai -->
  <dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
    <version>${spring-ai-alibaba.version}</version>
  </dependency>
</dependencies>
  • 构建 Agent

通过 Spring AI Alibaba 中定义的 Agentic API 快速构建 A2aRemoteAgent 作为 Supervisor Agent 的 Sub Agent,其中 Agent 的 Card 和端点信息是从 Nacos 中发现并监听;接下来构建 LlmRoutingAgent 作为 Supervisor Agent。

@Configuration
public class SupervisorAgent {
    @Autowired
    private SupervisorAgentPromptConfig promptConfig;
    @Bean
    public LlmRoutingAgent supervisorAgentBean(ChatModel chatModel,
                                               @Autowired AgentCardProvider agentCardProvider) throws Exception {
        KeyStrategyFactory stateFactory = () -> {
            HashMap<String, KeyStrategy> keyStrategyHashMap = new HashMap<>();
            keyStrategyHashMap.put("input", new ReplaceStrategy());
            keyStrategyHashMap.put("chat_id", new ReplaceStrategy());
            keyStrategyHashMap.put("user_id", new ReplaceStrategy());
            keyStrategyHashMap.put("messages", new ReplaceStrategy());
            return keyStrategyHashMap;
        };
        // 构建A2aRemoteAgent, AgentCard与端点信息实际是从Nacos发现并监听
        A2aRemoteAgent consultAgent = A2aRemoteAgent.builder()
                .name("consult_agent")
                .agentCardProvider(agentCardProvider)
                .build();
        A2aRemoteAgent feedbackAgent = A2aRemoteAgent.builder()
                .name("feedback_agent")
                .agentCardProvider(agentCardProvider)
                .build();
        A2aRemoteAgent orderAgent = A2aRemoteAgent.builder()
                .name("order_agent")
                .agentCardProvider(agentCardProvider)
                .build();
        // 构建Supervisor Agent, 将上述创建的A2aRemoteAgent作为Sub Agent注册
        return LlmRoutingAgent.builder()
                .name("supervisor_agent")
                .model(chatModel)
                .state(stateFactory)
                .description(promptConfig.getSupervisorAgentInstruction())
                .inputKey("input")
                .outputKey("messages")
                .subAgents(List.of(consultAgent, feedbackAgent, orderAgent))
                .build();
    }
}
  • 配置 Agent 发现参数
spring:
  ai:
    alibaba:
      a2a:
        nacos:
          server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
          username: ${NACOS_USERNAME:nacos}
          password: ${NACOS_PASSWORD:nacos}
          discovery:
            enabled: true  # 开启从Nacos中自动发现Agent

完成 Agent 定义和构建后,可以将 Supervisor Agent 暴露到 API 中以支持对话调用,Supervisor Agent 将会根据会话内容,将任务按需分派给通过 Nacos 发现的子智能体,并通过 A2A 协议通信。

Supervisor Agent 完整的代码实现请详见:supervisor-agent [ 4]

运行效果演示

将上文所述 Demo 的全部组件完整运行起来之后,即可在浏览器中打开页面并和云边奶茶铺智能助手进行对话。

image

让智能助手推荐奶茶产品时,Supervisor Agent 会基于 Nacos 的监听和发现,通过 A2A 协议调用 Consult Agent 服务的一个实例进行处理,Consult Agent 在模型驱动下,通过使用百炼知识库检索、数据库搜索、记忆检索等工具,获取用户画像和产品信息,并根据用户喜好生成推荐内容并返回结果。

image

同样,让智能助手下订单或者查询订单时,Supervisor Agent 会基于 Nacos 的监听和发现,通过 A2A 协议调用 Order Agent 服务的一个实例进行处理,Order Agent 在模型驱动下,通过访问 Order Mcp Server 的一个实例调用创建订单、查询订单等工具,完成订单创建或查询,并返回结果。

image

更完整的 Demo 效果演示和介绍,可以进一步观看:

分布式多智能体 Demo 演示——基于 Spring AI Alibaba Agentic API 构建(https://www.bilibili.com/video/BV12Kniz2EE6/)详细了解。

讲在最后

无论从业务角度,还是技术角度来看,智能体的分布式架构都是必然选择。本文介绍了基于 Spring AI Alibaba + Nacos 的实现方案,帮助开发者快速构建分布式多智能体系统,实现智能体弹性伸缩与跨团队解耦。同时以“云边奶茶铺 Demo”为例介绍了具体开发方式。

目前,阿里云 MSE 商业版 Nacos 也已经支持了 A2A Registry 的能力,同时还具备 MCP Registry、Prompt 动态配置管理等能力,和开源 Nacos 相比,具有更高的可用性,更适用于企业级 AI 应用的构建。

此外,AgentScope Java 将于近期发布 1.0 版本,Spring AI Alibaba 后续会把内核升级为 AgentScope ,继续为 Java 开发者打造一个自动装配、开箱即用的 Agent 开发框架。

欢迎您一起参与探索并构建 Multi Agent 系统,让分布式多智能体加速走向更高规模的生产。

相关链接:

[1] Agent2Agent (A2A)

https://a2a-protocol.org/latest/

[2] spring-ai-alibaba-multi-agent-demo

https://github.com/spring-ai-alibaba/spring-ai-alibaba-multi-agent-demo

[3] feedback-sub-agent

https://github.com/spring-ai-alibaba/spring-ai-alibaba-multi-agent-demo/tree/main/feedback-sub-agent

[4] supervisor-agent

https://github.com/spring-ai-alibaba/spring-ai-alibaba-multi-agent-demo/tree/main/supervisor-ag

点击此处,关注并了解 agentscope-java。

http://www.hskmm.com/?act=detail&tid=37500

相关文章:

  • 【IEEE出版】第六届计算机通信与网络安全国际学术会议(CCNS 2025)
  • 2025 年最新推荐编织袋源头厂家排行榜:聚焦全自动智能节能设备,助力企业选对优质厂商工业 / 数控 / 重型 / 多功能 / 自动编织袋设备推荐
  • 2025年专业的上海Micro-LED显示屏推荐TOP生产厂家
  • 2025年质量好的工业不锈钢链轮最新TOP厂家推荐
  • 2025年正规的广州智能洗碗机,广州洗碗机设备厂家最新推荐榜
  • 改进的(μ+λ)约束差分进化算法设计与实现
  • 2025年10月旋转接头厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 2025连接器厂家推荐皓富电子,专注USB/电池/TYPE-C/防水接口专业制造
  • 2025耳机/DC/防水耳机插座厂家推荐皓富电子,专业品质保障
  • 2025年知名的四川岩棉板,A级防火岩棉板推荐TOP品牌厂家
  • 2025/10/23
  • 2025年评价高的磁力齿轮泵,小型齿轮泵厂家推荐及选择建议
  • SIAKAD STEKOM登录页面存储型XSS漏洞分析
  • 2025 年最新散热片厂家推荐排行榜:权威评选揭晓高性能电子、水冷、铝型材等散热片优质企业水冷散热片/铝型材散热片/热管散热片/插齿散热片公司推荐
  • 07.Python法拍网数据
  • 深夜办公室的叹息,被微擎 IP 市场拉回正轨
  • Ubuntu布署Blazor Server
  • Day22-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\File-FileTest1~4
  • 权威调研榜单:徐州CCC产品认证公共服务平台TOP3榜单好评深度解析
  • 权威调研榜单:搅拌灌装机厂家TOP3榜单好评深度解析
  • 本地部署低代码构建平台 Langflow 并实现外部访问
  • 2025 年最新弹力丝机生产厂家推荐榜单:全面盘点国内优质品牌,为纺织企业提供精准选型参考荣腾弹力丝机/普来得弹力丝机/高速弹力丝机公司推荐
  • 数据库锁-及事务隔离级别对应
  • 权威调研榜单:落地立式护眼灯厂家TOP3榜单好评深度解析
  • 为什么要学习PostgreSQL?新手怎么从入门到精通
  • 2025 年电动门实力厂家最新推荐排行榜:聚焦智能创新与多场景适配,精选优质品牌助力选购电动悬浮门/电动大门/电动平移门/小区电动门公司推荐
  • 进制基础及位运算
  • 2025年10月国内平开门厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 完整教程:【uniapp】uniapp+uview-ui+mixins实现搜索+上拉加载+加载动画功能:
  • 攻壳机动队 动画电影12部合集