Spring AI 发布了它的 1.0.0 版本的第七个里程碑(M7)

news2025/4/16 8:02:54

Spring AI 发布了它的 1.0.0 版本的第七个里程碑(M7),下个月就是 RC1,紧接着就是 GA!,对于我们 Java 开发者来说,这绝对是个值得关注的好消息!

但是对于 Java 学习者来说,内心难免吐槽一句:又有新东西要学啦!

像我最近在写 AI 相关的项目教程,基于的是 M6 版本,结果突然就来 M7 了,当时还不知道有没有什么破坏性变更,让我不由得心头一紧 “刚写完的教程又得更新了?”

考虑到很多读者还不知道 Spring AI 是什么,这里先简单介绍一下。

Spring AI 介绍

简单来说,Spring AI 就是 Spring 家族为我们 Java 开发者量身打造的、用来简化 AI 应用开发的框架。

Spring AI 提供了构建常见 AI 应用的能力,例如:基于文档的问答、与文档交互的聊天。它的目标就是将数据和 API 无缝连接到 AI 模型中。

这是 Spring AI 官方对其的描述:

The Spring AI project aims to streamline the development of applications that incorporate artificial intelligence functionality without unnecessary complexity.

Spring AI 项目旨在简化集成人工智能功能的应用程序开发,避免不必要的复杂性。

Spring AI 核心想解决这几个问题:

  1. 提供抽象,屏蔽底层差异: 不管你用的是 OpenAI 的 GPT,还是谷歌的 Gemini,或者是 Anthropic 的 Claude,甚至是 Hugging Face 上的开源模型,Spring AI 都想提供一套统一的、可移植的 API 让你去调用。同样,对于向量数据库(像 Milvus、Pinecone、Redis、PGVector 等),它也提供了统一的 API 和查询方式。这意味着你的代码可以更容易地在不同的 AI 服务和数据库之间切换,不用被某个厂商锁死。

  2. 简化 AI 应用开发: 构建一个稍微复杂点的 AI 应用,比如 RAG(检索增强生成),涉及到数据加载、切分、向量化、存储、检索、调用 LLM 等一系列步骤。Spring AI 提供了像 ETL 框架、ChatClient、VectorStore 等组件和抽象,大大简化了这些流程的实现。

  3. 模型与向量数据库支持广泛: 它对接了市面上几乎所有主流的大模型提供商(聊天、文生图模型都支持)和向量数据库。选择非常丰富。

  4. 深度集成 Spring 生态: 这可是 Spring 的看家本领!提供了各种 Spring Boot Starter,让 AI 模型、向量数据库的配置和集成变得超级简单,遵循“约定大于配置”的原则,开箱即用。

项目地址:https://github.com/spring-projects/spring-ai/tags 

Spring AI 1.0.0 M7 改进

Spring AI 1.0.0 M7 号称是最后一个里程碑版本,值得关注一波,下个月就是 RC1,紧接着就是 GA!

这意味着框架的结构和核心 API 趋于稳定了。不过,也正因为如此,M7 带来了一些重要的(破坏性的)变更,主要是为了让整个框架结构更合理、更模块化。大家升级的时候需要注意一下!

下面我会对这个版本的改动做详细的解读,官方解读在这里:https://spring.io/blog/2025/04/10/spring-ai-1-0-0-m7-released 。

1、包名和类路径大调整 (Breaking Change):

  • Starter 的 Artifact ID 变了! 命名规则更加规范了,比如模型相关的 Starter 从 spring-ai-{model}-spring-boot-starter 变成了 spring-ai-starter-model-{model},向量数据库的也类似。升级时 pom.xml 或 build.gradle 文件里的依赖需要修改。

  • 一些类的包路径也挪了地方,比如 Content、Media 相关类挪到了 org.springframework.ai.content 包下。不过别担心,这些重构你的 IDE(比如 IDEA)应该能自动帮你搞定。

