LangChain4j全集-18-Agents

发布时间:2026/7/24 13:41:46
LangChain4j全集-18-Agents Agents梳理agents下面我会用Spring Boot 开发者容易理解的方式帮你梳理LangChain4j 官方文档中 Agents 教程这部分内容尽量讲清楚每个内容点是干什么的它解决什么问题在实际开发里有什么作用你可以怎么理解它因为你给的是这个地址https://docs.langchain4j.dev/tutorials/agents我会按照LangChain4j 的 Agent 教程核心结构来做一份“学习版笔记”。你可以把它当成一份入门理解材料。一、先说结论Agent 到底是什么如果你以前只把大模型当成一个“智能问答接口”那Agent可以理解成让大模型不只是“回答你”而是“为了完成目标自己决定下一步要做什么”。比如普通 LLM 只是你问“杭州今天天气怎么样”它回答“我不知道实时天气但通常……”而 Agent 会变成先判断这个问题需要实时数据然后决定调用天气工具 / 搜索工具获取结果后整理成自然语言回复给你所以 Agent 的核心不是“更聪明地说话”而是更聪明地做事。二、Agent 和普通聊天模型的区别你可以这样理解1普通 LLM像一个知识很强的“聊天机器人”。它擅长解释概念写代码总结文本生成内容但它的限制是不知道你的系统实时数据不会自动调用数据库/接口/工具不会自己规划多步骤任务2Agent像一个“会思考下一步动作的智能执行者”。它除了会说还会判断要不要调用工具决定调用哪个工具可能多轮调用工具根据工具结果继续推理最终完成一个目标比如用户说帮我查一下订单 12345 的状态如果没发货就提醒仓库处理。普通 LLM只能给你一个“看起来合理”的回答但并不能真的查订单、真的发提醒Agent调订单查询工具判断订单状态如果未发货调用通知工具最终回复用户处理结果这就是 Agent 的价值。三、为什么 LangChain4j 要做 Agents因为企业开发里单纯聊天没什么用真正有价值的是查数据库调第三方接口操作内部系统执行业务流程基于外部数据做决策而 LangChain4j 作为 Java 生态下的 AI 框架Agent 机制就是为了让你在 Java/Spring Boot 项目里很自然地把这些能力接进去。你可以把它理解成给大模型装“手”和“脚”让它不仅会说还能干活。四、Agents 教程里核心想讲什么这一部分教程本质上是在告诉你Agent 是什么Agent 怎么和大模型配合Agent 如何使用工具ToolsAgent 如何执行多步骤任务Agent 的执行过程中有哪些关键概念开发时应该注意什么五、核心概念梳理下面我开始按“知识点”给你讲。1. Agent是干什么的Agent 是一个“围绕目标行动的 AI 执行单元”。它的作用是什么它不是只负责生成一句话而是负责理解用户目标判断需要哪些信息选择合适的工具执行步骤汇总结果通俗理解你可以把 Agent 看成一个“AI 员工”。用户是老板给它一个任务“帮我查一下库存”“帮我比较三家酒店价格”“帮我总结会议纪要并发邮件”Agent 的职责就是想办法完成不只是嘴上说。2. Model模型是干什么的模型是 Agent 的“大脑”。作用它负责理解自然语言做推理决定下一步组织输出通俗理解Agent 不等于模型。可以理解成模型 会思考的大脑工具 可调用的外部能力Agent 大脑 工具 执行逻辑就像一个员工大脑知道怎么分析问题手脚能操作电脑、打电话、查系统Agent整个“做事的人”3. Tools工具这是 Agent 教程里最重要的部分之一。是干什么的工具就是提供给 Agent 调用的“外部功能”。在 LangChain4j 里工具一般就是你写的 Java 方法。比如你可以提供查询天气的方法查询订单的方法搜索数据库的方法发邮件的方法调用第三方接口的方法作用它让模型能接触到真实世界的数据和操作能力。通俗理解大模型本身像一个“很会说话的人”但它没有权限进你的系统。工具就是给它开的“业务接口”。比如getOrderStatus(orderId)sendEmail(to, content)queryInventory(productId)模型本身不会查订单但它可以通过工具查订单。4. Tool Calling工具调用是干什么的当 Agent 发现单靠自己回答不够时它会决定调用工具。作用让模型能把“想法”变成“动作”。通俗理解比如用户问北京现在几点了模型可能知道时区概念但不能保证当前时间准确于是它会判断这个问题需要实时信息应该调用“时间查询工具”调用完成后再回答用户。这就是工具调用。5. Multi-step reasoning多步骤推理是干什么的Agent 不一定只调用一次工具它可能会先查一个数据根据结果决定下一步再调用另一个工具最后综合输出作用解决复杂任务而不是简单问答。通俗理解比如用户说帮我找出最近7天销量下降最多的商品并生成一个补货建议。这个任务不可能一步完成可能要查最近7天销量数据做比较分析找到下降最多的商品查当前库存生成建议这就是多步骤推理。6. Planning规划有些 Agent 教程里会提到“规划”思想。是干什么的面对复杂任务时Agent 需要先想要分几步做每一步需要什么工具哪些结果会影响下一步作用让执行更像“做项目”而不是“随机反应”。通俗理解像你开发一个接口时脑子里会先过一遍先校验参数再查数据库再调远程服务最后组装返回值Agent 的规划也是类似的只不过是大模型在做这件事。7. Memory记忆Agent 往往不是一次性任务可能有上下文。是干什么的让 Agent 记住之前说过什么、做过什么。作用避免每次都从零开始支持连续对话和连续任务。通俗理解比如用户先说帮我查一下我的订单然后又说那把最晚的那个发给我邮箱如果没有记忆Agent 不知道“那个”指什么有记忆它就知道你前面提到的订单列表。8. State状态这个概念和 Memory 很像但更偏“执行过程数据”。是干什么的记录当前任务执行到哪里了、已经拿到了什么结果。作用便于复杂任务的持续推进。通俗理解比如一个 Agent 正在执行已经查到了用户ID已经查到了订单还没调用发货系统这些中间过程数据就可以看成状态。这在复杂 Agent 中很重要。9. Observation观察结果是干什么的工具调用后返回的结果Agent 会把它当成“观察到的信息”。作用让 Agent 根据真实结果继续思考。通俗理解Agent 先调用getWeather(Hangzhou)返回“晴32度”这个返回值就是一次 observation。然后模型根据这个 observation 去形成下一步回答“杭州今天晴天32度体感较热。”10. Final Answer最终答案是干什么的在经过若干轮思考、调用工具、整理信息后输出给用户的结果。作用把执行结果转换成用户可理解的自然语言。通俗理解工具返回的是程序数据{status:NOT_SHIPPED,warehouse:HZ-01}但用户需要的是订单目前还未发货我已经为你提醒仓库 HZ-01 尽快处理。这一步就是 Agent 最终答案生成。六、LangChain4j 里的 Agent 和 Tool 到底怎么配合这部分对 Spring Boot 开发者非常关键。1你提供工具方法你写 Java 方法例如查天气查订单查库存这些方法就是业务能力。2LangChain4j 把工具描述告诉模型框架会把工具的名称、参数、用途描述给 LLM。模型就知道我有哪些工具能用每个工具适合什么场景该传什么参数3模型决定是否调用工具收到用户问题后模型会判断直接回答还是调用工具4如果调用工具框架自动执行方法LangChain4j 会帮你解析工具调用请求调用对应 Java 方法把结果再喂给模型5模型基于结果继续输出拿到工具结果后模型再生成最终回复。Spring Boot 视角怎么理解你可以把它类比成Controller 接收用户请求Service 提供业务能力Agent 相当于“智能调度层”LLM 负责决策和自然语言理解Tool 相当于可被智能调度的 Service 方法也就是说Agent 像一个“会自动决定调用哪个 Service 的智能 Controller”。七、Agent 教程中每个点的实际价值下面我用“功能点 - 价值”的方式帮你理解。1. 为什么要有工具价值解决模型“不知道实时数据”“不能操作系统”的问题。适用场景查订单查库存查天气搜索知识库发短信、发邮件调用 ERP / CRM / OA / 支付接口2. 为什么要让模型自己决定是否调用工具价值减少你手工写大量 if/else 路由逻辑。传统写法可能是if(用户问天气){调天气接口}elseif(用户问订单){调订单接口}elseif...但 Agent 写法是让模型理解用户意图自己决定调用哪个工具好处更自然更灵活更适合开放式输入。3. 为什么要支持多步骤价值真实业务任务通常不是一步完成的。例如先查客户再查订单再查物流最后生成答复没有多步骤能力Agent 只能处理很简单的问题。4. 为什么要有记忆价值支持连续对话体验更自然。例如用户说“帮我查一下小米14的库存”“那上海门店呢”“把有货的门店发我”如果没有记忆每句话都得重新补全上下文体验很差。5. 为什么需要最终答案整理价值工具结果往往是结构化数据不适合直接给用户看。Agent 能把技术数据翻译成用户听得懂的话。这对于 ToB 系统、客服系统、运营后台都很重要。八、你作为 Spring Boot 开发者最应该关注哪些点如果你现在是 Java / Spring Boot 开发者学习 Agent 时最建议你重点理解下面几个点。1. Tool 本质上就是“给模型开放的后端能力”这点特别重要。你不用把 Tool 想得很玄乎它很多时候就是publicStringqueryOrderStatus(StringorderId)或者publicListProductsearchProducts(Stringkeyword)只不过这些方法以前是给 Controller 或 Service 调用现在是给LLM 驱动的 Agent调用。2. Tool 的描述非常关键模型不是读你的源码它是看“工具说明”来理解用途的。所以一个工具是否好用不只看代码还看你有没有把这个工具描述清楚这个工具是做什么的什么时候应该调用参数是什么意思返回结果代表什么类比就像你写 OpenAPI 文档一样描述越清晰调用越准确。3. Agent 适合“目标导向型任务”不是所有场景都需要 Agent。适合帮用户查数据帮用户操作系统帮用户完成多步骤任务智能客服智能助手内部办公自动化不一定适合纯文本生成简单知识问答固定流程非常明确的接口调用如果只是“写一段文案”直接用 ChatModel 可能更简单。4. Agent 会带来不确定性这点很现实。因为让模型自己决定调用什么工具就意味着它可能调用错工具可能传错参数可能走多余步骤可能理解偏了所以在企业应用中通常要加参数校验权限控制日志记录超时控制重试机制人工兜底你可以理解为Agent 很智能但它不是 100% 可控的程序流程。九、Agent 的典型工作流程你可以把 Agent 的运行过程记成这几步第一步接收用户任务例如帮我查订单 A123 的物流状态第二步模型理解意图模型判断这是一个订单查询任务需要实时数据应该调用订单/物流工具第三步调用工具例如调用getOrderStatus(A123)getLogisticsInfo(A123)第四步拿到工具结果结果可能是订单已发货物流已到达杭州分拨中心第五步模型整理结果变成用户能看懂的话订单 A123 已发货目前物流到达杭州分拨中心正在继续配送中。第六步结束或继续下一步如果用户继续问预计什么时候到Agent 可以继续调用预计送达工具或根据已有结果继续回答十、Agent 的常见应用场景下面给你一些你作为 Spring Boot 开发者比较容易落地的方向。1. 智能客服工具可能包括查订单查退款状态查物流提交工单Agent 可以自动决定调用哪个工具。2. 企业内部助手工具可能包括查员工信息查请假余额提交审批查项目进度3. 电商导购助手工具可能包括搜索商品查库存查价格查优惠券下单4. 数据分析助手工具可能包括查询报表查销售数据查用户增长数据生成总结5. 运维/开发助手工具可能包括查日志查监控指标重启服务查询发布记录这个场景尤其适合 Java 后端团队做内部效率工具。十一、Agent 教程想传递的核心思想如果把整个 Agents 教程压缩成几句话大概就是1LLM 不只是聊天它可以成为任务执行者。2工具是 Agent 能力扩展的关键没有工具Agent 很多时候只是“会说但不会做”。3Agent 的本质是“推理 调工具 再推理”这是最核心的运行模式。4Agent 特别适合复杂、开放式、多步骤任务而不是简单固定流程。5Agent 很强但也需要工程治理在生产环境必须考虑稳定性、安全性、可控性。十二、你学习 LangChain4j Agents 时建议按什么顺序看我建议你这样学比较适合 Spring Boot 开发者第一阶段先理解理念先搞懂Agent 是什么Tool 是什么为什么需要 Tool CallingAgent 和普通聊天模型的区别目标先建立“Agent 是一个会调用后端能力的 AI 调度器”的认知。第二阶段学最简单的 Tool 示例比如一个天气工具一个时间工具一个订单状态查询工具目标搞懂 LangChain4j 是怎么把 Java 方法暴露给模型的。第三阶段学多工具协作比如查用户信息查订单查物流目标让模型根据用户问题自动选择不同工具。第四阶段学记忆和上下文目标支持连续对话不要每次都从零开始。第五阶段考虑落地工程化包括Spring Bean 管理日志鉴权限流超时异常处理工具调用审计十三、你可以怎么把它映射到 Spring Boot 项目中我给你一个最容易理解的映射传统 Spring BootController接收请求Service处理业务Repository查数据FeignClient/RestTemplate/WebClient调外部接口接入 LangChain4j Agent 后用户自然语言输入相当于“更自由的请求入口”LLM理解用户意图Agent决定下一步做什么Tool调用你封装好的 Service / 外部接口Memory保存对话上下文最终回复返回给前端本质变化以前是你写死流程用户按你的接口规则调用现在是用户直接说目标Agent 帮你匹配和调度后端能力这就是 AI Agent 对传统后端开发模式的变化。十四、学习时容易误解的几个点误解 1Agent 很神秘很复杂其实不是。入门阶段你就把它理解成大模型 可调用的 Java 工具方法 自动决策流程就够了。误解 2有了 Agent 就不需要写业务代码了完全不是。Agent 只能调你提供的能力。真正的业务能力还是你写ServiceAPI数据访问权限校验事务处理Agent 只是“智能调度层”。误解 3所有 AI 场景都该用 Agent不是。如果只是摘要翻译文案生成简单问答直接用普通 ChatModel 就行。Agent 更适合“需要行动”的任务。误解 4Agent 一定比传统代码更稳定不是。Agent 更灵活但也更不可预测。如果业务流程要求强确定性传统代码流转可能更稳。十五、给你一个一句话总总结如果你想用最通俗的话理解 LangChain4j Agents可以记住这句话Agent 就是一个由大模型驱动的“智能任务执行器”它能理解用户目标并自动调用你在 Java/Spring Boot 里提供的工具方法来完成任务。十六、如果你要拿这个知识去做项目最实用的关注点建议你重点关注下面这些实战问题工具怎么定义工具描述怎么写模型怎么选择工具多工具时怎么避免乱调用怎么记录 Agent 的思考和调用日志怎么做权限控制怎么防止高风险操作被误调用怎么和 Spring Bean、Service 层集成怎么做异常兜底怎么让返回结果更稳定如果你愿意的话我下一步还可以继续帮你做这几件事中的任意一种选项 1我可以继续把这个 Agents 教程按“章节结构”逐段拆解像读文档一样一节一节讲给你。选项 2我可以结合Spring Boot LangChain4j给你画一套AgentToolMemoryServiceController之间的关系图和代码结构思路。选项 3我可以直接给你写一个最小可运行 DemoSpring BootLangChain4j一个 Tool查订单一个 Agent一个接口测试选项 4我可以帮你整理成一份学习笔记版大纲适合你保存和复习。如果你愿意我建议下一步我直接给你做“Agents 教程逐节精讲 Spring Boot 实战映射”你只要回复一句继续按章节详细讲或者继续给我上 Spring Boot Demo