
一文入门Spring AI 与 LangChain4j 核心概念及重要 API一、概述Spring AI 和 LangChain4j 是 Java 生态中两个主流的 AI 应用开发框架。Spring AI 由 Spring 官方团队维护深度融入 Spring Boot 生态强调约定优于配置和企业级工程实践LangChain4j 是 LangChain 思想的 Java 实现以声明式接口AiServices为核心提供轻量、灵活的 AI 编排能力。两者都覆盖了模型调用、对话记忆、工具调用、RAG 检索增强等核心场景但设计哲学和 API 风格有明显差异。二、Spring AI2.1 整体架构Spring AI 采用分层架构设计自上而下为应用调用层 → ChatClient链式客户端→ Advisors拦截器链→ ChatModel模型抽象→ 具体 ProviderOpenAI / Ollama / 通义千问等。横向还包含 VectorStore向量存储、Document Pipeline文档管线、Tool Registry工具注册和 Observability可观测性等模块。2.2 核心概念ChatModel模型抽象层ChatModel 是底层模型调用接口屏蔽不同厂商 API 的差异。核心方法为call(Prompt)同步调用和stream(Prompt)流式调用。相关对象包括Prompt封装消息列表、SystemMessage / UserMessage / AssistantMessage消息类型、ChatResponse响应结果与元数据、ChatOptions温度、topP、maxTokens 等参数。ChatClient业务层封装ChatClient 是面向业务开发的上层封装提供流式 Builder API依赖 ChatModel 但极大简化了调用代码。支持同步/流式调用、结构化输出自动映射 POJO、多轮对话、工具注册和 Advisor 拦截。Advisors可组合拦截器Advisor 是 Spring AI 的 AOP 式增强机制可在请求前注入历史消息、检索结果也可在响应后做过滤、日志、审计。内置 Advisor 包括MessageChatMemoryAdvisor对话记忆、RetrievalAugmentationAdvisorRAG 检索增强、SimpleLoggerAdvisor日志、PromptTemplateAdvisor模板处理。也支持自定义 Advisor 实现鉴权、限流、敏感词过滤等。VectorStore 与 RAGRAG 流程分为离线索引和在线检索两阶段。离线阶段通过 DocumentReader 读取文档 → TextSplitter 切分 → EmbeddingModel 向量化 → VectorStore 写入。在线阶段由 RetrievalAugmentationAdvisor 自动召回相关片段并拼入 Prompt。Spring AI 内置了 Redis、PgVector、Milvus、Elasticsearch 等多种 VectorStore 实现。Function Calling / ToolsSpring AI 支持声明式工具注册。通过Tool注解或编程式回调暴露本地函数框架自动推导参数 JSON Schema 并传递给模型由模型决定是否调用。调用结果自动回传模型生成最终回答。MCPModel Context ProtocolSpring AI 2.0 原生支持 MCP 协议可接入外部 MCP Server文件系统、数据库、代码平台等使对话系统具备可扩展的外部工具能力。2.3 重要 API 示例基础同步调用AutowiredprivateChatClientchatClient;StringanswerchatClient.prompt().system(你是一位Java技术专家).user(解释什么是Spring IoC).call().content();流式输出FluxStringstreamchatClient.prompt().user(写一首关于春天的诗).stream().content();结构化输出自动映射 POJOrecordCodeReview(Stringlanguage,ListStringissues,intscore){}CodeReviewreviewchatClient.prompt().user(审查这段代码: code).call().entity(CodeReview.class);多轮对话记忆ChatMemorymemorynewInMemoryChatMemory();StringreplychatClient.prompt().advisors(newMessageChatMemoryAdvisor(memory)).user(我刚才问了什么).call().content();工具调用ComponentpublicclassWeatherTools{Tool(description查询指定城市的天气)publicStringgetWeather(Stringcity){returnweatherService.query(city);}}StringreplychatClient.prompt().tools(weatherTools).user(北京今天天气怎么样).call().content();ChatClient Builder 配置ChatClientclientChatClient.builder(chatModel).defaultSystem(你是智能客服).defaultAdvisors(newMessageChatMemoryAdvisor(memory)).defaultOptions(ChatOptions.builder().temperature(0.7).build()).build();三、LangChain4j3.1 整体架构LangChain4j 的核心设计围绕 AiServices 展开。它通过 JDK 动态代理将 Java 接口方法转化为对大模型的调用内部自动处理消息组装、记忆管理、工具调用和结果解析。整体架构可概括为接口定义声明式→ AiServices 代理 → ChatLanguageModel → 具体 Provider。3.2 核心概念AiServices声明式 AI 服务AiServices 是 LangChain4j 最核心的抽象。开发者只需定义一个 Java 接口用注解描述提示词和参数绑定框架自动生成代理实现。调用接口方法时内部会解析注解、生成消息、读取记忆、携带工具说明、请求模型、执行工具回传、写入记忆并返回结果。ChatLanguageModel模型接口等价于 Spring AI 的 ChatModel是与大模型交互的底层接口。支持generate()同步调用和generate()流式调用返回 TokenStream。注解体系LangChain4j 提供丰富的注解用于声明式配置SystemMessage设定系统提示词、UserMessage标记用户输入、V将方法参数填入提示词模板变量、MemoryId区分多用户会话。ChatMemory对话记忆用于保存多轮对话上下文。MessageWindowChatMemory按消息数量限制窗口大小chatMemoryProvider可按MemoryId为不同用户创建独立记忆空间。Tools工具调用通过Tool注解描述本地方法框架自动生成工具说明JSON Schema传递给模型。模型返回工具调用请求由框架执行结果再次发送给模型生成最终回答。EmbeddingModel / EmbeddingStore / ContentRetrieverRAG 组件RAG 流程为DocumentLoader 加载文档 → DocumentSplitter 切分 → EmbeddingModel 向量化 → EmbeddingStore 存储 → ContentRetriever 检索。查询时由 ContentRetriever 召回相关片段注入 Prompt 后交给模型生成回答。3.3 重要 API 示例基础 AiServices 定义与调用interfaceAssistant{SystemMessage(你是一位友好的AI助手)Stringchat(StringuserMessage);}AssistantassistantAiServices.create(Assistant.class,chatModel);Stringanswerassistant.chat(你好介绍一下自己);模板变量绑定interfaceTranslator{SystemMessage(你是专业翻译将内容翻译为{{language}})Stringtranslate(V(language)Stringlang,UserMessageStringtext);}TranslatortranslatorAiServices.create(Translator.class,chatModel);Stringresulttranslator.translate(英文,今天天气真好);带记忆的多用户对话interfaceCustomerService{Stringchat(MemoryIdLonguserId,UserMessageStringmessage);}CustomerServiceserviceAiServices.builder(CustomerService.class).chatLanguageModel(chatModel).chatMemoryProvider(userId-MessageWindowChatMemory.withMaxMessages(20)).build();Stringreplyservice.chat(1001L,我的订单到哪了);工具调用classCalculatorTools{Tool(计算两个数的乘积)doublemultiply(doublea,doubleb){returna*b;}}interfaceMathAssistant{Stringsolve(Stringquestion);}MathAssistantassistantAiServices.builder(MathAssistant.class).chatLanguageModel(chatModel).tools(newCalculatorTools()).chatMemory(MessageWindowChatMemory.withMaxMessages(10)).build();Stringanswerassistant.solve(123乘以456等于多少);结构化输出recordSentimentResult(Stringsentiment,doubleconfidence){}interfaceAnalyzer{UserMessage(分析以下文本的情感倾向: {{text}})SentimentResultanalyze(V(text)Stringtext);}AnalyzeranalyzerAiServices.create(Analyzer.class,chatModel);SentimentResultresultanalyzer.analyze(这个产品太棒了);RAG 检索增强// 离线索引EmbeddingModelembeddingModelnewAllMiniLmL6V2EmbeddingModel();EmbeddingStoreTextSegmentstorenewInMemoryEmbeddingStore();DocumentdocFileSystemDocumentLoader.loadDocument(Path.of(knowledge.pdf));ListTextSegmentsegmentsnewDocumentByParagraphSplitter(300,50).split(doc);store.addAll(embeddingModel.embedAll(segments).content(),segments);// 在线检索ContentRetrieverretrieverEmbeddingStoreContentRetriever.builder().embeddingStore(store).embeddingModel(embeddingModel).maxResults(5).minScore(0.7).build();interfaceKnowledgeAssistant{Stringanswer(Stringquestion);}KnowledgeAssistantassistantAiServices.builder(KnowledgeAssistant.class).chatLanguageModel(chatModel).contentRetriever(retriever).build();Stringanswerassistant.answer(公司的退货政策是什么);四、对比与选型维度Spring AILangChain4j生态定位Spring Boot 官方组件自动配置、Starter 依赖独立轻量框架不绑定 Spring也有 Spring Boot StarterAPI 风格链式 BuilderChatClient.prompt().user().call()声明式接口 注解AiServices 代理拦截/增强AdvisorsAOP 式拦截器链无显式拦截器通过 AiServices 内部管线处理工具调用Tool 注解 编程式注册Tool 注解框架自动推导 SchemaRAGVectorStore RetrievalAugmentationAdvisorEmbeddingStore ContentRetriever结构化输出.entity(Class) 自动映射接口返回值直接声明类型MCP 支持2.0 原生支持社区扩展支持可观测性内置 Micrometer 指标/追踪需自行集成适用场景已有 Spring Boot 技术栈的企业项目轻量级 AI 服务、快速原型、非 Spring 项目选型建议如果项目已基于 Spring Boot优先选择 Spring AI可享受自动配置、依赖注入、可观测性等生态红利如果追求极简代码量、声明式开发体验或项目不依赖 SpringLangChain4j 的 AiServices 模式更为直观。两者也可混用——例如在 Spring Boot 项目中用 LangChain4j 的 AiServices 定义接口底层复用 Spring AI 的模型连接。五、参考来源Spring AI 2.0 深度拆解Spring AI ChatModel 与 ChatClient 完整核心解析LangChain4j AiServices 机制详解Java 大模型框架全面对比LangChain4j 实战指南Spring AIJava 生态的生成式 AI 应用框架2026 最新版