资讯动态

SpringBoot AI Agent开发实战:LangChain4j、Spring AI Alibaba与LangGraph4j选型指南

发布时间:2026/8/12 21:48:16 来源:尧图企业网站定制
1. 项目概述当SpringBoot遇上AI Agent我们为何需要新选择最近在社区和项目里和不少做Java后端的朋友聊起AI应用开发发现一个挺有意思的现象大家一提到在SpringBoot里集成大模型能力第一反应往往是去查Spring AI的文档。这很正常毕竟“Spring”这个前缀在Java生态里就是一块金字招牌代表着官方背书和生态集成。但实际动手做几个PoC概念验证或者生产级的AI Agent项目后很多人包括我自己都开始对Spring AI产生了一些复杂的感受——它像一把瑞士军刀功能齐全但当你需要精雕细琢一个复杂的AI智能体时可能会觉得有些“钝”。这就是今天想和大家深入聊聊的话题。Spring AI是一个优秀的起点它极大地降低了接入大模型的门槛提供了统一的API。然而当我们从简单的“问答接口”迈向复杂的“AI Agent”时需求发生了质变。Agent不再是单纯的文本输入输出它需要记忆Memory、需要规划Planning、需要工具调用Tool Calling、需要状态流转State Flow。这时Spring AI在Agent高阶特性支持、开发范式灵活性以及中文社区资源方面可能就显得有些力不从心了。因此与其在一条路上走到黑不如看看SpringBoot生态中其他更具针对性的“利器”。本文将聚焦于三个在实战中表现突出的开源框架LangChain4j、Spring AI Alibaba以及LangGraph4j。它们并非要完全取代Spring AI而是在构建复杂、可维护、高性能的AI Agent应用时提供了更贴合工程实践的正解。接下来我会结合具体场景拆解它们的核心设计、优劣对比以及如何与SpringBoot优雅集成希望能为你下一次的技术选型提供扎实的参考。2. 核心需求解析SpringBoot开发者构建AI Agent的真实痛点在深入框架之前我们必须先厘清作为一个SpringBoot开发者当我们要构建一个AI Agent时我们到底在为什么而挣扎这远不止是调用一个ChatCompletion接口那么简单。2.1 从API调用到智能体思维的范式转换传统的SpringBoot应用是请求-响应式的逻辑清晰流程可控。但AI Agent是目标驱动和自主决策的。比如你需要一个Agent来帮你分析周报数据并生成总结。这个Agent需要自己决定先调用数据库工具查数据再调用数据分析工具处理最后调用文本生成工具写总结。这个“决定”的过程就是Agent的核心。Spring AI虽然提供了基础的Agent概念但其编排能力和状态管理往往需要开发者投入大量精力去“绕路”实现。注意这里说的“绕路”并不是Spring AI做不到而是它可能没有提供最符合直觉、最高效的抽象。你需要手动管理对话历史、工具执行结果和LLM的多次调用代码容易变得冗长且难以追踪。2.2 复杂流程编排与状态管理的缺失一个实用的Agent常常涉及多步决策和循环。例如一个客服Agent可能需要先理解用户意图然后查询知识库如果答案不完整会主动反问用户获取更多信息最后才给出结论。这本质上是一个有状态的工作流。Spring AI对此的支持相对基础而像LangGraph4j这样的框架其核心设计就是围绕状态图和循环构建的提供了原生的、可视化的编排能力。2.3 对国产化与中文场景的深度适配需求很多国内项目对阿里云的通义千问、百度文心一言等国产模型有强需求。虽然Spring AI支持通过扩展接入但其首要支持和文档重心仍在OpenAI、Anthropic等国外模型上。Spring AI Alibaba作为阿里云官方出品在这一点的优势是决定性的。它不仅是简单的客户端更深度集成了阿里云灵积平台的各种能力并且在权限管理、模型微调、长文本处理等企业级关切点上考虑得更周全。2.4 开发体验与调试效率的追求Agent应用的调试比传统应用更复杂。你不仅需要看日志还需要观察Agent的“思考链”Chain of Thought、工具调用序列和内部状态变化。LangChain4j和LangGraph4j在这方面提供了更好的观察窗Observability例如可以方便地将整个Agent的执行轨迹Trace结构化的输出或发送到监控系统这对于排查“为什么Agent做出了这个愚蠢决策”至关重要。3. 框架深度对比LangChain4j vs Spring AI Alibaba vs LangGraph4j了解了痛点我们再来仔细端详这三把“利器”。它们定位不同各有千秋下表是一个核心特性的快速对比特性维度LangChain4jSpring AI AlibabaLangGraph4j核心定位Java版LangChainAI应用开发框架阿里云大模型服务的Spring生态集成基于状态图的Agent编排框架模型支持极其广泛OpenAI, Azure, 国产模型等深度集成阿里云灵积平台模型模型无关依赖底层框架如LangChain4jAgent能力强大且灵活支持多种Agent类型提供基础Agent能力更侧重企业级服务集成核心优势专精于复杂、有状态的Agent编排流程编排通过Chain、SequentialChain等组合相对基础核心优势可视化、可循环的状态图工具调用原生强大注解驱动易于扩展支持与阿里云服务工具深度集成依赖底层框架的工具系统状态管理需自行设计会话级状态管理核心优势内置持久化状态管理与SpringBoot集成良好有Spring Boot Starter深度集成原生Spring风格良好可独立或与LangChain4j协同使用学习曲线中等概念较多较低对Spring开发者友好较高需理解图计算概念最佳场景需要高度定制化、多模型切换的复杂AI应用以阿里云模型为核心、需快速上线的企业级应用具有复杂决策逻辑、多步骤循环的自治Agent3.1 LangChain4jJava生态的AI应用“乐高”大师如果你是从Python的LangChain转战Java或者渴望那种高度模块化、自由组合的开发体验LangChain4j是你的不二之选。它几乎将LangChain的所有核心概念都“移植”到了Java世界。它的核心优势在于“组合性”。它将AI应用拆解成一个个可复用的组件模型Models、提示词模板Prompt Templates、输出解析器Output Parsers、记忆Memory、工具Tools和链Chains。你可以像搭乐高一样用声明式的方式将它们组装起来。例如构建一个查询天气的Agent用LangChain4j可以这样清晰地表达// 1. 定义一个工具Tool Tool(根据城市名查询当前天气) public String getWeather(P(城市名称) String cityName) { // 调用外部天气API return weatherService.fetch(cityName); } // 2. 创建Agent Agent agent AiServices.builder(WeatherAgent.class) .chatLanguageModel(chatModel) // 注入LLM如OpenAI .tools(new WeatherTools()) // 注入工具类 .build(); // 3. 使用Agent String answer agent.chat(北京今天天气怎么样); // Agent会自动思考并调用getWeather工具然后结合结果生成回答这种基于注解和接口的编程模型非常优雅工具的定义和注册极其简单。更重要的是它的生态丰富支持数十种向量数据库、文档加载器让你能轻松构建RAG检索增强生成应用。实操心得LangChain4j的文档虽然全面但直接看可能会觉得庞杂。建议从AiServices这个核心入口开始它用动态代理的方式让你通过一个Java接口就能定义Agent的行为是最高效的上手方式。另外它的记忆管理如ChatMemoryStore需要仔细设计特别是对于分布式部署默认的In-memory存储并不适用。3.2 Spring AI Alibaba企业级一站式集成方案如果你的技术栈深度绑定阿里云或者项目对通义千问系列模型有硬性要求那么Spring AI Alibaba几乎是无缝衔接的最佳选择。它不仅仅是另一个客户端而是将阿里云灵积平台的能力“Spring化”了。它的核心优势是“开箱即用”和“深度集成”。通过熟悉的Spring Boot Starter你只需几行配置就能接入# application.yml spring: ai: alibaba: access-key: your-access-key secret-key: your-secret-key chat: options: model: qwen-max temperature: 0.7然后就可以像使用任何Spring Bean一样注入ChatClient或EmbeddingClient。它在以下方面做得尤为出色企业级特性天然支持阿里云的AK/SK鉴权、多地域端点、请求重试与熔断可结合Spring Cloud Alibaba Sentinel这是自建客户端需要大量额外工作的部分。数据与工具集成其DataAgent等组件能方便地连接阿里云的数据源如MaxCompute、OSS进行数据查询与处理直接为Agent提供“燃料”。Spring原生体验配置中心Nacos、监控Spring Boot Actuator等Spring Cloud生态组件可以无缝对接运维体系可以快速复用。注意事项关于“Spring AI Alibaba DataAgent是否有权限模块”这个问题答案是肯定的但其权限控制主要依赖于底层的阿里云资源访问控制RAM。DataAgent本身是一个数据访问的抽象层具体的表、文件的读写权限需要你在阿里云RAM中为使用的AccessKey配置相应的策略。框架本身不提供业务层的权限拦截这部分需要你在应用层自己实现。3.3 LangGraph4j驾驭复杂Agent工作流的“方向盘”当前面两个框架解决了Agent的“单体智能”和“云服务集成”后LangGraph4j解决的是更高维度的问题多个智能体或一个智能体的多个步骤如何协同、循环、有条件地执行它借鉴了Python LangGraph的思想用“图”Graph来建模Agent的工作流。它的核心抽象是“状态图”StateGraph。你将Agent的执行过程定义为一个有向图节点Node是一个执行单元可以是一个LLM调用、一个工具调用或一段业务逻辑边Edge决定了执行的流向。节点之间通过一个共享的“状态State”对象来传递信息。想象一下构建一个“技术客服Agent”节点1路由判断用户问题是关于“部署”还是“编码”。条件边如果是部署问题流向节点2部署专家Agent如果是编码问题流向节点3代码专家Agent。节点2/3相应的专家Agent处理问题可能会调用知识库工具。节点4确认询问用户是否解决。如果未解决则流回节点1重新路由。这种带循环和条件分支的流程用传统代码写会充满复杂的if-else和状态标志位难以维护和可视化。而用LangGraph4j你可以清晰地定义这个图// 伪代码示意 StateGraphAgentState graph new StateGraph(AgentState.class); graph.addNode(router, new RouterNode()); graph.addNode(deployment_specialist, new DeploymentAgentNode()); graph.addNode(coding_specialist, new CodingAgentNode()); graph.addNode(human_check, new HumanCheckNode()); graph.addEdge(router, deployment_specialist, state - state.getTopic().equals(deployment)); graph.addEdge(router, coding_specialist, state - state.getTopic().equals(coding)); graph.addEdge(deployment_specialist, human_check); graph.addEdge(coding_specialist, human_check); // 设置从 human_check 根据结果循环回 router 或结束的边 graph.addConditionalEdges(human_check, ...); // 编译并执行图 var app graph.compile(); AgentState result app.invoke(initialState);它的强大之处在于将控制流显式化、可视化。你可以将图导出为Mermaid或PNG格式让整个团队的成员都能理解Agent的决策流程这对于复杂业务逻辑的协作和调试是革命性的。踩坑记录LangGraph4j的学习成本是三者中最高的你需要从“顺序执行”的思维转变为“状态流”思维。初期设计State对象时务必考虑周全因为它会在所有节点间流转。建议State设计得扁平一些包含所有可能用到的字段并做好文档。另外它的持久化PersistedCheckpoint对于实现长时运行、可中断恢复的Agent至关重要但配置起来需要一些功夫。4. 实战集成在SpringBoot项目中落地AI Agent理论说再多不如一行代码。我们以一个具体的场景来串联这三个框架构建一个智能项目分析Agent。它能接受一个GitHub仓库地址自动分析其技术栈SpringBoot版本、数据库等评估代码复杂度并给出优化建议。4.1 项目骨架与依赖管理首先创建一个标准的SpringBoot 3.x项目。在pom.xml中我们需要做选择性引入。这里我们展示一种混合使用的方案以LangChain4j为核心集成LangGraph4j进行编排同时保留接入Spring AI Alibaba模型的能力。dependencies !-- SpringBoot Web -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- 核心LangChain4j -- dependency groupIddev.langchain4j/groupId artifactIdlangchain4j/artifactId version0.31.0/version !-- 请使用最新版本 -- /dependency dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-spring-boot-starter/artifactId version0.31.0/version /dependency !-- 编排LangGraph4j -- dependency groupIddev.langchain4j/groupId artifactIdlanggraph4j/artifactId version0.31.0/version /dependency !-- 可选Spring AI Alibaba (如需使用通义千问) -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-ai-alibaba-spring-boot-starter/artifactId version2024.0.0.0/version !-- 请查询最新版本 -- /dependency !-- 工具类用于GitHub API调用、代码解析 -- dependency groupIdorg.kohsuke/groupId artifactIdgithub-api/artifactId version1.320/version /dependency /dependencies在application.yml中配置模型。这里我们配置两个模型连接一个OpenAI通过LangChain4j一个通义千问通过Spring AI Alibaba以展示灵活性。spring: application: name: ai-agent-demo # LangChain4j 的配置以OpenAI为例 langchain4j: open-ai: chat-model: api-key: ${OPENAI_API_KEY} model-name: gpt-4-turbo temperature: 0.2 max-tokens: 2000 # 可以配置多个模型服务 # logging: enabled # 开启请求/响应日志调试时非常有用 # Spring AI Alibaba 的配置 ai: alibaba: access-key: ${ALIYUN_ACCESS_KEY} secret-key: ${ALIYUN_SECRET_KEY} chat: options: model: qwen-plus enable-search: false # 是否启用联网搜索4.2 定义工具与核心服务Agent的能力来源于工具。我们首先定义几个关键工具。Service public class ProjectAnalysisTools { Tool(从GitHub仓库地址获取项目的主要文件内容如pom.xml, build.gradle, 主要Java文件等) public String fetchProjectFiles(P(仓库地址例如https://github.com/spring-projects/spring-boot) String repoUrl) { // 使用GitHub API或直接克隆简化示例 // 解析repoUrl调用GitHub API获取文件列表和内容 // 这里返回模拟数据 return Repository: spring-boot-demo File: pom.xml Content: project parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.2.5/version /parent dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version3.0.3/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency /dependencies /project File: src/main/java/com/example/demo/DemoApplication.java Content: (标准SpringBoot启动类) ; } Tool(分析代码复杂度例如计算圈复杂度、代码行数统计等) public String analyzeCodeComplexity(P(项目源代码的字符串表示) String sourceCode) { // 集成静态代码分析工具如Checkstyle, PMD或使用简单启发式规则 // 模拟返回 return 代码复杂度分析报告 - 总体行数约1500行 - 平均方法长度适中 - 圈复杂度部分Service类方法较高10建议重构。 - 发现使用了MyBatis但存在N1查询的潜在风险点2处。 ; } Tool(根据技术栈和复杂度生成架构和代码优化建议) public String generateOptimizationSuggestions( P(项目技术栈描述) String techStack, P(代码复杂度报告) String complexityReport) { // 这里可以封装一个提示词模板调用LLM来生成更专业的建议 // 为简化返回固定逻辑 if (techStack.contains(MyBatis) complexityReport.contains(N1)) { return 优化建议1. 检查Mapper中的关联查询考虑使用collection标签或开启MyBatis的懒加载配置。2. 对于复杂查询建议使用MyBatis-Plus的QueryWrapper或转为JOIN查询。; } return 项目结构良好建议定期进行代码审查和依赖升级。; } }4.3 使用LangGraph4j编排多步骤Agent现在我们使用LangGraph4j将上述工具和LLM调用编排成一个有序的工作流。这个工作流有清晰的步骤和状态流转。首先定义贯穿整个图的状态类Data Builder NoArgsConstructor AllArgsConstructor public class ProjectAnalysisState { // 输入 private String githubRepoUrl; // 中间结果 private String projectFilesContent; private String techStackAnalysis; private String complexityAnalysis; // 最终输出 private String finalReport; // 控制流标志位 private String nextStep; }然后定义各个节点。每个节点负责一项具体工作Component public class FetchFilesNode implements NodeProjectAnalysisState { Autowired private ProjectAnalysisTools tools; Override public ProjectAnalysisState call(StateContextProjectAnalysisState context) { ProjectAnalysisState state context.getState(); log.info(节点[FetchFilesNode]执行获取仓库文件...); state.setProjectFilesContent(tools.fetchProjectFiles(state.getGithubRepoUrl())); state.setNextStep(ANALYZE_TECH_STACK); return state; } } Component public class AnalyzeTechStackNode implements NodeProjectAnalysisState { Autowired private ChatLanguageModel chatModel; // 由LangChain4j自动注入配置的模型 Override public ProjectAnalysisState call(StateContextProjectAnalysisState context) { ProjectAnalysisState state context.getState(); log.info(节点[AnalyzeTechStackNode]执行分析技术栈...); String prompt 你是一个资深Java架构师。请分析以下项目的pom.xml文件内容总结其核心技术栈 - SpringBoot版本 - 主要依赖如Web框架、ORM、数据库驱动、缓存等 - 构建工具 文件内容 %s 请用简洁的列表形式回复。 .formatted(state.getProjectFilesContent()); state.setTechStackAnalysis(chatModel.generate(prompt)); state.setNextStep(ANALYZE_COMPLEXITY); return state; } } // 类似地定义 AnalyzeComplexityNode 和 GenerateReportNode // GenerateReportNode 会调用 tools.generateOptimizationSuggestions最后组装图并定义执行流Configuration public class AgentGraphConfiguration { Bean public GraphProjectAnalysisState projectAnalysisGraph( FetchFilesNode fetchFilesNode, AnalyzeTechStackNode analyzeTechStackNode, AnalyzeComplexityNode analyzeComplexityNode, GenerateReportNode generateReportNode) { StateGraphProjectAnalysisState graph new StateGraph(ProjectAnalysisState.class); // 添加节点 graph.addNode(FETCH_FILES, fetchFilesNode); graph.addNode(ANALYZE_TECH, analyzeTechStackNode); graph.addNode(ANALYZE_COMPLEXITY, analyzeComplexityNode); graph.addNode(GENERATE_REPORT, generateReportNode); // 设置边定义执行顺序 graph.setEntryPoint(FETCH_FILES); graph.addEdge(FETCH_FILES, ANALYZE_TECH); graph.addEdge(ANALYZE_TECH, ANALYZE_COMPLEXITY); graph.addEdge(ANALYZE_COMPLEXITY, GENERATE_REPORT); graph.setFinishPoint(GENERATE_REPORT); // 条件边的示例如果需要根据复杂度决定是否进行深度分析可以这样加 // graph.addConditionalEdges(ANALYZE_COMPLEXITY, // state - state.getComplexityScore() 8 ? DEEP_DIVE_ANALYSIS : GENERATE_REPORT // ); return graph.compile(); } }现在在你的Service中就可以注入并使用这个图了Service Slf4j public class ProjectAnalysisService { Autowired private GraphProjectAnalysisState analysisGraph; public String analyzeRepository(String repoUrl) { // 初始化状态 ProjectAnalysisState initialState ProjectAnalysisState.builder() .githubRepoUrl(repoUrl) .nextStep(FETCH_FILES) .build(); // 执行图 ProjectAnalysisState finalState analysisGraph.invoke(initialState); log.info(Agent工作流执行完毕。最终报告\n{}, finalState.getFinalReport()); return finalState.getFinalReport(); } }4.4 创建REST API并测试最后暴露一个简单的HTTP端点RestController RequestMapping(/api/agent) public class ProjectAnalysisController { Autowired private ProjectAnalysisService analysisService; PostMapping(/analyze) public ResponseEntityString analyzeProject(RequestParam String repoUrl) { try { String report analysisService.analyzeRepository(repoUrl); return ResponseEntity.ok(report); } catch (Exception e) { log.error(分析项目失败, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(分析失败: e.getMessage()); } } }使用curl或Postman进行测试curl -X POST http://localhost:8080/api/agent/analyze?repoUrlhttps://github.com/example/demo-repo你将收到一个结构化的分析报告包含了技术栈总结、复杂度分析和优化建议。整个流程由LangGraph4j清晰编排工具由LangChain4j便捷定义模型层可以灵活切换。5. 进阶考量与生产级部署将AI Agent从Demo推向生产还有一系列工程问题需要解决。5.1 性能、监控与可观测性AI应用的核心成本与延迟来自LLM API调用。必须实施有效的监控和治理。限流与熔断为每个模型客户端配置限流如使用Resilience4j。Spring AI Alibaba天然支持Sentinel。对于LangChain4j你需要自己集成或在网关层实现。链路追踪LangChain4j和LangGraph4j都支持将执行轨迹Trace导出到OpenTelemetry。将其接入Jaeger或SkyWalking可以清晰看到每次请求中Agent的思考过程、工具调用耗时和LLM调用详情对于性能分析和调试不可或缺。日志与审计详细记录Agent的输入、输出、中间步骤和工具调用参数。这不仅用于调试在涉及敏感操作或合规要求时也是必须的。5.2 记忆Memory管理与持久化无状态的Agent是“金鱼”只能处理单轮对话。生产级Agent需要记忆。对话记忆LangChain4j提供了ChatMemoryStore接口可以实现基于Redis、数据库的分布式记忆存储确保同一会话在不同实例间状态一致。工作流状态持久化对于LangGraph4j的长时工作流可能持续数小时或数天必须使用PersistedCheckpoint机制。当工作流暂停如等待人工审核或应用重启时可以从上一个检查点恢复执行这是实现可靠异步Agent的关键。5.3 安全与权限控制Agent能调用工具意味着它拥有了执行某些操作的能力必须加以约束。工具权限不是所有用户都能触发所有工具。需要在工具调用前增加一层业务权限校验。例如在ProjectAnalysisTools.fetchProjectFiles中应先检查当前用户是否有权访问该GitHub仓库。输入输出过滤对用户输入进行严格的防Prompt注入检查对LLM的输出进行敏感信息过滤和内容安全审核防止产生有害内容。密钥管理模型API密钥、工具调用的第三方密钥必须使用Vault或云厂商的密钥管理服务绝不能硬编码在配置文件中。5.4 与现有SpringBoot生态的整合你的Agent应用很可能不是孤岛需要与现有系统交互。事务管理如果Agent工具操作了数据库需要谨慎处理事务边界。通常将Agent执行包裹在一个独立的事务中或者让工具方法自己管理事务避免长事务锁资源。异步化Agent执行可能是耗时的。使用Async或消息队列如集成RabbitMQ、RocketMQ将分析请求异步化立即返回一个任务ID通过WebSocket或轮询通知客户端结果。配置中心将模型参数如temperature、maxTokens、提示词模板甚至工作流配置放到Nacos或Apollo中实现不停机动态调整Agent行为。6. 框架选型决策指南与未来展望回到最初的问题Spring AI, LangChain4j, Spring AI Alibaba, LangGraph4j到底怎么选我的建议是基于你的核心场景做一个决策矩阵如果你的团队是全新的AI应用探索者且模型主要用OpenAI/Azure可以从Spring AI开始快速上手理解基本概念。如果你需要高度定制化、复杂的Agent逻辑且模型来源多样LangChain4j是你的主力框架。它的灵活性和丰富的集成能力是最大优势。如果你的公司技术栈以阿里云为主追求快速稳定上线Spring AI Alibaba是最省心、最可靠的选择在企业级特性上优势明显。如果你要构建的Agent涉及复杂的多步骤、循环、分支判断的工作流一定要引入LangGraph4j。它可以与LangChain4j完美配合用图来管理复杂度是降本增效的关键。在实际项目中它们完全可以混合使用。例如用LangChain4j LangGraph4j构建核心Agent大脑和编排引擎而底层模型客户端可以根据环境配置灵活选择Spring AI Alibaba生产环境或OpenAI开发测试环境。关于未来AI Agent的开发范式还在快速演进。有几个趋势值得关注一是智能体即服务Agent as a Service的兴起可能会出现更上层的托管平台二是多模态能力的集成从纯文本走向图像、语音的感知与生成三是与业务流程的深度自动化融合Agent不再仅是聊天机器人而是能自动操作CRM、ERP系统的数字员工。作为SpringBoot开发者我们正站在一个激动人心的技术交叉点上。掌握这些框架不仅仅是学会调用API更是培养一种“智能体思维”——如何将复杂、模糊的业务需求分解为可由LLM驱动、工具辅助、流程编排的自动化解决方案。这条路充满挑战但回报也同样丰厚。从今天介绍的这三个框架中选择一个启动你的第一个AI Agent项目或许就是最好的开始。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价