T
traeai
登录
返回首页
Spring Blog

Spring AI 2.0.0 GA Available Now

8.5Score

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,减少运行时空指针异常。

结构提纲

按章节快速跳转。

  1. §Spring AI 2.0.0 GA 发布

    Spring AI 2.0.0 正式发布,提供更稳定和一致的开发体验。

  2. Spring AI 2.0.0 基于 Spring Boot 4 和 Spring Framework 7.0,提升了整体性能和一致性。

  3. ·Jackson 3 支持

    升级到 Jackson 3 提供了更强大的 JSON 序列化功能和自定义选项。

  4. 通过 JSpecify 注解实现 null-safety,减少运行时空指针异常。

  5. 选项和配置属性的处理方式进行了重构,提升代码的可维护性和一致性。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Spring AI 2.0.0 GA
    • 改进的基础架构
      • Spring Boot 4 支持
      • Spring Framework 7.0 支持
    • Jackson 3 支持
      • JSON 序列化改进
      • 自定义 JsonMapper
    • Null-safety 改进
      • JSpecify 注解
      • 减少空指针异常

金句 / Highlights

值得收藏与分享的关键句。

#Spring AI#Spring Boot#Java#AI
打开原文

标题: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 获取!

发布说明 | 升级说明 | 参考文档 | Javadoc

[改进的基础](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 团队合作直接维护:

我们欢迎其他外部维护的模型的支持。

与社区更好的协作

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 讨论区 提供反馈,告诉我们您喜欢什么,以及您对未来版本的期望。

祝好!

AI 可能会生成不准确的信息,请核实重要内容