Spring AI 实战(1):Java 开发者如何优雅接入大模型
这是《Spring AI 实战》系列的第一篇。本系列从「为什么用」讲到「怎么用」再到「为什么能这么用」篇篇附完整代码。如果你已经有 Spring Boot 技术栈又想接大模型这篇帮你把底层逻辑理清楚。为什么需要 Spring AI2023 年以来AI 应用开发几乎被 Python 垄断。LangChain、LlamaIndex 等框架让 Python 开发者如鱼得水而 Java 开发者只能眼巴巴看着——要么硬写 HTTP 调用 OpenAI API要么在 Spring Boot 里嵌 Python 脚本哪种都别扭。Spring AI 就是来解决这个问题的。它不是一个「Java 版 LangChain」它的野心是让 AI 能力成为 Spring 生态的一等公民就像 Spring Data 统一了数据库访问、Spring Security 统一了安全一样Spring AI 要做的是统一 AI 模型接入的标准抽象层。核心设计Portable APISpring AI 最巧妙的设计在于它的可移植抽象。看这段代码RestControllerpublicclassChatController{privatefinalChatClientchatClient;publicChatController(ChatClient.Builderbuilder){this.chatClientbuilder.build();}GetMapping(/chat)publicStringchat(RequestParamStringmessage){returnchatClient.prompt().user(message).call().content();}}注意这段代码里没有任何 OpenAI、Ollama、Azure 的字眼。你的application.yml决定它连的是谁# 连接 OpenAIspring:ai:openai:api-key:${OPENAI_API_KEY}chat:options:model:gpt-4o换成 Ollama 本地模型只需改配置文件业务代码零改动spring:ai:ollama:base-url:http://localhost:11434chat:model:qwen3这就是Portable API的核心价值——模型供应商的切换不该是架构级变更。RAG真需求不是 buzzwordRAG检索增强生成被提太多次听起来像 buzzword但你做过实际业务就知道它的必要性。大模型的训练数据有截止日期它不知道你的内部文档、最新的产品价格、昨天刚改的业务规则。直接 fine-tune 成本高、周期长RAG 是目前性价比最高的方案。Spring AI 对 RAG 的支持很务实BeanpublicVectorStorevectorStore(EmbeddingModelembeddingModel){// 用 PGVector 作向量存储——大多数团队已有 PostgreSQLreturnnewPgVectorStore(jdbcTemplate,embeddingModel);}// 查询时自动完成 embedding 相似度检索 prompt 组装ListDocumentcontextvectorStore.similaritySearch(SearchRequest.query(userQuery).withTopK(5));不需要引入新数据库不需要写 embedding 逻辑三行代码拿到相关文档塞进 prompt 就能让模型回答「你们产品的退款政策是什么」。Tool Calling让 AI 调用你的业务代码这是 Spring AI 最让我觉得「对味」的设计。Function Calling工具调用不是让 AI 替你写代码而是你告诉 AI「我有这些能力可以调用」AI 根据对话内容决定要不要调、怎么调。比如ServicepublicclassWeatherTools{Tool(description根据用户指定的城市查询实时天气)publicStringgetWeather(ToolParam(description城市名称如 北京)Stringcity){// 实际项目里这里查天气 API此处返回示例returncity晴26℃东南风3级;}}用户在聊天界面输入「北京今天天气怎么样」Spring AI 会自动识别意图用户想查天气匹配能力getWeather函数的 description 最吻合提取参数从输入中提取city 北京调用函数执行getWeather把返回值交给大模型让它用自然语言回答用户整个链路完全自动化你只需用注解声明函数。一套纯 Java 后端现在直接拥有了自然语言交互界面。什么情况不适合 Spring AI说实话Spring AI 当前版本1.0.x还在快速迭代期文档覆盖不全部分场景需要看源码才能搞清楚。以下情况慎重需要复杂 Agent 编排Spring AI 的 Agent 能力还在早期不如 LangChain/LangGraph 成熟团队以 Python 为主不必强行用 Java工具选最顺手的极简单调用场景如果只是偶尔调一下 OpenAI API直接写 HTTP Client 更轻量但对于已经有 Spring Boot 技术栈的团队Spring AI 是目前最务实的 AI 集成方案。不需要学新语言、不需要换基础设施、不需要推翻现有架构——用你已有的技能和工具把 AI 能力嵌入业务。这才是「AI 原生应用」该有的样子不是从零造新系统而是让你的系统长出了 AI 能力。小结Spring AI 的本质是用一套 Portable API 把「调模型」变成标准 Spring 组件换模型改配置、做 RAG 有现成抽象、接业务靠Tool声明。对 Java 团队来说这是目前接入大模型最低成本的路。如果这篇对你有帮助点个关注 我会持续更新 Spring AI 实战系列从聊天、RAG 到原理篇篇带完整代码关注不迷路。博主10 年 Java 全栈开发优质创作者。专注 Spring 源码、架构设计与 Spring AI 实战。