Spring AI 1.0 GA 已发布

发布 | Mark Pollack | 2025年5月20日 | ...

我谨代表 Spring AI 工程团队以及所有为本次发布做出贡献的人,非常兴奋地宣布 Spring AI 1.0 正式发布。我们为你准备了一篇精彩的发布博文。

入门

所有新组件都已发布到 Maven Central。请使用提供的 BOM 来导入依赖项。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

查看 升级说明 以了解最新的重大变更以及如何升级。注意:你可以使用 OpenRewrite 脚本来自动完成升级到 1.0.0-GA 的过程。此脚本有助于应用本次版本许多必需的代码更改。在 Arconia Spring AI Migrations 中查找脚本和使用说明。

你可以通过 Intialzr 网站 开始创建 1.0 GA 应用,并阅读参考文档中的 入门指南

朋友和家人

其次,这里精选了许多我们过去两年合作的朋友和家人为 1.0 GA 版本创作的博文,展示了如何以各种方式使用 Spring AI。

  • Microsoft Azure 的 博客视频。特别感谢 Asir Selvasingh,他在 2023 年拉斯维加斯 Spring One 大会上帮助我们 发布 Spring AI
  • AWS - 博客 - Spring AI 1.0 为开发者大众带来 AI。
  • Google - 博客 - Google Cloud 和 Spring AI 1.0。
  • Cloud Foundry - 视频 - Spring AI 和 CloudFoundry:优美、智能、生产级、云原生系统和服务。
  • Elastic - 博客 - Spring AI 和 Elasticsearch 作为你的向量数据库。
  • Redis 博客 - 使用 Spring AI 和 Redis 构建快速、生产级的 AI 应用。
  • MongoDB - 博客 - Spring AI 和 MongoDB:如何构建 RAG 应用。
  • Oracle - 博客 - Spring AI 1.0 GA 发布,支持 Oracle 向量数据库。
  • InfoQ 文章 - Spring AI 1.0 发布,通过广泛的模型支持简化 AI 应用开发。
  • The New Stack 文章 - Spring AI 1.0 的生产级 AI。

此外,Josh Long 撰写了一篇详细的文章,演示如何 将 Spring AI 与 Anthropic 的 Claude 结合使用,Daniel Garnier-Moiroux 也在他的博客中发表了文章 Spring AI 和 OAuth2 中的 MCP 授权实践

新歌发布

首先,当然是一首新歌。请在 Spring AI 播放列表 中收听 最新单曲 - 它会让你 快乐

第三,我们有了新的 Spring AI Logo!非常感谢 Sergi Almar,他是 Spring IO 大会 的组织者,以及设计师 Jorge Rigabert 创造了如此精美的 Logo。小写字母 'i' 的各种变化形式令人着迷。

Spring AI 1.0 GA Tour

让我们来探索 Spring AI 1.0 GA 的功能集。

Spring AI 的核心是 ChatClient,这是一个**可移植且易于使用的 API**,是与 AI 模型交互的主要接口。

Spring AI 的 ChatClient 支持调用**20**个 AI 模型,从 Anthropic 到 ZhiPu。它支持多模态输入和输出(当底层模型支持时)以及结构化响应 - 最常见的是 JSON 格式,以便于在应用程序中处理输出。

有关 AI 模型功能集的详细比较,请访问我们参考文档中的 聊天模型比较

请阅读我们的 ChatClient 参考文档以获取更多信息。你可以在 Josh 的博客 中看到它的实际应用。

Prompt

创建正确的 Prompt(你传递给模型的输入)是一项重要技能。有几种模式可以充分利用 AI 模型以获得最佳结果。
你可以在 参考文档中找到 Prompt 的示例用法。Spring AI 的参考文档还涵盖了 Prompt Engineering 技术,并附有基于全面 Prompt Engineering 指南的代码示例。

增强型 LLM

然而,真实的 AI 应用不仅仅是与无状态 AI 模型 API 进行简单的请求/响应交互。

要构建有效的 AI 应用,一系列支持性功能至关重要。这就是 增强型 LLM(如下图所示)的概念,它通过数据检索、对话记忆和工具调用等功能为基础模型交互增加了能力。这些功能使你能够将自己的数据和外部 API 直接引入模型的推理过程中。

Augmented LLM

实现 Spring AI 中此模式的关键是 Advisor。

Advisor

Spring AI 的 ChatClient 的一个关键特性是 Advisor API。这是一个拦截器链,允许你通过注入检索到的数据和对话记忆来修改传入的 Prompt。

你可以在 参考文档中的相关章节 阅读更多关于它们的信息。

现在让我们深入了解增强型 LLM 的每个组件。

检索

AI 应用中检索数据的核心是数据库,特别是向量数据库,这是最常见的用途。Spring AI 提供了一个可移植的向量存储抽象,支持**20**种不同的向量数据库,从 Azure Cosmos DB 到 Weaviate。

