
首屏导读 · 本教程配套付费专栏 大模型工程师修炼手记19.9 元AI 编程 / Agent 实战 本文同主题系统课程· AI时代程序员的自我提升49.9 元AI 时代成长方法论。单篇不过瘾订阅解锁全量源码、实战与答疑文末附资料包领取方式 ↓这是一篇为你定制的 CSDN 风格技术博客主题围绕 Spring AI Alibaba 构建 A2A 多智能体协作系统从概念到代码实战手把手带你落地。Spring AI Alibaba 实战手把手教你构建 A2A 多智能体协作系统前言随着大模型应用从“单打独斗”走向“团队协作”多智能体协作已成为企业级 AI 落地的核心方向。Spring AI Alibaba 作为阿里云通义大模型与 Spring 生态的桥梁不仅提供了简洁的 API还天然支持Agent 工具调用这为实现 A2AAgent-to-Agent协作系统铺平了道路。本文将用一个完整实战项目带你从零搭建一个基于 Spring AI Alibaba 的A2A 多智能体系统实现智能客服主管 Agent 自动将任务分发给订单查询 Agent 和知识库 Agent并汇总结果返回用户。读完你将掌握如何用 Spring AI Alibaba 快速接入通义千问如何用Tool注解定义 Agent 工具如何设计“主管-子 Agent”的 A2A 协作模式如何让多个 Agent 通过 Function Calling 自动协作1. 什么是 A2A 多智能体协作A2A即 Agent-to-Agent指多个独立的 AI Agent 通过消息或工具调用进行交互共同完成一个复杂任务。每个 Agent 通常专注于特定领域订单 Agent擅长查询订单状态、物流信息知识 Agent擅长 FAQ、文档检索主管 Agent理解用户意图调度子 Agent合并结果在 Spring AI Alibaba 中我们可以利用Function Calling机制天然实现 A2A主管 Agent 将子 Agent 封装为“工具”模型根据用户问题自动决定调用哪个工具而工具内部又可以再次调用 LLM形成“Agent 调用 Agent”的协作链。2. 环境准备JDK 17Maven 3.8IntelliJ IDEA / VS Code阿里云 DashScope API Key免费申请本文使用 Spring AI Alibaba 1.0.0-M5 版本Spring Boot 3.2.5。3. 项目初始化创建 Spring Boot 项目在pom.xml中添加 Spring AI Alibaba Starter 和 Milestone 仓库parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.5/version/parentpropertiesjava.version17/java.versionspring-ai.version1.0.0-M5/spring-ai.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Spring AI Alibaba Starter --dependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter/artifactIdversion${spring-ai.version}/version/dependency/dependenciesrepositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/url/repository/repositories4. 配置 application.ymlspring:ai:dashscope:api-key:${DASHSCOPE_API_KEY}# 你的 DashScope API Keychat:options:model:qwen-plus# 使用 qwen-plus 模型5. 定义子 Agent订单查询 Agent 与知识库 Agent我们将每个子 Agent 设计成一个 Spring Bean使用Tool注解暴露工具方法。这些方法会被主管 Agent 自动识别和调用。5.1 订单查询 Agentimportorg.springframework.ai.tool.annotation.Tool;importorg.springframework.ai.tool.annotation.ToolParam;importorg.springframework.stereotype.Component;ComponentpublicclassOrderAgent{Tool(description查询用户的订单信息根据用户ID返回最新订单详情)publicStringqueryOrder(ToolParam(description用户唯一标识)StringuserId){// 模拟数据库查询StringmockOrderString.format(用户%s的订单订单号20240623001商品《Spring AI实战》金额99.0元状态运输中,userId);returnmockOrder;}}5.2 知识库检索 Agentimportorg.springframework.ai.tool.annotation.Tool;importorg.springframework.ai.tool.annotation.ToolParam;importorg.springframework.stereotype.Component;ComponentpublicclassKnowledgeAgent{Tool(description根据关键词检索知识库中的常见问题解答)publicStringsearchFAQ(ToolParam(description检索关键词)Stringkeyword){// 模拟知识库检索StringfaqString.format(关于“%s”的FAQ1. 如何退货请在7天内联系客服2. 物流查询请提供订单号。,keyword);returnfaq;}}注解Tool来自 Spring AI描述工具功能ToolParam用于描述参数帮助模型更好地理解何时调用。6. 构建主管 Agent协调者主管 Agent 是整个系统的入口它基于通义千问模型能够自动将用户请求路由到不同的子 Agent 工具。我们创建一个配置类来组装主管 Agent 的ChatClient并注册所有子 Agent 工具。importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;ConfigurationpublicclassSupervisorAgentConfig{BeanpublicChatClientsupervisorChatClient(ChatClient.Builderbuilder,OrderAgentorderAgent,KnowledgeAgentknowledgeAgent){// 系统提示词指导主管 Agent 如何分工StringsystemPrompt 你是一个智能客服主管。根据用户问题选择合适的工具处理 - 如果用户询问订单、物流、购买记录使用 queryOrder 工具。 - 如果用户询问退货、退款、常见问题使用 searchFAQ 工具。 - 如果无法判断请礼貌地让用户补充信息。 最后整合工具返回的信息用自然语言回复用户。 ;returnbuilder.defaultSystem(systemPrompt).defaultTools(orderAgent,knowledgeAgent)// 注册工具.build();}}此时主管 Agent 就拥有了两个“手脚”可以自主决策调用哪个子 Agent。7. 实现 A2A 协作流程现在我们来编写一个 Controller接收用户消息并交给主管 Agent 处理。整个 A2A 协作流程如下用户发送消息 → 主管 Agent 接收主管 Agent 根据 system prompt 判断意图决定调用queryOrder或searchFAQSpring AI 框架自动执行对应的工具方法即子 Agent 处理工具返回结果 → 主管 Agent 再次整合并生成最终回答返回给用户importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.web.bind.annotation.*;RestControllerRequestMapping(/agent)publicclassChatController{privatefinalChatClientsupervisorClient;publicChatController(ChatClientsupervisorClient){this.supervisorClientsupervisorClient;}GetMapping(/chat)publicStringchat(RequestParamStringmessage){returnsupervisorClient.prompt().user(message).call().content();}}8. 测试验证启动应用使用浏览器或 Postman 访问以下接口观察主管 Agent 如何自动协作。测试1查询订单应调用 OrderAgentGET http://localhost:8080/agent/chat?message帮我查一下用户10086的订单预期响应用户10086的订单如下订单号20240623001商品《Spring AI实战》金额99.0元状态运输中。如有其他需要请随时联系我。测试2知识库问答应调用 KnowledgeAgentGET http://localhost:8080/agent/chat?message我想退货怎么操作预期响应关于退货的常见解答请在7天内联系客服办理退货。您可以提供订单号我将为您进一步处理。测试3模糊意图主管自行处理GET http://localhost:8080/agent/chat?message你好呀预期响应您好我是智能客服主管可以帮您查询订单、解答售后问题。请问有什么可以帮您通过日志你可以看到 Spring AI 在后台实际执行了工具调用多智能体协作一气呵成。9. 进阶让子 Agent 也拥有“大脑”上述例子中子 Agent 只是返回固定文本。但在真实场景中我们经常需要子 Agent 再次调用 LLM对结果进行加工。例如让订单 Agent 对原始订单数据做人性化润色。改进OrderAgentComponentpublicclassOrderAgent{privatefinalChatClientchatClient;publicOrderAgent(ChatClient.Builderbuilder){// 子Agent的专属ChatClient不注册任何工具仅做文本处理this.chatClientbuilder.build();}Tool(description查询用户的订单信息)publicStringqueryOrder(ToolParam(description用户ID)StringuserId){// 模拟查询到的原始订单数据StringrawData订单号20240623001商品《Spring AI实战》99元运输中;// 子Agent用LLM对原始数据生成更友好的回复returnchatClient.prompt().user(请将以下订单信息转换为更礼貌、完整的客服回复 rawData).call().content();}}这样主管 Agent 调用子 Agent 工具时子 Agent 内部又利用 LLM 做了一次智能加工形成了真正的 Agent 嵌套协作——这就是 A2A 的威力。10. 总结通过本文我们完成了一个基于 Spring AI Alibaba 的 A2A 多智能体协作系统使用Tool快速将服务封装为 Agent 工具利用ChatClient构建主管 Agent并注册子 Agent 工具模型自动根据意图调度子 Agent实现智能路由子 Agent 可内嵌 LLM形成多层智能协作Spring AI Alibaba 让多智能体开发变得像搭积木一样简单。你可以继续扩展更多专业 Agent数据分析 Agent、风控 Agent 等构建复杂的企业级 AI 协作平台。完整代码已整理到 GitHub链接请替换为你的实际地址欢迎 Star。参考资料Spring AI 官方文档Spring AI Alibaba 使用指南如果你觉得本文有帮助请点赞、收藏并关注后续我会带来更多 Spring AI Alibaba 深度实战hrefhttps://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-e1cc28b339.css relstylesheet hrefhttps://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-d1e89cace4.css relstylesheetAI 智能体本地部署实战OpenClaw 从环境搭建到避坑全攻略本地跑通你的 AI 代理一键订阅内容来源csdn.net作者昵称Tom·Ge原文链接https://blog.csdn.net/gedonshen/article/details/162263256作者主页https://blog.csdn.net/gedonshen标签#A2A #Agent #智能体 #MCP #AI协议确定要放弃本次机会福利倒计时::立减 ¥普通VIP年卡可用立即使用延伸阅读 · 我的付费专栏觉得这篇文章对你有帮助我把同类主题的系统化内容沉淀成了付费专栏欢迎订阅支持持续输出专栏定价内容大模型工程师修炼手记19.9 元AI 编程 / Agent 深度实战AI时代程序员的自我提升49.9 元AI 时代成长方法论本文配套代码 / 资料包欢迎在评论区留言「求代码」我会私信发送完整资源