ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Java多智能体系统实战:用ADK构建旅游规划助手,让AI智能体协作完成任务_google adk java-CSDN博客

Java多智能体系统实战:用ADK构建旅游规划助手,让AI智能体协作完成任务_google adk java-CSDN博客 首屏导读 · 本教程配套付费专栏 大模型工程师修炼手记19.9 元AI 编程 / Agent 实战 本文同主题系统课程· AI时代程序员的自我提升49.9 元AI 时代成长方法论。单篇不过瘾订阅解锁全量源码、实战与答疑文末附资料包领取方式 ↓引言近年来AI智能体Agent技术飞速发展从单一功能的聊天机器人进化为能够自主决策、调用工具、协同工作的多智能体系统。多智能体系统Multi-Agent System通过将复杂任务拆分为多个子任务由不同专业智能体并行或顺序执行最终整合结果大幅提升了AI处理复杂问题的能力。本文将带你用Java实现一个旅游规划多智能体系统包含天气查询、景点推荐、行程规划三个专业智能体它们将协作完成一次完整的旅行规划任务。为什么用Java实现多智能体Java作为企业级开发的主流语言拥有庞大的生态、出色的稳定性和跨平台能力。Google开源的ADK for JavaAgent Development Kit为Java开发者提供了构建、编排智能体的强大工具支持多种协作模式顺序、并行、循环等并能与MCPModel Context Protocol协议无缝集成让智能体轻松调用外部工具和服务。项目概述我们将构建一个“旅游规划师”多智能体系统包含三个核心智能体天气查询智能体查询目的地的实时天气并根据天气提供出行建议。景点推荐智能体结合天气和用户偏好历史、美食、自然等推荐景点。行程规划智能体整合天气和景点信息生成详细的每日行程。系统采用并行执行 顺序汇总的混合流程先让天气和景点智能体并行工作再由行程智能体整合结果输出完整的旅行计划。技术选型Java 17Google ADK for Java 0.3.0智能体框架Maven项目构建JacksonJSON处理可选环境准备Maven依赖在pom.xml中添加以下依赖dependencies!-- Google ADK for Java --dependencygroupIdcom.google.adk/groupIdartifactIdadk-java/artifactIdversion0.3.0/version/dependency!-- Jackson for JSON (可选用于工具类) --dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.15.2/version/dependency/dependencies配置API密钥在src/main/resources/application.properties中配置Google AI Studio的API密钥从Google AI Studio获取google.ai.api.keyYOUR_API_KEY_HERE项目结构travel-planner-multiagent/ ├── pom.xml ├── src/main/java/com/example/travel/ │ ├── TravelPlannerApplication.java # 主类 │ ├── agents/ │ │ ├── WeatherAgent.java # 天气智能体 │ │ ├── AttractionAgent.java # 景点智能体 │ │ └── ItineraryAgent.java # 行程智能体 │ └── tools/ │ └── WeatherTool.java # 天气查询工具 └── src/main/resources/application.properties代码实现1. 工具类WeatherTool首先我们创建一个工具类用于模拟天气查询。实际应用中可替换为调用真实天气API。packagecom.example.travel.tools;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jackson.databind.ObjectMapper;importcom.fasterxml.jackson.databind.node.ObjectNode;importjava.util.Random;publicclassWeatherTool{privatestaticfinalObjectMapperMAPPERnewObjectMapper();privatestaticfinalRandomRANDOMnewRandom();publicJsonNodegetWeather(Stringcity){String[]conditions{晴朗,多云,小雨,大雨,阴天};Stringconditionconditions[RANDOM.nextInt(conditions.length)];inttemperature5RANDOM.nextInt(30);// 5~34度ObjectNoderesultMAPPER.createObjectNode();result.put(city,city);result.put(condition,condition);result.put(temperature,temperature);returnresult;}publicStringgetWeatherAdvice(JsonNodeweather){Stringconditionweather.get(condition).asText();if(condition.contains(雨)){return建议携带雨具选择室内活动;}elseif(condition.equals(晴朗)){return适合户外活动注意防晒;}return天气适宜可正常出行;}}2. 智能体1WeatherAgent使用LlmAgent创建天气查询智能体并注册WeatherTool。packagecom.example.travel.agents;importcom.example.travel.tools.WeatherTool;importcom.google.adk.agents.LlmAgent;publicclassWeatherAgent{publicstaticLlmAgentcreate(){WeatherTooltoolnewWeatherTool();returnLlmAgent.builder().name(weather-agent).description(查询目的地天气并提供出行建议).instruction( 你是一个专业的天气查询助手。 根据用户提供的城市名称使用WeatherTool查询天气 返回包含温度、天气状况和出行建议的格式化报告。 ).model(gemini-2.0-flash).tools(tool).outputKey(weatherInfo)// 输出键供后续智能体引用.build();}}3. 智能体2AttractionAgent景点推荐智能体它依赖天气信息通过{weatherInfo}占位符引用和用户偏好。packagecom.example.travel.agents;importcom.google.adk.agents.LlmAgent;publicclassAttractionAgent{publicstaticLlmAgentcreate(){returnLlmAgent.builder().name(attraction-agent).description(根据天气和用户偏好推荐景点).instruction( 你是一个景点推荐专家。 根据天气信息 {weatherInfo} 和用户偏好如历史文化、美食等 推荐3-5个适合的景点包含简介和建议游览时间。 ).model(gemini-2.0-flash).outputKey(attractions).build();}}4. 智能体3ItineraryAgent行程规划智能体整合天气和景点信息生成每日行程。packagecom.example.travel.agents;importcom.google.adk.agents.LlmAgent;publicclassItineraryAgent{publicstaticLlmAgentcreate(){returnLlmAgent.builder().name(itinerary-agent).description(整合天气和景点信息生成完整行程).instruction( 你是一个行程规划师。 根据天气信息 {weatherInfo} 和景点推荐 {attractions} 结合用户天数要求生成详细的每日行程包含餐饮和交通建议。 ).model(gemini-2.0-flash).outputKey(itinerary).build();}}5. 主类组合多智能体系统在TravelPlannerApplication中我们使用ParallelAgent和SequentialAgent编排智能体。packagecom.example.travel;importcom.example.travel.agents.AttractionAgent;importcom.example.travel.agents.ItineraryAgent;importcom.example.travel.agents.WeatherAgent;importcom.google.adk.agents.LlmAgent;importcom.google.adk.agents.ParallelAgent;importcom.google.adk.agents.SequentialAgent;importcom.google.adk.runners.FlowRunner;importcom.google.adk.sessions.InMemorySessionStore;publicclassTravelPlannerApplication{publicstaticvoidmain(String[]args){// 创建智能体LlmAgentweatherAgentWeatherAgent.create();LlmAgentattractionAgentAttractionAgent.create();LlmAgentitineraryAgentItineraryAgent.create();// 并行执行天气和景点查询ParallelAgentresearchAgentParallelAgent.builder().name(research-agent).description(并行收集天气和景点信息).subAgents(weatherAgent,attractionAgent).build();// 顺序执行先研究再规划行程SequentialAgenttravelPlannerSequentialAgent.builder().name(travel-planner).description(旅游规划师).subAgents(researchAgent,itineraryAgent).build();// 运行器FlowRunnerrunnerFlowRunner.builder().sessionStore(newInMemorySessionStore()).build();StringuserQuery我想去北京旅游3天喜欢历史文化和美食帮我规划一下;System.out.println(用户输入: userQuery);System.out.println(.repeat(50));Stringresultrunner.run(travelPlanner,userQuery);System.out.println(最终行程:\nresult);}}运行效果运行主类后控制台输出示例用户输入: 我想去北京旅游3天喜欢历史文化和美食帮我规划一下 最终行程: 【第一天】 上午参观故宫博物院历史文化的精髓建议3-4小时 中午在故宫附近的四季民福烤鸭店享用北京烤鸭 下午游览景山公园俯瞰故宫全景 晚上逛王府井小吃街品尝北京特色小吃 【第二天】 上午前往颐和园皇家园林建议3-4小时 中午在颐和园附近品尝老北京炸酱面 下午参观圆明园遗址公园 晚上观看老舍茶馆的京剧表演 【第三天】 上午游览天坛公园了解古代祭天文化 中午在前门大街品尝爆肚、卤煮等小吃 下午逛大栅栏商业街购买伴手礼 傍晚结束愉快的北京之旅扩展集成MCP工具ADK for Java支持通过MCP协议调用外部工具。假设我们有一个基于SSE的MCP天气服务器如前文所述可以轻松集成McpToolClientweatherMcpClientMcpToolClient.builder().serverUrl(http://localhost:8080/sse).build();LlmAgentagentLlmAgent.builder().name(weather-agent).tools(weatherMcpClient)// 使用MCP工具.build();更多协作模式除了并行和顺序ADK还支持LoopAgent循环执行直到满足条件Sub-Agents主智能体动态调用子智能体如研究总监模式混合流程嵌套组合多种模式例如Sub-Agents模式适用于主智能体根据用户问题灵活决定调用哪些子智能体的场景。总结本文通过一个旅游规划多智能体系统demo展示了如何使用Google ADK for Java构建能够协作完成任务的多智能体应用。我们实现了三个专业智能体天气查询、景点推荐、行程规划并行顺序混合流程提升效率并保证依赖关系工具注册与使用与MCP协议的集成扩展Java开发者可以借助ADK for Java快速构建复杂的智能体工作流将AI能力无缝集成到现有企业应用中。多智能体系统正在成为AI应用的新范式掌握这一技术将为你打开无限可能。参考资源ADK for Java官方文档ADK for Java GitHub示例MCP协议文档希望这篇实战文章能帮助你开启Java多智能体开发的旅程如果你有任何问题或想法欢迎在评论区交流讨论。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/158343458作者主页https://blog.csdn.net/gedonshen标签#人工智能 #AI编程确定要放弃本次机会福利倒计时::立减 ¥普通VIP年卡可用立即使用延伸阅读 · 我的付费专栏觉得这篇文章对你有帮助我把同类主题的系统化内容沉淀成了付费专栏欢迎订阅支持持续输出专栏定价内容大模型工程师修炼手记19.9 元AI 编程 / Agent 深度实战AI时代程序员的自我提升49.9 元AI 时代成长方法论本文配套代码 / 资料包欢迎在评论区留言「求代码」我会私信发送完整资源
返回列表