处理这些数据库时的一个常见挑战是,它们都有自己独特的元数据过滤查询语言。Spring AI 通过一个可移植的过滤表达式语言来解决这个问题,该语言使用熟悉的类 SQL 语法。如果你达到了该抽象的极限,可以回退到原生查询。

Spring AI 包括一个轻量级、可配置的 **ETL (Extract, Transform, Load) 框架**,用于简化将数据导入向量存储的过程。它通过可插拔的 DocumentReader 组件支持广泛的输入源,包括**本地文件系统**、**网页**、**GitHub 仓库**、**AWS S3**、**Azure Blob Storage**、**Google Cloud Storage**、**Kafka**、**MongoDB** 和 **JDBC 兼容的数据库**。这使得将几乎任何地方的内容引入 RAG 管道变得容易,并内置了分块、元数据丰富和嵌入生成等支持。你可以在参考文档的 相关章节 中阅读更多关于 ETL 功能的信息。

Spring AI 还广泛支持检索增强生成(RAG)模式,该模式使 AI 模型能够根据你输入的数据来生成响应。你可以从简单的 QuestionAnswerAdvisor 开始,将相关上下文注入 Prompt,或者扩展到更复杂、模块化的 RAG 管道,以满足你的应用程序需求,使用 RetrievalAugmentationAdvisor

你可以在参考文档的 相关章节 阅读更多关于它们的信息。

要学习在你的 Spring AI 应用中实现 RAG 的教程,请查看我们的 检索增强生成指南,其中介绍了设置向量存储、嵌入文档以及通过实际代码示例创建有效的检索管道。

记忆

对话历史是创建 AI 聊天应用的重要组成部分。Spring AI 通过 ChatMemory 接口支持这一点,该接口负责管理消息的存储和检索。MessageWindowChatMemory 实现维护最近 N 条消息,并在对话进行时进行滑动更新。它委托给 ChatMemoryRepository,我们目前提供 JDBC、Cassandra 和 Neo4j 的存储库实现,未来还将有更多。

另一种选择是使用 VectorStoreChatMemoryAdvisor。它不只是记住最近的消息,而是使用向量搜索从过去的对话中检索语义上最相似的消息。

你可以在参考文档的 相关章节 阅读更多关于它们的信息。

要学习在你的 Spring AI 应用中实现聊天记忆的教程,请查看我们的 聊天记忆实现指南,其中涵盖了基本和高级的记忆模式,包括持久化存储选项的代码示例。

工具

Spring AI 通过**工具**——自定义函数,让 AI 能够检索外部信息或执行现实世界操作——轻松扩展了模型的功能。工具调用**(也称为函数调用)于 2023 年 6 月首次由 OpenAI 广泛推出,当时他们在 gpt-4gpt-3.5-turbo 模型中发布了函数调用功能。

工具可以获取当前天气、查询数据库或返回最新新闻,帮助模型回答其训练数据之外的问题。它们还可以触发工作流、发送电子邮件或更新系统——将模型变成你应用程序中的积极参与者。定义工具很简单:使用 @Tool 注释声明式方法,使用 @Bean 动态注册 Bean,或者以编程方式创建它们以获得完全控制。

你可以在参考文档的 相关章节 阅读更多关于它们的信息。

要学习在你的 Spring AI 应用中实现工具调用的教程,请参阅我们的 本地工具调用指南,其中演示了如何通过实际示例和最佳实践来创建、注册和使用工具。

评估

使用这项技术创建应用程序很有趣,但你怎么知道它是否有效呢?不幸的是,这不像编写传统的单元或集成测试并查看测试是否通过那么简单。需要根据一系列标准来评估 AI 模型的回应。例如,答案是否与提出的问题相关?它是否出现了幻觉?答案是否基于提供的事实?

为了掌握这一点,你应该先进行所谓的“感觉检查”。顾名思义,这是手动审查响应并使用你自己的判断来确定答案是否正确。当然,这很耗时,所以有一套不断发展的技术可以帮助自动化这个过程。

Spring AI 可以轻松检查你生成的 AI 内容的准确性和相关性。它提供了一个灵活的 Evaluator 接口和两个方便的内置评估器:

  • RelevancyEvaluator - 帮助你弄清楚 AI 的响应是否真正匹配用户的问题和检索到的上下文。它非常适合测试 RAG 流,并使用可自定义的 Prompt 来问另一个模型:“这个响应是否基于检索到的内容有意义?”

  • FactCheckingEvaluator - 验证 AI 的响应是否基于提供的上下文是事实准确的。它通过让模型判断一个陈述是否在逻辑上得到某个文档的支持来工作。你可以使用 Bespoke 的 Minicheck(通过 Ollama)这样的小模型来运行它,这比为每次检查都使用 GPT-4 要便宜得多。

