Spring AI 初探:Spring 生态的 AI 新成员#
Spring AI 是什么#
Spring 官方终于下场做 AI 框架了。Spring AI 是 Spring 生态里的新成员,目标是让 Java/Spring 开发者能方便地集成各种 AI 能力。
之前 Java 圈搞 AI 开发主要靠 LangChain4j,现在 Spring 官方也入局了,竞争挺有意思的。
Spring AI 的风格很"Spring":自动配置、Starter 依赖、注解驱动。用过 Spring Boot 的人上手会非常自然。
ChatClient:核心 API#
ChatClient 是 Spring AI 最核心的接口,设计思路类似 RestTemplate / WebClient。
先加依赖(以 OpenAI 为例):
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>配置:
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
chat:
options:
model: gpt-4o-mini使用起来:
@RestController
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}链式调用写起来很流畅:.prompt().user(message).call().content()。想要流式输出?把 .call() 换成 .stream() 就行。
Prompt 模板#
Spring AI 支持用模板构造提示词:
@GetMapping("/translate")
public String translate(@RequestParam String text, @RequestParam String lang) {
return chatClient.prompt()
.system("你是一个专业翻译")
.user(u -> u.text("请将以下文本翻译成{lang}:{text}")
.param("lang", lang)
.param("text", text))
.call()
.content();
}也能从 classpath 文件加载模板。Spring AI 用的模板引擎是 StringTemplate,变量语法跟 Spring 的 ${} 不同,用的是 {},我第一次用的时候没注意到这个差别,debug 了好一会儿。
无缝切换到 Ollama#
想用本地模型?换个 Starter 和配置就行:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: qwen2.5:7b代码完全不动。ChatClient 的用法一模一样,只是底层换了模型提供商。这个抽象层做得确实好,典型的 Spring 设计哲学——面向接口编程。
和 LangChain4j 对比#
两个都玩了一段时间,聊聊对比。
Spring AI 的好处:
- 原生 Spring 生态,自动配置省心
- ChatClient API 设计优雅,链式调用很流畅
- 切���模型后端只改配置,代码不动
- 长期来看跟 Spring 全家桶的整合会越来越深
LangChain4j 的好处:
- 功能更全,AiServices、Tools、Agent 更成熟
- 版本更稳定,已经有不少生产案例
- 社区活跃,文档和示例丰富
- 不绑定 Spring,更灵活
如果项目是 Spring Boot 的,Spring AI 用着确实更顺手。但需要 RAG、Agent、Function Calling 这些高级功能的话,LangChain4j 目前更完善。
我的判断:Spring AI 正式版出来之后,在 Spring 项目中大概率会成为主流选择。但现在还在早期��段,API 可能变动,生产环境要谨慎。
小结#
Spring AI 给了 Java 开发者一个原生的 AI 集成方案。ChatClient + 自动配置的体验很好,切换不同模型后端也很方便。
其实吧,Java 生态在 AI 这块虽然起步��� Python 晚,但 Spring AI 和 LangChain4j 都在快速发展。作为 Java 开发者,现在入场 AI 开发并不晚。工具已经够用了,剩下的就是找场景去实践。