Spring AI 2.0.0 GA Available Now
TL;DR · AI 摘要
Spring AI 2.0.0 GA 发布,改进了基础架构、支持 Spring Boot 4 和 Jackson 3,提升开发体验。
核心要点
- Spring AI 2.0.0 支持 Spring Boot 4.0 / 4.1 和 Spring Framework 7.0。
- 升级到 Jackson 3 提供了更强大的 JSON 序列化功能。
- 通过 JSpecify 注解实现 null-safety,减少运行时空指针异常。
结构提纲
按章节快速跳转。
Spring AI 2.0.0 正式发布,提供更稳定和一致的开发体验。
Spring AI 2.0.0 基于 Spring Boot 4 和 Spring Framework 7.0,提升了整体性能和一致性。
升级到 Jackson 3 提供了更强大的 JSON 序列化功能和自定义选项。
通过 JSpecify 注解实现 null-safety,减少运行时空指针异常。
选项和配置属性的处理方式进行了重构,提升代码的可维护性和一致性。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Spring AI 2.0.0 GA
- 改进的基础架构
- Spring Boot 4 支持
- Spring Framework 7.0 支持
- Jackson 3 支持
- JSON 序列化改进
- 自定义 JsonMapper
- Null-safety 改进
- JSpecify 注解
- 减少空指针异常
金句 / Highlights
值得收藏与分享的关键句。
Spring AI 2.0.0 基于 Spring Boot 4 和 Spring Framework 7.0,提升了整体性能和一致性。
升级到 Jackson 3 提供了更强大的 JSON 序列化功能和自定义选项。
通过 JSpecify 注解实现 null-safety,减少运行时空指针异常。
标题:Spring AI 2.0.0 GA 现已发布
URL 源:https://spring.io/blog/2026/06/12/spring-ai-2-0-0-GA-available-now
Markdown 内容: 代表团队以及所有做出贡献的人,我非常高兴地宣布 Spring AI 2.0.0 已经发布,并且现在可以从 Maven Central 获取!
[改进的基础](https://spring.io/blog/2026/06/12/spring-ai-2-0-0-GA-available-now#improved-foundations)
从早期开始,Spring AI 在功能、模型支持、贡献和用户数量方面都取得了非常快速的发展。这很棒且令人兴奋,但我们感到有必要在范围、质量和一致性方面设定新的基准,以便以可持续的方式推动项目的发展。因此,几个月前,我们退后一步,确定了我们希望改进的领域,主要是在设计和一致性方面,同时也考虑了来自问题和拉取请求的用户反馈。我们今天发布的这些新基础将显著改善开发人员的体验,使社区能够提供更高质量的贡献,并使集成我们路线图中已确定的未来功能变得更加容易。
Spring Boot 4 基线
Spring AI 2.0 是为与 Spring Boot 4.0 / 4.1 和 Spring Framework 7.0 一起使用而设计的,但它带来的好处远不止于升级依赖版本和修复兼容性问题。
Jackson 3
通过 从 Jackson 2 升级到 Jackson 3,JSON 序列化得到了显著改进。文档现在解释了 如何自定义默认的 `JsonMapper`,并引入了一个新的 `JsonHelper` 类,用于提供一个完全自定义的 JsonMapper。
空安全
遵循 Spring Boot 4 中的空安全应用程序 所描述的原则,Spring AI 代码库现在完全使用 JSpecify 注解进行标注。除了在运行时防止空指针异常并提供 Kotlin 风格的 API 外,它还允许在代码库中明确值是可选还是必填。
选项
在处理空安全的同时,还触发了对如何处理选项和配置属性的重大重构:
- 明确哪些选项是必填或可选
- 默认值现在在选项级别上一致地定义(而不是模型或配置属性)
- 选项通过构建器创建(而不是构造函数),并且一旦实例化后不可变
- 这些构建器现在提供了一致且无需反射的合并功能
- 选项和配置属性的解耦允许删除应用程序属性键中的人工
.options段,并修复了许多错误
最后,我们明确了在哪些情况下可以部分指定选项(通常通过一个选项构建器作为 ChatClient 默认选项的自定义器),以及在哪些情况下需要完全指定选项(ChatModel 级别)。总体而言,您会看到 Spring AI 2.0 更加倾向于使用 ChatClient 作为最常见面向用户的 API,而 ChatModel 则更像是一个更底层的构建模块。继续阅读以了解关于此的更多令人兴奋的消息。
更多关注
我们选择将 Spring AI 核心项目 的重点放在一组明确定义的开箱即用的聊天模型提供商上:
- OpenAI
- 从 3 个变体(Azure、HTTP、SDK)减少到 1 个(SDK)
- 可用于访问提供 OpenAI 兼容 API 的其他模型
- Anthropic
- 从 2 个变体(HTTP、SDK)减少到 1 个(SDK)
- 可用于访问提供 Anthropic 兼容 API 的其他模型,如 Minimax
- Amazon Bedrock
- Google GenAI
- 从 2 个实现(GenAI SDK、Vertex)减少到 1 个(GenAI SDK)
- Mistral AI
- DeepSeek
- Ollama
我们预计利用 OpenAI、Anthropic 和 Google 的供应商 SDK 将有助于 Spring AI 适应最新的模型 API 扩展和新功能。
现在,部分支持由相关供应商与 Spring AI 团队合作直接维护:
- OCI Generative AI(感谢 Oracle 的 Anders Swanson)
- Azure Cosmos DB(感谢 Microsoft 的 Theo van Kraay)
我们欢迎其他外部维护的模型的支持。
与社区更好的协作
Spring AI 的贡献速度持续加快,我们非常感激拥有如此活跃的社区,但我们同时也面临着整合这些贡献的挑战。Spring AI 2.0 代码库的改进一致性将有所帮助,但我们也需要为社区提供更多指导,以便使这些贡献更加有用,并能及时整合。此外,由于涉及代码代理的贡献现在是我们收到的拉取请求的绝大多数,我们认为在这种情况下,进行适当的人工审查就更加重要了。
因此,Spring AI 现在有了全新的 CONTRIBUTING.md 文档,该文档既适用于人类也适用于代理,明确了贡献的规则和惯例。如果您计划进行贡献,请仔细阅读该文档。
代理支持的改进
代理 AI 系统需要一个可以拦截和围绕工具执行循环的地方。在 Spring AI 1.x 中,这非常具有挑战性,因为每个聊天模型都包含自己的私有工具调用循环,隐藏在实现内部,没有方法可以插入、包装或替换执行策略。您可以调用工具,但无法在工具调用之上构建。
Spring AI 2.0 将工具循环提升为 advisor chain 中的一等、可组合组件。ChatClient 会将每个请求通过一个有序的 advisor 链进行处理,并支持循环,允许 advisor 重新进入下游链。相同的机制也驱动了工具调用循环、结构化输出重试循环和评估循环。
统一的工具调用
在 Spring AI 2.0 中,`ToolCallingAdvisor` 会由 ChatClient 自动注册,并实现了完整的工具调用往返流程。以前每个聊天模型中实现的临时工具循环已不复存在。当你需要对每个工具迭代进行显式控制时,可以选择退出并手动驱动循环。
扩展到数百个工具
`ToolSearchToolCallingAdvisor` 为工具调用带来了渐进式的工具披露机制。它不再需要为每个请求注册所有工具,而是按需逐步暴露工具:advisor 在每个会话中仅对工具集进行一次索引,并允许模型根据需要检索相关工具。
结构化的自我纠正输出
Spring AI 一直提供可移植的一等 结构化输出支持,即使启用了 原生 结构化输出,模型仍可能返回不符合规范的 JSON。可自动注册的 `StructuredOutputValidationAdvisor` 在验证失败时会自动进行自我纠正。
Spring AI 社区扩展
- 新的基于事件的对话记忆:
spring-ai-session 社区项目是内置 ChatMemory 的事件源替代方案。它支持所有消息类型,包括工具调用(在工具调用循环中与任何后端安全使用),并在上下文窗口填满时应用可插拔、轮次感知的压缩策略,包括基于 LLM 的摘要。
- 在基础之上构建代理模式:
spring-ai-agent-utils 社区项目基于 Spring AI 2.0 的代理基础,提供了用于构建代理系统的生产就绪原语,封装为可组合的工具和 advisor。它包括 Agent Skills,这是 AgentSkills 规范 的可移植、Spring AI 原生实现,以及 _file_、_shell_、_web-fetch_、_task_、_auto-memory_ 等其他有用的实用工具。
MCP 集成
模型上下文协议(MCP)正在成为 AI 集成的通用协议。
Spring 团队构建并维护了官方 MCP Java SDK,因此 Spring AI 的 MCP 集成会跟踪源代码中的规范。Spring AI 2.0 随附了 MCP Java SDK 2.0.0,符合最新的 2025-11-25 MCP 规范,并将在 Spring AI 的框架下整合完整的 MCP 生态系统。
基于注解的编程模型
mcp-annotations 模块(之前在社区中孵化)现在已成为 Spring AI 的一部分。@McpTool、@McpResource 和 @McpPrompt 允许通过一个方法注解,将任何 Spring 服务暴露为 MCP 服务器上的服务。
一个统一的 McpSyncRequestContext / McpAsyncRequestContext 参数会自动注入到服务器处理方法中,为工具和资源提供一个单一的入口点,用于日志记录、进度报告、采样和引导。
客户端同样是第一公民。声明式处理程序涵盖了完整的协议回调模型,带有针对 LLM 采样、引导和能力变更通知的注解,从而实现真正响应式的代理客户端。
MCP 传输
WebMVC 和 WebFlux 的传输实现已从 MCP Java SDK 移动到 Spring AI,使其发布周期与其他框架组件保持一致。可流式传输的 HTTP 现在是默认选项,取代了已弃用的 SSE 传输。它的无状态变体可用于实现远程部署的可扩展性,但会牺牲 MCP 的双向通信能力。STDIO 仍可用于基于本地进程的集成。
MCP 企业功能
Spring AI 的 MCP 集成继承了完整的 Spring 生产栈:用于服务器交互的 Micrometer 跨度和 OpenTelemetry 兼容的指标,以及通过 spring-ai-community/mcp-security 项目实现的 OAuth 2.0 和 API 密钥安全。
结论
Spring AI 2.0 的实现得益于 Spring AI 团队和社区的出色工作。它显著提升了使用 Spring Boot 4 创建 AI 应用的开发者体验,并为未来几个月将要分享的雄心勃勃的新功能铺平了道路。我们希望您会喜欢它!
您可以通过 start.spring.io 或升级您的应用来尝试它,并随时在 GitHub 讨论区 提供反馈,告诉我们您喜欢什么,以及您对未来版本的期望。
祝好!