第一章:先唠明白,Spring AI 到底是个啥?
第一章先唠明白Spring AI 到底是个啥1.1 不是又一个 AI 框架是 Spring 生态的 AI 接入层很多同学第一次听到Spring AI这个名字脑子里冒出来的第一个念头是又来一个要学的东西是不是跟 LangChain 差不多我带你一句话搞清楚它的定位——Spring AI 不是要你放弃 LangChain 或者重新学一套 AI 理念它是把调用大模型这件事用 Spring 生态里你熟悉的方式封装了一层。说白了你写 Spring Boot 项目想接大模型ChatGPT、通义千问、DeepSeek……以前你怎么办自己写 HTTP 请求拼 JSON处理流式响应适配各家不同的 API 格式写一堆工具类。Spring AI 就是帮你把这一坨脏活干了你只管写业务逻辑跟 AI 交互的部分跟调 Spring 的JdbcTemplate一样自然。它的核心思路是大一统接口// 不管底层是 OpenAI 还是千问还是 DeepSeek// 你写的代码是这样的换模型只改配置不动代码ChatClientclientchatClientBuilder.build();Stringanswerclient.prompt().user(帮我写一段冒泡排序的代码).call().content();如果明天你觉得 OpenAI 太贵要切到 DeepSeek改一行配置完事业务代码零改动——这就是 Spring AI 最大价值。1.2 和 LangChain4j、LangChain(Python) 掰扯清楚这是被问最多的问题我用一张表把关键差异列清楚维度Spring AILangChain4jLangChainPython母体生态Spring Boot / Spring CloudJava 生态非 Spring 专属Python 生态上手门槛会 Spring Boot 就能用零额外学习成本需要学 LangChain 那一套抽象概念需要学 LangChain 概念 PythonAI 能力完备度Chat、Embedding、RAG、Function Calling、多模态Chat、Embedding、RAG、Agent、Tools最全社区最活跃生产环境适配天然集成 Spring 全家桶AOP、事务、监控、配置中心需要自己集成 Spring 组件非 Java 生态文档与社区官方文档稳定但案例偏少社区增长中文档一般Java 大模型场景资料少资料最多但都是 Python适合谁Spring 技术栈团队不想折腾框架Java 团队非 Spring 项目如 QuarkusPython 团队、算法团队怎么选只给你一个决策标准你团队的主力后端是 Java/Spring 技术栈 → 无脑 Spring AI。别去看 LangChain4j 了Spring AI 在 Spring 生态里的集成体验是降维打击级别的——事务管理、配置中心、AOP 切片这些你不需要额外适配。你是 Python 技术栈 → 用 LangChain。这没什么好纠结的。你是 Java 但不是 Spring比如 Quarkus、纯 Java→ 看 LangChain4j。不过说实话Java 后端有多少不用 Spring 的所以这个选项其实很少人走。一个真实的选择经历我们团队之前做一个知识库问答项目一开始有人提议用 Python LangChain理由是LangChain 资料多。我否决了原因很简单团队全员 Java引入 Python 服务意味着要多维护一个技术栈知识库数据在现有的 Spring 服务里跨语言调用增加网络开销和维护成本Spring AI 虽然是新项目但它做的事情本质上是 HTTP 调用 向量检索不复杂没必要引入新语言最后全链路用 Spring AI 做的研发效率远高于预期。当然Spring AI 当时有些功能不成熟比如 Agent 编排我们这部分自己写了一点胶水代码。这是后话后面章节会细说。1.3 一张图看懂 Spring AI 全家桶Spring AI 不是一个大而全的平台它是一个模块化的工具箱。你跟 AI 交互会遇到的所有环节它都提供对应的模块。用大白话翻译一下每个模块是干嘛的┌───────────────────────────────────────────────────────────────────────┐ │ 你的 Spring Boot 业务代码 │ └───────────────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │ Chat │ │ Embedding │ │ 多模态 │ │ 聊天 │ │ 文本→向量 │ │ 图片/语音 │ └──────────┘ └──────────────┘ └──────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ Vector Store向量数据库 │ │ PgVector │ Milvus │ Redis │ Elasticsearch │ Chroma │ └──────────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │ RAG │ │ Agent │ │ Memory │ │ 检索增强 │ │ 智能体 │ │ 对话记忆 │ └──────────┘ └──────────────┘ └──────────────┘逐一说一下这些模块是干啥的用最土的话模块大白话解释你什么时候用到它Chat跟大模型对话问问题它回答天天用最基础的能力Embedding把一段文字变成一串数字向量用于找相似内容做知识库、做搜索、做推荐时Vector Store存这些向量数字的地方能快速找出最相似的几条做 RAG 必须用RAG先从你的知识库里搜相关内容塞给 AI让它基于你的资料回答内部文档问答、客服机器人Function Calling让 AI 能指挥你的系统做事查数据库、调接口、发邮件你想让 AI 不只是聊天还能办事AgentFunction Calling 的升级版AI 自行决定先做什么、后做什么复杂任务自动编排多模态除了文字还能看图、听语音发票识别、图片描述Memory让 AI 记住你们刚才聊过什么多轮对话重要提示这些模块不是都要学。你 80% 的场景只需要 Chat RAG Function Calling 三个模块。别被全家桶唬住。1.4 版本现状能不能上生产这是每个想引入 Spring AI 的人最关心的问题。我直接说现状截至 2026 年 8 月版本号Spring AI 已经发布1.0 正式版。这意味着核心 API 已经稳定不会再有破坏性变更了。之前那些年追 SNAPSHOT 版的痛苦终于结束了。各模块成熟度模块成熟度说明Chat / Streaming✅ 生产可用核心功能最稳Embedding✅ 生产可用没什么幺蛾子PgVector 集成✅ 生产可用Spring 官方主推维护积极Milvus 集成✅ 生产可用社区维护稳定Function Calling✅ 生产可用经历了多轮迭代API 已收敛RAGETL Pipeline✅ 生产可用文档处理链路稳定Agent 编排⚠️ 谨慎目前功能相对基础复杂编排建议自己控制多模态✅ 生产可用接口稳定注意各模型支持差异对话记忆✅ 生产可用简单的上下文窗口没问题我的建议如果你的需求是 Chat RAG Function Calling完全可以上生产我们已经跑了几个月了没啥坑。如果你要复杂的 Agent 多步推理、自动规划Agent 模块能用但不够灵活建议主要逻辑自己写状态机控制用 Spring AI 做模型调用那层。第一章小结三句话总结Spring AI 是 Spring 生态的 AI 接入层把你本来就要写的 HTTP 请求封装成了 Spring 风格接口切换模型只改配置。Java / Spring 团队直接上 Spring AI别犹豫别去折腾 LangChain4j。Chat RAG Function Calling 三大核心模块生产可用日常场景全覆盖。下一章我们一起5 分钟把 Hello World 跑起来顺便讲讲ChatClient的两种用法以及为什么要用流式什么场景用同步就够了。

