同一需求三套写法用 Spring AI、LangChain4j、AgentScope Java 各实现一个带工具调用的 RAG 助手实战对比本文是「Java 大模型框架专题」系列第 5 篇实战收尾篇。全系列 5 篇建议按序阅读[总纲] 2026 Java 大模型框架选型终极指南Spring AI vs LangChain4j vs AgentScope Java 深度横评[深度] Spring AI 2.0 深度解析[深度] LangChain4j 深度解析[深度] AgentScope Java 深度解析[实战]同一需求三套写法本篇发布后请把每行标题替换为对应文章的超链接形成专题矩阵互导闭环一、需求定义一个技术问答助手前四篇都在讲是什么、怎么选。这篇反过来用一个真实需求把三家拉出来遛一遛。需求一个技术问答助手要求用户问一个技术问题先从知识库检索相关文档RAG需要时能调用工具比如查当前时间以流式方式输出带依据的回答。说明以下代码为示意实现突出各框架的编程范式与代码量差异具体 API 以官方文档为准文末附链接。二、Spring AI 2.0 实现// 配置RAG 检索器挂进 Advisor 链ConfigurationclassAiConfig{BeanChatClientchatClient(ChatClient.Builderbuilder,VectorStorestore){returnbuilder.defaultAdvisors(QuestionAnswerAdvisor.builder(store).build()).build();}}// 工具Tool 声明被 ToolCallingAdvisor 自动发现ComponentclassTimeTools{Tool(description返回当前 UTC 时间)Stringnow(){returnInstant.now().toString();}}RestControllerclassAssistantController{privatefinalChatClientchatClient;AssistantController(ChatClient.Builderbuilder){this.chatClientbuilder.build();}GetMapping(value/ask,producesMediaType.TEXT_EVENT_STREAM_VALUE)FluxStringask(RequestParamStringq){returnchatClient.prompt().system(你是技术问答助手优先依据检索到的上下文回答).user(q).stream().content();// 流式输出}}特点命令式 FluentRAG 靠QuestionAnswerAdvisor挂载工具靠Tool自动发现流式返回FluxString。三、LangChain4j 实现interfaceAssistant{SystemMessage(你是技术问答助手优先依据检索到的上下文回答)FluxStringanswer(UserMessageStringquestion);// 流式}// 检索器ContentRetrieverretrieverEmbeddingStoreContentRetriever.builder().embeddingStore(store)// pgvector / InMemory 等.embeddingModel(embeddingModel).maxResults(3).build();// 工具classTimeTools{Tool(返回当前 UTC 时间)Stringnow(){returnInstant.now().toString();}}// 装配AssistantassistantAiServices.builder(Assistant.class).chatLanguageModel(model).contentRetriever(retriever)// 自动把检索结果注入上下文.tools(newTimeTools()).build();FluxStringanswerassistant.answer(Spring AI 2.0 需要哪个 Boot 版本);特点声明式AiServiceRAG 靠ContentRetriever自动注入工具靠Tool注入流式靠方法返回类型Flux自动切换。四、AgentScope Java 实现// 把检索知识库封装成一个工具交给 Agent 自主调用classKnowledgeTools{Tool(在技术知识库中检索相关文档)Stringsearch(ToolParamStringquery){returnvectorSearch(query);}}// 用 HarnessAgent 承载生产级 Agent长期记忆 / 会话持久化 / 沙箱HarnessAgentassistantHarnessAgent.builder().name(技术问答助手).model(model)// Qwen / OpenAI / Claude / Gemini….tools(newKnowledgeTools(),newTimeTools()).build();Responserespassistant.run(Spring AI 2.0 需要哪个 Boot 版本);特点Agent 编排式RAG 不是内建抽象而是封装成一个Tool让 Agent 自主决定何时调用用HarnessAgent直接获得记忆、持久化、沙箱能力。五、三份代码并排对比维度Spring AILangChain4jAgentScope Java代码风格命令式 Fluent声明式接口Agent 编排式RAG 方式QuestionAnswerAdvisorContentRetriever自动注入Tool封装检索Agent 自主调工具接入ToolBeanTool注入ToolToolParam流式FluxStringFluxString返回类型即语义事件系统32 类事件心智模型“给 Spring 服务加 AI 能力”“把 AI 服务当接口实现”“编排一个会自己干活的 Agent”额外白拿观测/自动配置记忆/护栏/非阻塞记忆/持久化/沙箱/HITL读法三者都能完成这个需求但**舒服程度取决于你的心智模型**——Spring 团队觉得第一列最顺Quarkus/纯 Java 团队觉得第二列最顺做多智能体的人觉得第三列才是正解。六、真实跑起来会遇到什么坑说明规避Boot 版本Spring AI 2.0 跑不了 Boot 3.x迁 Boot 4或先用 LangChain4j 双 Starter依赖数量LangChain4j 模块多容易引错按需引别一把梭*心智成本AgentScope 抽象高Demo 与生产的 API 不同先 ReActAgent 跑通再上 HarnessAgentRAG 效果三家都依赖检索质量上限切块策略 相似度阈值是真正的胜负手七、结论回到系列第 1 篇的那句话三个框架不在同一层。做单体智能本场景就是→Spring AISpring 栈 / Boot 4或LangChain4j跨框架 / 生态最全做多智能体自治系统→AgentScope Java。这个技术问答助手恰好是单体智能的典型所以Spring AI 与 LangChain4j 是更贴合的答案但如果你要把它升级成研究-写作-评审分工的 AI 团队AgentScope 的HarnessAgent 子智能体编排就是更优解。你正在做的项目是单体智能还是多智能体协作评论区聊聊我帮你对号入座。系列矩阵导航 [第 1 篇·总纲] 三框架选型深度横评含分层定位图 决策树) [第 2 篇·深度] Spring AI 2.0 深度解析 [第 3 篇·深度] LangChain4j 深度解析 [第 4 篇·深度] AgentScope Java 深度解析本文数据截至 2026-11-02代码为示意实现API 细节分别以 Spring AI、LangChain4j、AgentScope Java 官方文档为准。
企业数字化 ERP 产品动态
相关推荐
小白也能学会!从零搭建AI Agent,解锁高薪职业密码(收藏版) 本文介绍了如何从零搭建AI Agent,并详细阐述了Agent的概念、搭建步骤、所需技术基础及职业前景。通过低代码平台,即使是小白也能快速上手,掌握这一未来热门技能,开启高薪职业道路。
上个月一个做程序员的朋友跟我炫耀他搭建的AI A… · 2026/11/7 4:44:22
五梁春,喝着不烧心 五粮春是五粮液旗下经典浓香品牌,自 1995 年问世以来,扎根宜宾核心产区,承袭五粮酿造古法,成为无数酒友心中兼顾体面与口感的佳酿。酿酒讲究天时地利,宜宾独特的微气候、适宜的微生物群落,搭配岷江古河道的… · 2026/11/7 17:28:01
电工证 全国通用吗模拟考试题库 电工证全国通用吗?工地太忙根本没时间复习考试怎么破?值不值得考? 工地太忙根本没时间复习考试,很多电工朋友都面临这个问题,特别是像洛阳涧西区这样项目密集的区域,电工证成了刚需,但证书到底有没有全国通用?值不值得考?这事儿我太熟了,今天就给你… · 2026/11/8 5:29:29
电工作业培训档案官方回应:报名别被中介坑,这些细节要记牢 电工作业培训档案官方回应:报名别被中介坑,这些细节要记牢 不知道去哪报名怕被中介坑,这几乎是所有想考电工作业证的电工都遇到过的问题。最近,不少河南安阳的劳务班组负责人都在问:“电工作业培训档案怎么弄?”“官方回应有没有?”其实,… · 2026/11/8 5:29:29
电工证考要学什么 菜鸟也能考 在哪考全攻略 电工证考要学什么 菜鸟也能考 在哪考全攻略 你是不是也担心学历不高报不了电工证?别急,我之前就是个初中毕业的建筑工人,现在在濮阳干电工,每月拿8000多,靠的就是这张证。电工证考试其实门槛并不高,关键是你得知道 在哪考 ,还有… · 2026/11/8 5:29:29
井下哪里可以查电工证?2026河南最新政策下如何避免交了钱考不过 井下哪里可以查电工证?2026河南最新政策下如何避免交了钱考不过 怕考不过白交培训费?河南2026年特种作业电工证政策大变,很多人还没搞懂新规就报名了,结果钱花了,证没拿到,还耽误了工作机会。别急,今天我用济源市一位学员的真实案例,带你一步… · 2026/11/8 5:29:29
考电工证没用怎么考 电工证考了没用?郑州报考避坑指南全攻略 怕考不过白交培训费?这年头,考个电工证还没用,听起来像是个大坑。尤其是郑州这边,特种作业证报考门槛高、费用贵,还不一定能一次性通过,让人头疼。如果你正打算考电工证,或者正在犹豫要不要考,这篇【郑州报考… · 2026/11/8 5:28:29
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/8 1:18:25