然而,这不是万能药。 Clémentine Fourrier,Hugging Face 的 Open LLM Leaderboard 的首席维护者,警告说“**LLM 作为裁判不是万能的**”。在她在 Latent Space Podcast 的采访中,她概述了关键问题:

  • 模式崩溃和位置偏差:LLM 裁判经常偏袒同一系列的模型或第一个显示的响应。
  • 冗长偏差:模型倾向于给更长的回答更高的评价,而不考虑准确性。
  • 评分能力差:排名比评分更可靠;即便如此,可重现性也很弱。
  • 过度自信偏差:人们(以及模型)经常偏爱自信的回答,即使它们是错误的。

你可以在参考文档的 相关章节 阅读更多关于评估的信息。

祝你好运!要开始,请查看 一些 不错的 文章,其中展示了这些评估器的使用。

可观察性

当你在生产环境中运行 AI 时,你需要的不仅仅是希望和良好的感觉——你需要**可观测性**。Spring AI 可以轻松地观察你的模型在做什么、性能如何以及所有这些成本是多少。

Spring AI 集成了 **Micrometer**,提供关键指标的详细遥测数据,例如:

  • 模型延迟 - 模型响应所需的时间(不仅仅是情绪上的)。

  • Token 使用量 - 每个请求的输入/输出 token,以便你可以跟踪和优化成本。

  • 工具调用和检索 - 了解你的模型何时像一个乐于助人的助手,而不是仅仅依赖你的向量存储。

你还可以通过 **Micrometer Tracing** 获得完整的跟踪支持,每个模型交互的主要步骤都有相应的 span。你还可以获得有助于故障排除的日志消息,以便你可以看到用户 Prompt 或向量存储响应是什么。

你可以在参考文档的 相关章节 阅读更多关于可观测性的信息。

模型上下文协议

Model Context Protocol (MCP) 于 2024 年 11 月问世。它迅速流行起来,因为它提供了一种标准化的方式,让 AI 模型能够与外部工具、Prompt 和资源进行交互。MCP 是一个客户端-服务器导向的协议,一旦你构建了一个 MCP 服务器,就可以轻松地在你的应用程序中采用它,无论 MCP 服务器是用哪种编程语言编写的,也无论 MCP 客户端是用哪种编程语言编写的。

这在工具领域已经迅速发展,尽管 MCP 不限于工具。现在,你可以使用现成的 MCP 服务器来执行特定功能,例如与 GitHub 交互,而无需自己编写代码。从 AI 工具的角度来看,这就像一个工具类库,你可以轻松地将其添加到你的应用程序中。

Spring AI 团队在规范发布后不久就开始支持 MCP,然后这段代码被捐赠给了 Anthropic,作为 MCP Java SDK 的基础。Spring AI 在此基础上提供了丰富的功能集

MCP 客户端

Spring AI 通过其客户端启动器模块,使得使用 Model Context Protocol (MCP) 工具变得简单。通过添加 `spring-ai-starter-mcp-client` 依赖项,你就可以快速连接到远程 MCP 服务器。Spring Boot 的自动配置会处理繁重的工作,因此你的客户端无需大量样板代码即可调用 MCP 服务器公开的工具——让你专注于构建有效的 AI 工作流。Spring 可以轻松连接 MCP 服务器提供的 stdio 和基于 HTTP 的 SSE 端点。

要进行实际介绍,请查看 MCP 客户端示例,该示例演示了如何连接到一个提供 Brave 网页搜索的 MCP 服务器——这样你就可以在你的 Spring 应用中直接添加强大的搜索功能。

要学习在你的 Spring AI 应用中实现 Model Context Protocol 的教程,请参阅我们的 MCP 指南,其中解释了如何设置客户端和服务器组件,连接到外部工具,并利用该协议来增强 AI 功能。

MCP 服务器

Spring AI 通过其专用的启动器模块和直观的注解驱动方法,简化了 MCP 服务器的创建。添加 `spring-ai-starter-mcp-server` 依赖项,你就可以快速将 Spring 组件转换为符合 MCP 的服务器。

该框架提供了一个使用 @Tool 注释来公开方法的简洁语法。参数会自动转换为适当的 MCP 格式,框架会处理所有底层协议细节——传输、序列化和错误处理。通过最少的配置,你的 Spring 应用程序就可以公开其功能,既有 stdio 端点,也有基于 HTTP 的 SSE 端点。

你会在 spring-ai-examples 仓库中找到几个有用的示例——一个好的起点是 Spring AI MCP 天气 STDIO 服务器

