告别“拼接Prompt”,这些Spring AI特色能力让我直呼真香

张开发
2026/4/18 13:56:20 15 分钟阅读

分享文章

告别“拼接Prompt”,这些Spring AI特色能力让我直呼真香
告别“拼接Prompt”,这些Spring AI特色能力让我直呼真香上两篇文章聊了Spring AI的本地搭建和一些基础用法。这次不写搭建了,直接上硬菜——聊聊Spring AI那些让我觉得“这东西真的不一般”的特色能力。先说明一下我的立场:我不是Spring AI的布道师,更不是拿钱推广的。我就是一个在Java生态里摸爬滚打了好多年的普通开发者,因为工作原因接触过LangChain4j、LlamaIndex、Dify好几个框架。用下来的真实感受是:每个框架都有自己的脾气,但Spring AI最打动我的是它把Spring的那套工程化思维原封不动地搬到了AI场景里。今天聊的这几个案例,都是我在实际项目中反复折腾、踩坑、最后真香的东西。案例一:多模型切换,干掉“供应商锁定”焦虑先说说一个特别真实的痛点。去年我接手一个项目,客户一开始选了OpenAI的API,代码都写得差不多了,结果客户突然变卦,说数据不能出境,要换成国内某厂商的模型。这时候就体现出Spring AI多模型抽象的价值了。代码基本上就是改一下配置文件,核心逻辑完全不用动。传统写法的痛点:// 如果你直接封装OpenAI的API,换模型得重写publicclassOpenAIChatService{publicStringchat(Stringmessage){// 直接调用OpenAI的HTTP接口// 换成其他模型,整个类都得改}}Spring AI的解法:@ServicepublicclassChatService{privatefinalChatClientchatClient;// 注意:构造器注入ChatClient.BuilderpublicChatService(ChatClient.Builderbuilder){this.chatClient=builder.build();}publicStringchat(StringuserMessage){// 业务逻辑完全不知道背后用的是哪个模型returnchatClient.prompt().user(userMessage).call().content();}}配置上简单得让人怀疑人生:# 用OpenAIspring:ai:openai:api-key:${OPENAI_API_KEY}chat:options:model:gpt-4# 换成阿里云百炼,只改这几行spring:ai:dashscope:api-key:${DASHSCOPE_API_KEY}chat:options:model:qwen-max# 换成本地Ollama,只改这几行spring:ai:ollama:base-url:http://localhost:11434chat:options:model:qwen2.5:7b换模型的时候,改一下依赖和配置文件就行,核心代码一行不动。这种抽象的价值,只有你被供应商锁定坑过一次之后才能真正体会到。案例二:Tool Calling + 结构化输出,让AI真正“干活”老实说,单纯的聊天AI价值有限。真正让业务产生价值的是让AI能动手——查数据库、调用API、发邮件、创建工单。Spring AI的Tool Calling机制让我觉得最舒服的地方是:它把工具的定义写成了最自然的Java方法。场景:智能客服工单系统假设你要实现一个客服系统,用户可以问“我上周买的那件外套能退吗”,系统需要:判断用户是谁(查用户表)查询最近的订单(查订单表)判断退货策略(业务规则)创建退货工单(写工单表)用Spring AI实现:@ComponentpublicclassCustomerServiceTools{@Tool(description="根据用户名或手机号查询用户信息")publicUserInfogetUser

更多文章