2、核心架构大升级:从“大一统”到“模块化” (Core Architecture Improvements):

这是 M7 最核心的变化!之前的 spring-ai-core 被拆分成了多个更专注的领域模块,比如:

    • spring-ai-commons: 最基础的,包含文档(Document)、文本分割器(TextSplitter)等核心模型和工具,不依赖其他 Spring AI 模块。

    • spring-ai-model: 负责 AI 能力的抽象,像 ChatModelEmbeddingModelImageModel 这些接口都在这。

    • spring-ai-vector-store: 统一的向量数据库抽象层。

    • spring-ai-client-chat: 更高层的对话式 AI API,像 ChatClient、对话记忆 (ChatMemory) 都在这里。

    • spring-ai-rag: 专门为 RAG 设计的框架。

    • spring-ai-model-chat-memory-*:持久化实现,Cassandra、Neo4j 和 JDBC 实现。

    • ......

  • 好处是啥?

    • 按需引入,应用更轻量: 你只需要引入你真正用到的模块,应用的依赖更少,部署包更小。

    • 减少依赖冲突: 模块化后,传递性依赖更少,跟其他第三方库冲突的概率也小了。

    • 关注点分离更清晰: 每个模块职责更明确。

  • 升级影响: 如果你之前用的是 Spring AI 的 Starter,那这个变化对你来说应该是透明的,因为 Starter 会自动帮你引入新的模块化依赖。但如果你是直接依赖旧的 spring-ai-core,那这次升级就需要手动调整依赖了。

  • 自动配置也模块化了: 配合核心架构的调整,自动配置类也拆分到各个模块对应的 autoconfigure 包里了,同样是为了减少不必要的依赖。

Spring AI 依赖项

Spring AI 依赖项

3、升级到 MCP 0.9.0 (Breaking Change):

  • Spring AI 集成了最新的 Multimodal Client Protocol (MCP) 参考实现 0.9.0 版本。MCP 是 Spring AI 用于处理多模态交互(比如文本+图像)的一种协议。新版本带来了基于 Session 和 Exchange 的架构改进,更健壮、更符合规范。

  • 如果你用到了 MCP 相关的功能,升级时需要参考官方 MCP 升级说明进行代码调整,地址:https://docs.spring.io/spring-ai/reference/upgrade-notes.html#upgrading-to-1-0-0-m7 。

4、模型集成更新与增强 (New and Enhanced Model Integrations):

  • Anthropic Claude: 支持了最新的 Claude 3.7 Sonnet 模型并设为默认,增加了 "thinking" 能力,API 命名向 "tool" 靠拢。

  • Mistral AI: 增加了内容审核模型、自定义 JSON 输出能力。

  • Ollama: 增加了更多模型参数和对新模型的支持(如 LLAMA3_2_3B)。

  • Azure OpenAI / OpenAI: 也有一些选项增强和问题修复。

