Spring AI 是什么:定位与生态
本教程共 45 篇 · 第 1 篇 · 更新于 2026-08-16 · 约 7 分钟阅读
本节目标:搞懂 Spring AI 解决什么问题、包含哪些能力、版本怎么选。学完你能判断自己的项目该不该用它。
1.1 Java 开发者接入大模型的痛点
2023 年之后,大模型的能力有目共睹。但 Java 开发者想把它接进业务系统,路并不好走。
最原始的做法是拿 HttpClient 拼请求。要自己构造 JSON、设置 Authorization 头、解析响应、处理异常和重试。代码能跑,但每次调用都要重复这一套,看着就累。流式输出、限流、重试这些工程细节,全都得自己实现。
更麻烦的是厂商差异。火山方舟的 SDK 里有 ArkService,阿里百炼的 SDK 里叫 Generation,OpenAI 又是另一套命名。同样一句提问,换个厂商,调用代码几乎要重写。类名、方法名、参数结构全都对不上。
这意味着业务逻辑被绑死在某个厂商的 SDK 上。老板想换模型,开发就要返工。不同平台对 SDK 命名约定互不相同,开发者被迫为每个模型封装一套调用代码,可复用性几乎为零。代码堆多了,就成了屎山。
1.2 Spring AI 是什么
Spring AI 是 Spring 官方团队推出的 AI 应用开发框架。它的目标很直接:让 Java 开发者用统一的 API 接入各种 AI 模型,就像调用普通 Service 一样简单。
官方文档给它的定位是一句话:连接企业数据和 API 与 AI 模型。框架把大模型的接入细节封装起来,你面向统一的接口编程,底层是 OpenAI 还是 DeepSeek,代码基本不用改。
项目从 LangChain 和 LlamaIndex 这两个知名 Python 项目获得灵感,但并不是它们的移植版。Spring 团队相信,生成式 AI 应用不会只属于 Python 开发者,Java 生态同样需要自己的答案。
框架提供的抽象是 AI 应用开发的地基。每种抽象都有多种实现,换组件只需改极少的代码。再加上 Spring Boot 的自动配置,加依赖、配 Key、写代码,三步就能跑起来。你在 Spring 里习惯的一切——依赖注入、配置体系、Starter 机制——在这里全部沿用。
1.3 核心能力全景
Spring AI 覆盖了 AI 应用开发的常见环节。先混个眼熟,后续章节会逐个深入:
- 模型 API:对话(Chat)、嵌入(Embedding)、文生图、语音转文字、文字转语音、内容审核,都提供可移植的接口,同步和流式都支持,也能访问模型专属能力。
- ChatClient:对话客户端,Fluent API 风格,体验类似 WebClient 和 RestClient,是 2.0 里的一等公民。
- 结构化输出:把模型返回的字符串映射成 Java 对象,告别手写 JSON 解析。
- 工具调用:让模型调用你注册的 Java 方法,获取实时数据或执行操作。2.0 用 @Tool 注解声明。
- Advisor:拦截并增强每次 AI 调用,实现日志、记忆、RAG 等横切能力,类似 Spring AOP 的思路。
- 向量数据库:统一抽象 20 余种向量库,内置 SQL 风格的元数据过滤,换库不换代码。
- RAG 与 ETL:文档摄取、切分、入库、检索增强生成一条龙,官方叫 ETL 框架。
- MCP:接入 Model Context Protocol,连接外部工具生态,通过 Boot Starter 一键启用。
- 可观测性与评估:指标、追踪,以及用模型评估模型输出的工具,防止幻觉内容上线。
所有这些能力都以模块形式发布,按需引入。只做对话就只加一个 starter,不需要的依赖不进场。
这些能力组合起来,就能实现”文档问答""文档聊天”这类常见用例。比如把公司手册喂进向量库,再用 RAG 让模型基于手册回答员工提问。聊天记忆、多轮对话这些基础能力,更是开箱即用。生产环境关心的监控、评估,框架也提供了对应组件,不用自己造轮子。
1.4 版本线:2.0 与维护线
Spring AI 的历史不长,但版本变化很快。写作时(2026 年 8 月)的基线是 2.0.0 GA,发布于 2026 年 6 月 12 日。同时维护着 1.1.8 和 1.0.9 两条旧线。
回看沿革:1.0.0 于 2025 年 5 月 19 日发布到 Maven Central(官方博客 5 月 20 日官宣),1.0 系列正式转正,此后在 1.0.x、1.1.x 上稳定迭代。2.0.0 是 2026 年的重大版本,API 做了大规模整理。
2.0 的几处关键变化,你必须知道:
- ToolCallback 和 @Tool 注解取代了旧的 FunctionCallback。
- ChatClient 的 Fluent API 成为一等公民。
- Anthropic 接入改用官方 Java SDK。
- MCP 相关功能统一走 Spring Boot Starter。
- 向量库统一为 VectorStore 抽象。
本教程的示例全部对齐 2.0.0。如果你在维护老项目,1.x 的代码不能直接照搬,迁移要点在后面的章节专门讲。网上大量 1.x 的博客,看的时候要留意 API 差异。官方文档默认展示最新版本,docs.spring.io 上的参考文档跟着主线更新,查资料时先确认版本号,别拿 1.x 的文档对 2.0 的代码。遇到和网上资料矛盾的地方,先查官方 2.0 文档再动手。
1.5 和 LangChain、LlamaIndex 的对比
LangChain 和 LlamaIndex 是 Python 生态里最热门的 AI 框架。Spring AI 和它们解决的是同一类问题,但气质完全不同。
LangChain 组件丰富、生态庞大,但那是 Python 开发者的世界。LlamaIndex 专注数据索引和检索,RAG 场景很强。两者都不适合直接进 Java 项目。
Spring AI 的优势在 Java 侧:类型安全、依赖注入、自动配置,和现有 Spring Boot 项目无缝衔接。你在 Spring 里积累的工程经验全部可以复用。缺点也很明显:起步晚,社区规模和组件数量暂时比不上 Python 阵营。
选型建议很简单。项目是 Java/Spring 技术栈,就用 Spring AI;项目是 Python 技术栈,LangChain 更合适。想找示例和社区资源,可以看 GitHub 上的 awesome-spring-ai 索引和官方示例仓库。框架还在快速迭代,生产环境使用时要锁版本、看升级说明,别盲目追新。
1.6 小结
Spring AI 是 Java 生态接入大模型的统一入口。它解决厂商锁定和重复编码的问题,提供从对话到 RAG 的完整能力。2.0.0 是当前基线,本教程的示例和 API 都以它为准。下一章,我们把环境配好,跑通第一个 AI 对话。