Spring AI:Java 生态的生成式 AI 应用框架(2026 最新版)

📅 2026/6/30 11:09:04
Spring AI:Java 生态的生成式 AI 应用框架(2026 最新版)
更新日期2026 年 6 月 29 日适用版本Spring AI 1.1.4 / 2.0-M4一、Spring AI 是什么Spring AI 是 Spring 官方推出的、专为构建人工智能尤其是生成式 AI应用而设计的框架旨在将 Spring 生态多年积累的简洁性、模块化设计和 POJO 编程模型带入 AI 工程领域。核心定位它的核心使命可以概括为一句话将企业的数据和 API 与 AI 模型连接起来把所有主流 AI 模型的 API 统一成一致的高层抽象开发者只需学会一套接口就能调用 OpenAI、通义千问、DeepSeek、Ollama 等各种模型切换模型只需改配置文件。需要特别强调的是Spring AI 并非 Python 生态中 LangChain、LlamaIndex 等项目的直接移植而是借鉴了它们的设计思想专门为 Java/Spring 量身定制。版本演进时间线版本时间里程碑意义1.0 GA2025.05.20首个正式版稳定 API标志 Spring 生态全面拥抱 AI1.1 GA2025.11整合 MCP850 项改进241 个 bug 修复1.1.32026.0319 个新特性升级至 Spring Boot 3.5.111.1.42026.05运行时动态禁用结构化输出稳定性优化2.0.0-M42026下一代版本开发中兼容 Spring Framework 7.x / Java 21在经历了八个里程碑版本M1~M8的打磨后Spring AI 1.0 正式版于 2025 年 5 月 20 日发布仅仅半年后的 2025 年 11 月1.1 版本正式 GA进入 2026 年1.1.33 月和 1.1.4 相继发布同时 2.0.0 已推进到 M4 里程碑版本预计不久将正式 GA。至此Spring AI 已成为 Java 开发者构建企业级 AI 应用的首选框架。二、核心特性概览2026 年现状Spring AI 的能力围绕可移植性和易用性两大设计原则展开截至 2026 年 6 月主要特性包括能力矩阵能力类型支持的功能代表模型/提供商聊天完成对话、代码生成、内容创作OpenAI、通义千问、DeepSeek、Claude嵌入文本向量化、语义搜索同上多模态图像识别、视频理解、音频转录GPT-4o、Qwen-VL函数调用外部API集成、工具调用主流模型均支持向量数据库相似性检索、RAGPGVector、Milvus、Redis、ChromaMCP模型上下文协议、外部工具集成Spring AI 原生支持1.1 起重磅特性关键特性详解ChatClient API框架的核心入口提供流式 DSL 风格的流畅 API支持同步/流式调用、Advisor 拦截、自动会话记忆是官方推荐的首选交互方式。可移植的服务抽象统一接口让你可以一致地访问各类聊天模型、嵌入模型、转录模型、图像模型切换模型供应商时业务代码几乎不变。MCPModel Context Protocol集成这是 1.1 版本最具显著特色的功能集改进提供了基于注解的编程模型McpTool、McpResource、McpPrompt支持 HTTP/gRPC/STDIO 多种传输方式实现AI 可调用你的业务能力。Tool Calling工具调用通过Tool和ToolParam注解声明式定义工具模型可自动判断何时调用支持自定义 JSON Schema、动态增强工具 Schema、流式响应等。向量存储集成支持 PGVector、Milvus、Redis、Chroma、Neo4j、Azure AI Search 等主流向量数据库并支持自定义过滤表达式。RAG 模块化库通过QuestionAnswerAdvisor开箱即用地实现检索增强生成与 Spring Data 生态协同。Agent 工程2026 年全面拥抱 Agent 工程通过 ReactAgent、Graph 工作流构建多智能体系统可将 Multi-Agent 开发周期从数天压缩到数小时。Spring Boot 深度集成在 Spring Boot 3.4 中spring-ai模块已深度嵌入核心启动流程一个标准的 Spring Boot 应用天然具备调用 LLM、处理 Embedding 和构建 Agent 的能力同时支持 GraalVM 原生镜像。Prompt Caching提示缓存1.1 引入的降本特性可大幅降低 API 调用成本。三、代码实现下面从最基础的对话到 RAG、工具调用、多模态、Agent展示基于 2026 年最新 API 的典型用法。3.1 环境准备pom.xml 配置repositories repository idspring-milestones/id nameSpring Milestones/name urlhttps://repo.spring.io/milestone/url /repository /repositories ​ properties spring-ai.version1.1.4/spring-ai.version /properties ​ dependencyManagement dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-bom/artifactId version${spring-ai.version}/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement ​ dependencies !-- Web 支持 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency ​ !-- 以 OpenAI 为例也可换成 deepseek、ollama、dashscope 等 starter -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-openai/artifactId /dependency /dependencies注意1.1.x 版本的 jar 包托管在 Spring Milestones 仓库中必须添加该仓库地址。application.yml 配置spring: ai: openai: api-key: ${OPENAI_API_KEY} chat: options: model: gpt-4o temperature: 0.7对于国内开发者也可以使用阿里云通义千问spring: ai: dashscope: api-key: ${AI_DASHSCOPE_API_KEY}如果想本地免费体验可以使用 Ollamaspring: ai: ollama: base-url: http://localhost:11434 chat: options: model: qwen2.5:latestdependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-ollama/artifactId /dependency3.2 基础对话与流式输出Spring AI 通过自动配置注入ChatClient.Builder可以设置默认系统提示词RestController RequestMapping(/api/ai) public class ChatController { ​ private final ChatClient chatClient; ​ public ChatController(ChatClient.Builder builder) { this.chatClient builder .defaultSystem(你是一个专业的Java技术专家) .build(); } ​ // 同步对话 GetMapping(/chat) public String chat(RequestParam String message) { return chatClient.prompt() .user(message) .call() .content(); } ​ // 流式输出打字机效果 GetMapping(value /stream, produces MediaType.TEXT_EVENT_STREAM_VALUE) public FluxString stream(RequestParam String message) { return chatClient.prompt() .user(message) .stream() .content(); } }ChatModel vs ChatClient 如何选择特性维度ChatModelChatClientAPI 复杂度高需手动构建 Prompt低流式 DSLAdvisor 支持❌ 不支持✅ 内置支持记忆管理需手动实现✅ 自动会话记忆流式输出需额外封装✅ 一行代码开启错误处理需自行捕获✅ 统一异常封装推荐度⭐⭐ 特殊场景使用⭐⭐⭐⭐⭐ 首选方案3.3 多轮对话让 AI 拥有记忆通过 Advisor 机制实现会话记忆MessageChatMemoryAdvisor会自动管理对话历史Service public class ChatMemoryService { ​ private final ChatClient chatClient; ​ public ChatMemoryService(ChatClient.Builder builder) { ChatMemory chatMemory new InMemoryChatMemory(); this.chatClient builder .defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory)) .build(); } ​ public String chat(String sessionId, String message) { return chatClient.prompt() .user(message) .advisors(a - a.param(chat_memory_conversation_id, sessionId)) .call() .content(); } }3.4 Tool Calling让 AI 调用外部 API2026 年的推荐写法使用Tool注解比早期的DescriptionFunction方式更简洁直观Component public class WeatherTools { ​ Tool(description 根据城市名称查询当前天气) public String getWeather(ToolParam(description 城市名称如北京) String city) { MapString, String weatherMap Map.of( 北京, 晴天25°C北风2级, 上海, 多云22°C东风3级, 深圳, 阵雨28°C南风2级 ); return weatherMap.getOrDefault(city, 天气数据暂不可用); } }在 ChatClient 中注册工具RestController RequestMapping(/api/tools) public class ToolController { ​ private final ChatClient chatClient; ​ public ToolController(ChatClient.Builder builder) { this.chatClient builder .defaultSystem(你是一个专业的天气助手) .build(); } ​ GetMapping(/weather) public String askWeather(RequestParam String question) { return chatClient.prompt() .user(question) .tools(new WeatherTools()) .call() .content(); } }当用户问北京天气怎么样时模型会自动决定调用getWeather方法填好参数拿到返回结果后再组织成自然语言回复。1.1.3 新增增强ToolCallAdvisor支持流式响应函数调用场景下的实时交互体验更好可运行时动态增强工具 Schema新增conversationHistoryEnabled选项控制工具调用时是否带上对话历史3.5 RAG检索增强生成以 PGVector 为向量数据库为例QuestionAnswerAdvisor会自动完成向量检索并增强 Prompt添加 RAG 依赖dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-pgvector-store/artifactId /dependency配置向量数据库spring: datasource: url: jdbc:postgresql://localhost:5432/vectordb username: postgres password: password ai: vectorstore: pgvector: index-type: HNSW distance-type: COSINE_DISTANCE dimensions: 1536实现 RAG 问答Service public class RagService { ​ Autowired private VectorStore vectorStore; ​ Autowired private ChatClient chatClient; ​ // 1. 导入文档读取 → 切分 → 嵌入 → 写入向量库 public void ingest(Resource doc) { DocumentReader reader new TextReader(doc); ListDocument docs new TokenTextSplitter().apply(reader.get()); vectorStore.add(docs); // 自动调用 EmbeddingModel 向量化 } ​ // 2. 问答检索相关片段 → 拼入提示 → 调用模型 public String ask(String question) { // QuestionAnswerAdvisor 会自动完成向量检索并增强 Prompt return chatClient.prompt() .user(question) .advisors(new QuestionAnswerAdvisor(vectorStore)) .call() .content(); } }1.1.3 对向量检索的多项增强Neo4j Vector Store 支持自定义过滤表达式转换器SimpleVectorStore 支持按过滤条件删除Azure Vector Store 支持配置字段名兼容已有索引TokenTextSplitter 支持自定义标点符号3.6 结构化输出POJO 映射生成式 AI 经常返回自然语言但业务系统需要结构化数据。Spring AI 支持把模型输出直接映射为 Java 对象record FlightInfo(String flightNo, String departure, String arrival) {} ​ GetMapping(/flight) public FlightInfo extractFlight(RequestParam String text) { return chatClient.prompt() .user(u - u.text(从以下文本中提取航班信息{text}).param(text, text)) .call() .entity(FlightInfo.class); // 自动按 JSON 解析为 POJO }底层借助 Jackson 的ObjectMapper完成类型转换省去了手写解析逻辑。1.1.4 新增运行时可动态禁用原生结构化输出增强了配置和使用场景的灵活性。3.7 多模态让 AI看懂图片多模态 AI 能同时理解文本和图像。以 GPT-4o 为例Spring AI 支持将图片与文本一起发送给模型Service public class MultimodalService { ​ private final ChatClient chatClient; ​ public MultimodalService(ChatClient.Builder builder) { this.chatClient builder.build(); } ​ public String analyzeReceipt(byte[] imageBytes) { return chatClient.prompt() .user(userSpec - userSpec .text(请分析这张收据图片提取商户名称、消费总额和明细列表以JSON格式返回) .media(MimeTypeUtils.IMAGE_JPEG, new ByteArrayResource(imageBytes)) ) .call() .content(); } }3.8 MCP 集成连接外部工具生态MCPModel Context Protocol是连接 AI 模型与外部工具的标准化协议Spring AI 1.1 提供了完整的 MCP 集成支持这是 1.1 版本最显著的特色功能。添加 MCP 依赖dependency groupIdorg.springframework.experimental/groupId artifactIdspring-ai-mcp/artifactId version1.0.0/version /dependency基于注解的 MCP 编程模型Service public class WeatherService { ​ McpTool(description Get current weather for a location) public String getCurrentWeather(String location) { return Sunny, 22°C in location; } ​ McpResource(description Database schema of users table) public String getDatabaseSchema() { return CREATE TABLE users ( id BIGINT, name VARCHAR(100), email VARCHAR(100) );; } ​ McpPrompt(template Write a SQL query to {{intent}}) public String generateSqlQuery(PromptVariable(intent) String userIntent) { return ; // 实际由模板渲染 } }启动后MCP 服务自动注册这些能力供 AI Agent 调用支持 HTTP/gRPC/STDIO 多种传输方式。将 MCP 工具注入 ChatClientConfiguration public class McpConfig { ​ Bean public McpClient mcpClient() { var stdioParams ServerParameters.builder(npx) .args(-y, modelcontextprotocol/server-brave-search) .addEnvVar(BRAVE_API_KEY, System.getenv(BRAVE_API_KEY)) .build(); ​ return McpClient.using(new StdioClientTransport(stdioParams)).sync(); } ​ Bean public ChatClient chatClient(ChatClient.Builder builder, McpClient mcpClient) { var init mcpClient.initialize(); ​ return builder .defaultFunctions(mcpClient.listTools().tools().stream() .map(tool - new McpFunctionCallback(mcpClient, tool)) .toArray(McpFunctionCallback[]::new)) .build(); } }3.9 Agent 智能体开发Spring AI Alibaba 在 1.1.2.x 版本中提供了完整的 Agent 开发能力基于 Graph 工作流和 Agent Framework 可将 Multi-Agent 开发周期从数天压缩到数小时。添加依赖dependency groupIdcom.alibaba.cloud.ai/groupId artifactIdspring-ai-alibaba-starter-dashscope/artifactId version1.1.2.0/version /dependency创建 ReactAgentComponent public class WeatherAgent { ​ private final ReactAgent agent; ​ public WeatherAgent(ChatModel chatModel, WeatherTools weatherTools) { this.agent ReactAgent.builder() .name(weather_assistant) .model(chatModel) .tools(weatherTools) .systemPrompt(你是一个专业的天气助手帮用户查询天气信息) .build(); } ​ public String ask(String question) { return agent.call(question); } }四、Spring AI 的好处4.1 与 Spring 生态零摩擦这是 Spring AI 最核心的优势。对于已经使用 Spring Boot 的团队接入 AI 能力就像新增一个 starter 一样自然。在 Spring Boot 3.4 中spring-ai模块已深度嵌入核心启动流程依赖注入、自动配置、配置中心、Spring Security 鉴权、Spring AOP 监控、Actuator 健康检查等现成能力可直接复用无需为 AI 应用单独搭建一套运维体系。4.2 可移植的模型抽象统一的ChatClient、EmbeddingModel、VectorStore接口让你在 OpenAI、Anthropic、Azure、Ollama、DeepSeek、通义千问等模型之间切换时业务代码几乎不变——多数情况只改配置文件。这对规避供应商锁定、做多云部署非常关键。4.3 低学习成本、高开发效率熟悉 Spring 的开发者几乎可以开箱即用。ChatClient提供流式 DSL实现一个带记忆和工具调用的对话接口只需十几行代码。对比需要手动 wiring 各组件的方案开发效率显著提升。4.4 企业级就绪框架原生提供可观测性模型调用链路追踪、令牌用量统计、工具调用、RAG 流水线、Prompt Caching 降本、评估框架等直面企业最关心的幻觉控制和安全合规问题。4.5 GraalVM 原生镜像支持Spring Boot 3.4 对 GraalVM 原生镜像的支持达到新高度Spring AI 应用可以编译为原生镜像实现毫秒级启动和更低内存占用非常适合 Serverless 和云原生部署场景。4.6 模块化设计按需引入功能模块避免依赖臃肿。你可以只用 ChatClient 做简单对话也可以逐步叠加 RAG、Tool Calling、MCP、Agent 等能力。五、与 LangChain4j 的对比2026 版LangChain4j 是 Java 生态中另一个主流 AI 框架灵感来自 Python 的 LangChain、Haystack 和 LlamaIndex 的融合。截至 2026 年LangChain4j 已发布 1.0 GA 正式版最新迭代到 1.11.0其 PgVector 模块原生支持了混合检索Hybrid Search将关键词检索与向量语义检索融合以提升 RAG 准确率。两者设计哲学不同Spring AI 强调约定优于配置深度集成 Spring 生态LangChain4j 侧重模块化与显式组合提供高度灵活性。核心能力对比表维度Spring AI1.1.4 / 2.0-M4LangChain4j1.11设计哲学约定优于配置深度集成 Spring模块化显式组合高度灵活Spring 生态整合极强深度嵌入 Spring Boot 核心启动流程良好需手工 wiring 多数组件学习曲线熟悉 Spring 则近乎零摩擦否则偏陡相对平缓对非 Spring 项目友好核心抽象ChatClient、VectorStore、AdvisorChatLanguageModel、Tools、ChatMemory、Chains模型支持主流厂商齐全多模态原生支持20 供应商含 ChatGLM 等切换更灵活工具调用Tool注解声明式支持流式、动态 SchemaTool注解显式定义控制粒度更细MCP 支持原生集成注解编程模型1.1 起重磅特性有集成支持但非核心卖点RAG内置模块化 RAG 库Advisor 自动检索ConversationalRetrievalChainPgVector 原生混合检索多步推理/AgentReactAgent Graph 工作流2026 新增原生支持 Chains/Agents/Memory成熟度高企业级特性原生安全/监控/熔断/Prompt Caching/可观测性需自行实现或整合原生镜像支持 GraalVMSpring Boot 3.4需额外配置成熟度依托 Spring 社区1.1 GA 后稳定成熟1.0 GA 后稳定性提升社区活跃各自更适合的场景优先选 Spring AI✅ 现有 Spring Boot 项目要扩展 AI 功能✅ 需要 MCP 工具生态集成✅ 需要多模态或复杂 RAG 流水线✅ 要求与企业级安全、监控、配置中心深度集成✅ 追求 GraalVM 原生镜像和云原生部署✅ 追求长期稳定演进的企业级应用优先选 LangChain4j✅ 快速原型开发或模型实验✅ 需要复杂 Agent 调度、工具链组合、多步推理且对控制粒度要求高✅ 需要小众模型如 ChatGLM或多云部署✅ 项目本身不在 Spring 生态内如 Quarkus✅ 需要原生混合检索等特定 RAG 能力值得一提的是两者并非互斥——可以在 Spring 应用中用 Spring AI 做基础模型调用和向量检索再引入 LangChain4j 处理更复杂的链式任务或 Agent 逻辑各取所长。六、优缺点总结优点优势说明与 Spring Boot 深度集成遵循 Spring 开发者熟悉的配置和开发习惯模型切换零成本统一 API改配置即可切换不同模型企业级特性完备支持事务、安全、监控等 Spring 生态能力模块化设计按需引入功能模块避免依赖臃肿官方文档完善Spring 团队持续维护1.0 GA 后稳定可靠MCP 原生支持1.1 起整合 Model Context Protocol连接外部工具生态Agent 工程就绪ReactAgent Graph 工作流支持多智能体开发GraalVM 支持原生镜像编译适合云原生/Serverless 场景缺点劣势说明学习曲线需理解 ChatModel、ChatClient、Advisor 等抽象概念Java 版本要求需 JDK 172.0 需 JDK 21生态相对年轻相比 Python 的 LangChain社区规模仍需发展复杂 Agent 场景在自定义 Agent 调度、工具链组合等复杂场景可能受限适用场景Spring Boot / Cloud 技术栈的企业企业级 RAG 知识库系统AI 智能客服、内容生成应用需要多模型切换或国内模型接入的项目需要 MCP 工具生态集成的 Agent 应用追求云原生/GraalVM 原生镜像的高性能场景七、选型小结2026 年的 Java AI 生态已经相当成熟。Spring AI 凭借与 Spring Boot 的深度集成、MCP 生态、Agent 工程和 GraalVM 支持已成为企业级 Java AI 应用的主流选择LangChain4j 则以灵活性和复杂智能体构建能力见长。没有绝对更好的框架关键看项目上下文如果你的团队已深度使用Spring BootSpring AI几乎是不二之选如果你更看重灵活性、复杂智能体的构建能力或项目脱离 Spring 体系LangChain4j会让你更得心应手理解两者的设计哲学差异比纠结哪个更强更有价值——它们解决的是 Java AI 落地的不同侧面。附录快速上手清单最小可用项目3 步搞定创建 Spring Boot 3.4 项目添加 BOM OpenAI/Ollama starter配置 API Key 或 Ollama 地址注入 ChatClient.Builder写一个/chat接口推荐学习路径基础对话ChatClient ↓ 结构化输出entity() ↓ 多轮对话MessageChatMemoryAdvisor ↓ Tool CallingTool 注解 ↓ RAGQuestionAnswerAdvisor VectorStore ↓ 多模态media() 方法 ↓ MCP 集成McpTool / McpResource / McpPrompt ↓ Agent 开发ReactAgent Graph 工作流参考来源Spring AI 官方文档Spring AI 1.1 正式发布 - 博客园Spring AI 1.1.3 19个新特性 - 博客园Spring AI 1.1.4 发布 - SegmentFaultSpringAI入门指南 - 苏三说技术LangChain4j 官方文档LangChain4j 混合检索 - CSDN最后更新2026 年 6 月 29 日