
要是你是个 Spring Boot 老炮儿,那 Spring AI 绝对能戳中你的爽点 —— 它把 Spring 那套「祖传心法」(POJOs、自动配置、starters、依赖注入)完完全全搬到了生成式 AI 领域。核心目标就一个:搞定企业数据、各类 API 和 AI 模型的对接难题,还给了一套能跨多家模型厂商的抽象层和通用 API,主打一个省心。

PART 01
啥是 Spring AI?
Spring AI 就是 Spring 生态里专为 AI 工程打造的应用框架。它把底层的模型连接、客户端调用、厂商专属的样板代码全打包,搞出一层统一的抽象。只要你会用 Spring Boot,那这套玩法基本不用学:选好对应模型厂商的 starter 依赖,靠自动配置兜底,用注解搞定逻辑,剩下的只管聚焦业务就行。
LangChain4j 算是 Spring AI 的平替,选哪个全看场景 —— 要是你要玩复杂的智能体工作流,LangChain4j 可能更对味。就是它配置得多,学习曲线陡点儿,但胜在能拿捏细节、掌控力拉满。反过来,要是你就想蹲在 Spring Boot 的舒适区里不挪窝,Spring AI 就是天选之子。当然,把它俩塞一个项目里混搭也不是不行。
PART 02
为啥非得用 Spring AI?
PART 03
支持的模型 & 厂商
Spring AI 把主流大厂都包圆了:OpenAI、微软、亚马逊、谷歌,还有本地部署的 Ollama。支持的模型类型也贼全:对话补全、嵌入向量、文本生图、语音转文字、文字转语音,甚至内容审核都能搞。
想对接 Azure OpenAI、Amazon Bedrock、Google Vertex AI?直接用官方给的 starter 和配置,无脑接入。
PART 04
上手教程(Spring Boot 选手专属)
@Bean
public CommandLineRunner runner(ChatClient.Builder builder) {
return args -> {
ChatClient chat = builder.build();
String reply = chat.prompt("讲个笑话")
.call()
.content();
System.out.println("AI回复:" + reply);
};
}要是玩高阶操作(多模型、向量库、RAG、工具调用),可能得手动定义 Bean,或者如果加了多个厂商的 starter,把自动配置的默认值关了(比如 spring.ai.chat.client.enabled=false)。
💡我早期玩 Spring AI 的一些实验案例在这儿,能抄作业→Spring AI
📘 官方文档也写得贼明白,小白都能看懂→(原文链接保留)
PART 05
聊天客户端 API(Chat Client API)
ChatClient API 主打一个流式调用,能设置厂商专属参数(比如温度、Top K、最大令牌数),还能和 Advisors、提示词模板、工具联动,让模型交互的扩展方式又干净又灵活。
Advisors
Advisors 就像 ChatClient 和底层模型之间的「拦截器」,专治各种横切场景 —— 那些要在多次调用里复用的活儿,比如:
你可以给 ChatClient 注册一个或多个 Advisors,既能让业务逻辑保持清爽,又能把复用的逻辑集中管理。比如整个 TokenCountingAdvisor 统计令牌数,或者整个自定义的 PromptAuditAdvisor 记录输入输出,方便监控。
提示词模板(Prompt Templates)
Spring AI 支持提示词模板,能定义带占位符和上下文元数据的可复用提示词结构。有了这玩意儿,所有模型交互的语气、格式都能保持一致,还能给模板传参,灵活得很。
比如整个 system-template.st 模板文件:
你是一个贴心的技术文档总结助手。
用${wordCount}个字总结下面这段文本:
${inputText}代码里就能动态加载、填充参数:
PromptTemplate template = new PromptTemplate("classpath:/templates/system-template.st");
Prompt prompt = template.create(Map.of("wordCount", 50, "inputText", document));提示词模板还能抽离出来做版本管理 —— 从类路径、数据库,甚至 Git 配置仓库里加载都可以。搭配 Advisors 用,能搭出模块化、易维护的 AI 组件,跟着应用一起迭代不费劲。
工具与工具回调(Tools and ToolCallbacks)
Spring AI 还整了 Tools 和 ToolCallbacks,能让模型调用你应用里的函数 —— 说白了就是把大模型的推理能力和你的业务逻辑打通了。
只要给普通的 Spring Bean 加个 @Tool 注解,暴露出来的方法就能被模型按需调用。这样就能搞出类智能体的系统,比如模型判断需要「查客户订单详情」「生成 PDF 报告」时,自动调用对应的业务函数。
底层逻辑不用管,Spring AI 会搞定工具的注册和调用,还能和厂商的函数 / 工具调用机制无缝对接。举个栗子:
@Tool
public class OrderLookupTool {
public String lookupOrder(String orderId) {
return orderService.findById(orderId).toString();
}
}向量库集成 & RAG 支持
还有个超顶的功能:Spring AI 给向量库做了抽象层。换厂商(比如 PostgreSQL pgvector、Redis、Pinecone、Chroma、Milvus)不用改核心代码,API 都通用。想搭检索增强生成(RAG)系统?这功能直接把难度砍半,做知识库助手贼香。
@Autowired
private VectorStore vectorStore;
List<Document> docs = vectorStore.similaritySearch("Spring AI 测试", 5);MCP
Spring AI 对 MCP(Model Context Protocol)是一等支持,能让 Spring Boot 应用既当 MCP 客户端又当服务端。用 Spring AI 的 MCP starters,你可以把外部「工具」或服务定义好,模型能通过标准传输方式(比如标准输入输出、Server-Sent Events)调用。
这意味着不用瞎写定制化集成代码,靠 Spring 的配置和 Bean 就能暴露能力(比如查天气、查数据库),大模型能动态调用,还能享受 Spring 全套生态:生命周期管理、依赖注入、监控、类型安全工具,爽到飞起。
PART 06
高阶玩法:可观测性、测试 & 可扩展性
1. 跟 Spring Boot Actuator 无缝集成的可观测性
Spring AI 和 Spring Boot Actuator 搭得严丝合缝,监控 AI 模型交互就跟监控应用其他部分一样简单。
具体能搞这些事:
生产环境里这功能太香了 —— 能看清 AI 功能在高负载下的表现,还能算清成本。
2. 专为 AI 输出打造的测试能力
测试 AI 组件贼头疼:不是查确定的输出,而是看质量、相关性。Spring AI 给开发者整了专属的测试评估器,解决这个老大难。
🧠 相关性评估器(RelevancyEvaluator)
能验证 AI 回复是不是真的回答了问题、有没有跑题。它会把生成的输出和预期上下文对比,帮你揪出幻觉回答、离题的补全内容。
典型场景:测试 RAG 流水线、聊天机器人回复,确保答案都基于向量库的数据,不瞎编。
🔍 事实校验评估器(FactCheckerEvaluator)
给定参考语料 / 数据集,检查模型生成的内容是否符合事实。能发现模型总结、改写信息时的事实偏差或错误信息。
有了这些评估器,就能把大模型的行为纳入自动化测试套件 —— 定义好预期阈值、评分标准,塞到 CI/CD 流水线里跑就行。
Spring AI 还能让你用一个小模型当「评委」,评估另一个模型的输出。比如用轻量模型自动给回答的相关性、语气打分,测试不同提示词版本的效果。
PART 07
避坑指南 & 最佳实践
PART 08
最后唠两句
要是你是 Spring Boot 开发者,想把生成式 AI 塞进应用栈里,Spring AI 绝对是最优解之一:不用跳出熟悉的技术栈,还能薅到大模型和各类工作流的羊毛。随着这个库和生态成熟,你能轻轻松松搭出对话智能体、RAG 系统、AI 驱动的服务。
刚入门的话,建议先整个小原型:选个 starter,配置个聊天模型,搭一个接口试试水。上手之后,再慢慢加向量库、多厂商支持、工具调用,最后配上生产级的监控,一步到位。