5、重量级新特性:支持 Docker Desktop 的 Model Runner!

  • Docker Desktop 4.40 版本引入了 Model Runner 功能,可以在本地运行 AI 模型,并提供了一个与 OpenAI API 兼容的本地接口。

  • Spring AI M7 现在原生支持了这个功能!这意味着:

    • 你可以在本地(比如 M 系列芯片的 Mac)直接运行像 Gemma 这样的模型,而不需要把数据发送到云端。

    • 配置非常简单,只需要在 Spring AI 的 OpenAI 配置里把 base-url 指向本地 Model Runner 的地址(如 http://localhost:12434/engines)就行了,API Key 都可以忽略。

    • 所有 Spring AI 的功能(函数调用、流式输出等)都能无缝对接本地模型。

  • 这对于本地开发、调试、或者注重数据隐私的场景来说,简直是太方便了!

6、工具调用 (Tool/Function Calling) 和多模态能力增强:

  • 工具执行框架有改进,比如增加了 ToolExecutionEligibilityPredicate 接口。

  • 多模态方面,增强了对 Base64 编码图像的处理能力。

7、文档处理、记忆存储、向量数据库增强:

  • 增加了 JSoup HTML 文档读取器。

  • 新增了基于 JDBC 和 Neo4j 的 ChatMemory 实现。

  • 新增了 Couchbase 向量数据库支持,并对 Milvus、PgVector 等现有向量库做了增强。

8、开发者体验提升:

  • 改进了 Spring Boot 自动配置模式。

  • 增强了 AOT 和 Native Image 的支持。

  • 官方文档也做了更新,增加了 M7 的升级指南和模块架构图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jdk 安装

oracle官网 : Java Archive | Oracle 中国 export JAVA_HOME/Users/xxxxx/app/services/x86jdk/jdk1.8.0_431.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH 华为镜像网站:Index of java-local/jdk

3.2.2.2 Spring Boot配置视图控制器

在Spring Boot中配置视图控制器可以简化页面跳转跳逻辑。通过实现WebMvcConfigurer接口的addViewControllers方法,可以直接将URL映射到特定的视图,而无需编写控制器类。例如,将根路径"/"映射到welcome.html视图,当访问应…

华为OD机试真题——找出两个整数数组中同时出现的整数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 华为OD机试真题《找出两个整数数组中同时出现的整数》: 目录 题目名称:找出两个整数数组中同…

烽火ai场控接入deepseek自动回复话术软件

要将烽火AI场控软件与DeepSeek自动回复话术软件进行对接,实现直播间自动互动功能,需通过API接口或脚本工具完成数据互通。以下是具体操作步骤及注意事项: 确认兼容性与准备工作 软件支持检查 确认烽火AI场控是否开放API接口(一般需…

【Linux系统】进程地址空间

命令行参数 int main (int argc, char* argv[]) 命令行参数列表 argc&#xff1a;参数的个数argv&#xff1a;参数的清单 int main (int argc, char* argv[]) {printf("argc: %d\n",argc);for(int i 0; i < argc; i){printf("argv[%d] : %s \n", i…

记录学习的第二十六天

还是每日一题。 今天这道题有点难度&#xff0c;我看着题解抄的。 之后做了两道双指针问题。 这道题本来是想用纯暴力做的&#xff0c;结果出错了。&#x1f613;

python成功解决AttributeError: can‘t set attribute ‘lines‘

文章目录 报错信息与原因分析解决方法示例代码代码解释总结 报错信息与原因分析 在使用 matplotlib绘图时&#xff0c;若尝试使用 ax.lines []来清除图表中的线条&#xff0c;会遇到AttributeError: can’t set attribute错误。这是因为 ax.lines是一个只读属性&#xff0c;不…

如何建立可复用的项目管理模板

建立可复用的项目管理模板能够显著提高项目执行效率、减少重复劳动、确保项目管理标准化。在企业中&#xff0c;项目管理往往涉及多个步骤和多个团队&#xff0c;然而每次开始一个新项目时&#xff0c;如果都从头开始设计流程和文档&#xff0c;势必浪费大量的时间和精力。通过…

如何使用通义灵码玩转Docker - AI助手提升开发效率

一、引言 Docker 作为一种流行的虚拟化技术&#xff0c;能够帮助开发者快速搭建所需的运行环境。然而&#xff0c;对于初学者来说&#xff0c;掌握 Docker 的基本概念和使用方法可能会遇到一些挑战。本文将介绍如何利用通义灵码这一智能编码助手&#xff0c;帮助你更高效地学习…

GGML源码逐行调试(下)

目录 前言1. 简述2. 预分配计算图内存2.1 创建图内存分配器2.2 构建最坏情况的计算图2.3 预留计算图内存 3. 分词4. 模型推理与生成4.1 模型推理4.2 采样 结语下载链接参考 前言 学习 UP 主 比飞鸟贵重的多_HKL 的 GGML源码逐行调试 视频&#xff0c;记录下个人学习笔记&#x…

「2025AIGC终极形态」AI系统源码:文本→图像→音乐→视频生成

—从技术痛点到企业级部署&#xff0c;手把手实现全流程AI内容工厂 行业核心痛点&#xff1a;为什么需要多模态AIGC系统&#xff1f; 1. 工具割裂&#xff0c;效率低下 传统流程&#xff1a; 文案&#xff08;ChatGPT&#xff09;→ 配图&#xff08;Midjourney&#xff09;→…

使用CS Roofline Toolkit测量带宽

使用CS Roofline Toolkit测量带宽 工程下载&#xff1a;使用CS Roofline Toolkit测量带宽-案例工程文件&#xff0c;也可以按照下面的说明使用git clone下载 目录 使用CS Roofline Toolkit测量带宽0、Roofline模型理解1、CS Roofline Toolkit下载1.1、设置代理1.2、git clone下…

L1-4 拯救外星人

题目 你的外星人朋友不认得地球上的加减乘除符号&#xff0c;但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”&#xff0c;是从 1 到 N 的连乘积。所以当他不知道“57”等于多少时&#xff0c;如果你告诉他等于“12!”&#xff0c;他就写出了“479001600”这个答案。 本题就请你…

现代c++获取linux系统名称

现代c获取linux系统名称 前言一、使用命令获取操作系统名称二、使用c代码获取操作系统名称三、验证四、总结 前言 本文介绍一种使用c获取当前操作系统名称的方法 一、使用命令获取操作系统名称 在linux系统中可以使用uname或者uname -s命令来获取当前操作系统名称&#xff0c…

力扣刷题HOT100——53.最大子数组和

给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&#xff1a;6…

ES和MySQL概念对比

基本概念 ES和MySQL都属于数据库&#xff0c;不过各有各的特性&#xff0c;大致使用方法与MySQL类似并无区别。 MySQL&#xff1a;擅长事务持有ACID的特性&#xff0c;确保数据的一致性和安全。 ES&#xff1a;持有倒排索引&#xff0c;适合海量数据搜索和分析。 ES和MySQL如何…

Android开发过程中遇到的SELINUX权限问题

1、selinux权限一般问题 问题详情 log输出如下所示&#xff1a; 01-01 00:00:12.210 1 1 I auditd : type1107 audit(0.0:33): uid0 auid4294967295 ses4294967295 subju:r:init:s0 msg‘avc: denied{ set } for propertypersist.sys.locale pid476 uid1000 gid1000 scontext…

Windows系统docker desktop安装(学习记录)

目前在学习docker&#xff0c;在网上扒了很多老师的教程&#xff0c;终于装好了&#xff0c;于是决定再装一遍做个记录&#xff0c;省的以后再这么麻烦 一&#xff1a;什么是docker Docker 是一个开源的应用容器引擎&#xff0c;它可以让开发者打包他们的应用以及依赖包到一个…

MIP-Splatting:全流程配置与自制数据集测试【ubuntu20.04】【2025最新版】

一、引言 在计算机视觉和神经渲染领域&#xff0c;3D场景重建与渲染一直是热门研究方向。近期&#xff0c;3D高斯散射&#xff08;3D Gaussian Splatting&#xff09;因其高效的渲染速度和优秀的视觉质量而受到广泛关注。然而&#xff0c;当处理大型复杂场景时&#xff0c;这种…

怎样完成本地模型知识库检索问答RAG

怎样完成本地模型知识库检索问答RAG 目录 怎样完成本地模型知识库检索问答RAG使用密集检索器和系数检索器混合方式完成知识库相似检索1. 导入必要的库2. 加载文档3. 文本分割4. 初始化嵌入模型5. 创建向量数据库6. 初始化大语言模型7. 构建问答链8. 提出问题并检索相关文档9. 合…