相关新闻

Havenlon | 杂谈:AI时代,从零信任走向对抗性完整

Havenlon | 杂谈:AI时代,从零信任走向对抗性完整

一、零信任回答了一个问题,但不是全部问题过去二十年,企业安全最重要的一次范式转移,是零信任。它推翻了一个存在很久的默认假设:进入内网不等于值得信任,拥有账号不等于可以自由行动。每一次访问,都要重新…

2026/11/2 6:44:31 阅读更多 →
Kimi    LeetCode 3836. 恰好 K 个下标对的最大得分 TypeScript实现

Kimi LeetCode 3836. 恰好 K 个下标对的最大得分 TypeScript实现

以下是 LeetCode 3836. 恰好 K 个下标对的最大得分 的 TypeScript 实现。解题思路三维动态规划。定义 dp[i][j][k] 为:在 nums1 的前 i 个元素和 nums2 的前 j 个元素中,恰好选择 k 对下标所能获得的最大得分。状态转移有三种情况: 1. 跳过 n…

2026/11/4 20:25:00 阅读更多 →
MySQL单表数据量管理与性能优化实战

MySQL单表数据量管理与性能优化实战

1. MySQL单表数据量管理的核心考量当数据库表的数据量超过2000万行时,MySQL的性能曲线会开始出现明显拐点。这个数字不是凭空而来——在InnoDB存储引擎的B树索引结构下,三层索引树大约能支撑2000万级别的数据量。我经手过多个从百万级跃升到千万级的项目…

2026/11/7 20:25:09 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/8 1:19:03 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/7 12:08:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/8 1:35:05 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/8 1:38:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/7 12:08:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/8 1:23:14 阅读更多 →

日新闻

周新闻

月新闻