还可以查看 Spring 生态系统中已经开始拥抱 MCP 并提供专用服务器的项目:

  • Spring Batch MCP Server 公开了批处理操作,允许 AI 助手查询作业状态、查看步骤详细信息和分析指标来优化工作流。
  • Spring Cloud Config MCP Server 实现了 AI 可访问的配置管理,提供用于检索、更新和刷新跨环境配置的工具,并处理敏感值的加密。

这些服务器将 Spring 的企业级功能带入了不断增长的 MCP 生态系统。

MCP 和安全性

在企业环境中,你希望对向 LLM 提供什么数据作为上下文以及提供哪些 API(尤其是修改数据/状态的 API)有一定的控制,这并不奇怪。MCP 规范通过 OAuth 解决了这些问题。Spring Security 和 Spring Authorization Server 已经为你准备好了。Spring Security 大师 Daniel 在他的博客 Spring AI 和 OAuth2 中的 MCP 授权实践 中详细介绍了保护 MCP 应用。

Agent

2025 年是 Agent 年。百万美元的问题是“定义 Agent”,好吧,这是一个尝试!:) 它的核心是一个 Agent,“利用 AI 模型与其环境交互以解决用户定义的任务。”有效的 Agent 结合了规划、记忆和行动来完成用户分配的任务。

Agent 主要分为两大类:

工作流代表一种更受控的方法,通过预定义的路径来编排 LLM 和工具。这些工作流是规定性的,引导 AI 完成既定的操作序列以获得可预测的结果。

相比之下,**自主 Agent** 允许 LLM 自主规划和执行处理步骤以完成任务。这些 Agent 确定自己的路径,无需明确指令即可决定使用哪些工具以及使用顺序。

虽然完全自主的 Agent 因其灵活性而具有吸引力,但对于定义明确的任务,工作流提供了更好的可预测性和一致性。在这两种方法之间的选择取决于你的具体需求和风险承受能力。

工作流驱动的 Agent

Spring AI 支持几种工作流模式来构建 Agent 行为:在下图的每个 LLM 框中,都是前面显示的“增强型 LLM”图。

  1. 评估器优化器 - 模型分析自己的响应,并通过结构化的自我评估过程进行改进。

Augmented LLM

  1. 路由 - 这种模式允许根据用户请求和上下文的分类,将输入智能地路由到专用处理程序。

  2. 编排器工作流 - 这种模式是一种灵活的方法,用于处理需要动态任务分解和专业化处理的复杂任务。

  3. 链式 - 该模式将复杂任务分解为一系列步骤,其中每次 LLM 调用都会处理前一次调用的输出。

  4. 并行化 - 该模式适用于需要并行执行 LLM 调用并自动聚合输出的场景。

这些模式可以使用 Spring AI 的聊天模型和工具执行功能来实现,框架负责处理大部分底层复杂性。

你可以在 Spring AI 示例仓库 和我们参考文档的 构建有效的 Agent 部分找到更多信息。

自主驱动的 Agent

Spring AI 还通过 Model Context Protocol 支持自主 Agent 的开发。正在孵化的 Spring MCP Agent 项目演示了如何创建 Agent,这些 Agent:

  1. 接受用户指令并自主确定最佳方法。
  2. 通过 MCP 动态发现和利用可用工具。
  3. 维护一个执行内存来跟踪进度和决策。
  4. 根据结果递归地改进策略。

Tanzu 平台中的 Tanzu AI 解决方案

Tanzu AI 解决方案可在 Tanzu Platform 10 及以上版本中使用,并且与 Spring AI Apps 配合效果最佳。

  • 企业级 AI 部署:用于部署具有企业级安全控制的 AI 应用的生产就绪解决方案。
  • 简化、自助式模型访问:通过统一的 marketplace 和精选的 AI 模型,实现对 AI 模型的简化访问。
  • 安全和治理:AI 中间件,通过可观测性、基于 token 的速率限制、审计、指标、日志和日志记录来增强控制。
  • 可伸缩基础设施:基于 Spring AI 构建,该集成支持 AI 应用的可伸缩部署,同时保持高性能。

有关使用 Tanzu AI Server 部署 AI 应用的更多信息,请访问 VMware Tanzu AI 文档,有关构建 Agentic AI 应用的更多信息,请查看以下博文:

推荐阅读 Agentic AI

贡献者

看到社区不仅使用 Spring AI,还贡献于它的热情,真是令人欣慰。整个团队对此深感荣幸。特别要提一下 - Thomas Vitale (ThomasVitale)。他推动了诸如 @Tools 和 RAG 等核心功能,以及其他很棒的贡献和 bug 修复。太棒了!

我已整理了贡献者列表,它很长。我想制作一张地图,显示来自世界各地许多不同地区的人们。谢谢!

已合并的贡献者

AI 合并了之前博客中提到的作者,如果遗漏了某人,我(而不是 AI)深表歉意。

下一步是什么?

当然还有 Spring AI 1.1!敬请期待!

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有