Spring AI 入门指南:三步将AI集成到Spring Boot应用
无需深入AI底层实现,Java开发者也能快速构建智能应用
本文将介绍如何使用 Spring AI 在 Spring Boot 项目中快速集成 AI 能力。通过三步操作——添加依赖、配置 API 凭证和编写调用代码,Java 开发者可以轻松构建 AI 应用。
一、Spring AI 简介
Spring AI 是 Spring 官方推出的 AI 应用开发框架,旨在将 大语言模型 (LLM) 和 AI 能力无缝集成到 Spring 生态系统中3。它提供了一套简洁、统一、抽象的 API,让开发者能用熟悉的 Spring 风格(如 RestTemplate
、Repository
模式)调用不同 AI 提供商的模型3。
核心价值
简化集成:无需手写 HTTP 请求、解析 JSON,Spring 帮你搞定3。
统一抽象:更换 AI 提供商时,代码几乎不用改!3
Spring 风格:支持依赖注入、AOP、Actuator 等 Spring 全家桶特性3。
模块化设计:按需引入文本、图像、嵌入、向量库等模块3。
应用场景
Spring AI 能帮助实现多种 AI 应用场景,包括但不限于:
智能文本生成(如自动生成营销文案、产品描述、邮件草稿、代码片段、对话聊天机器人)3。
多模态处理(如图像内容分析描述、基于文本描述生成图片)3。
函数调用(让 AI 模型根据用户请求决定调用预定义的 Java 方法)3。
RAG (检索增强生成):结合向量数据库,让 AI 回答基于私有知识库的内容3。
二、环境准备
在开始前三步集成前,请确保你的开发环境满足以下要求:
JDK 17+:Spring Boot 3 和 Spring AI 需要 JDK 版本不低于 171。
Maven 或 Gradle:本文以 Maven 为例1。
IDE:推荐使用 IntelliJ IDEA 或其他你熟悉的 Java 开发环境1。
LLM API Key:本文以 DeepSeek 为例(因其价格便宜且无需科学上网),但你也可以使用 OpenAI、Azure OpenAI、阿里云百炼等兼容 OpenAI API 的模型服务110。
三、三步集成 Spring AI
下面我们通过三个步骤,演示如何将 Spring AI 集成到 Spring Boot 项目中。
步骤 1:添加依赖
首先创建一个新的 Maven 项目,并在 pom.xml
文件中进行如下配置:1
1. 设置 Spring Boot 父项目
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.0</version> <!-- 建议使用最新稳定版 -->
</parent>
2. 管理 Spring AI 的版本
通过 BOM 统一管理 Spring AI 相关依赖的版本,避免版本冲突:
<dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0</version> <!-- 使用最新稳定版 --><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
3. 添加具体依赖
<dependencies><!-- Spring Boot Web Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring AI OpenAI Starter --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency>
</dependencies>
注意:即使我们使用 DeepSeek 的 API,引入的也是 spring-ai-starter-model-openai
。这是因为 DeepSeek 采用了与 OpenAI 完全兼容的 API 规范,我们可以直接复用 OpenAI 的客户端实现。这种设计让切换不同的 AI 服务商变得非常简单——只需要更换 API Key 和端点地址即可1。
步骤 2:配置凭证
有了依赖后,接下来需要配置如何连接到 AI 服务。在 src/main/resources
目录下的 application.yml
文件中添加以下配置:
spring:ai:openai:api-key: your-api-key-here # 替换为你的实际API密钥base-url: https://api.deepseek.com # DeepSeek的API端点chat:options:model: deepseek-chat # 使用的模型名称
安全提示:直接将 API Key 写在配置文件中仅适合本地开发和快速测试,不要在生产环境中这样做!在生产环境中,推荐使用环境变量来管理你的密钥:
spring:ai:openai:api-key: ${SPRING_AI_OPENAI_API_KEY:} # 从环境变量读取base-url: https://api.deepseek.comchat:options:model: deepseek-chat
然后在你的系统环境变量或 IDE 运行配置中设置 SPRING_AI_OPENAI_API_KEY
。
步骤 3:编写代码调用
万事俱备,现在可以编写代码来调用 AI 模型了。1
1. 创建聊天控制器
创建一个 REST 控制器来处理 AI 对话请求:
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/chat")
public class ChatController {private final ChatClient chatClient;// 通过构造器注入ChatClient.Builderpublic ChatController(ChatClient.Builder chatClientBuilder) {this.chatClient = chatClientBuilder.build();}@GetMapping("/test")public String completion(@RequestParam String message) {return chatClient.prompt().user(message) // 设置用户输入.call() // 调用AI模型.content(); // 获取响应内容}
}
2. 启动应用测试
启动 Spring Boot 应用后,你可以通过浏览器、curl 或 API 测试工具(如 Apifox)访问接口:
http://localhost:8080/chat/test?message=给我讲一个关于Java编程的笑话
3. 配置跨域支持(可选)
如果需要从前端应用调用这个接口,需要配置 CORS 支持:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*") // 允许所有来源,生产环境应限制.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").allowedHeaders("*").allowCredentials(true).maxAge(3600);}
}
四、进阶用法
使用 PromptTemplate
PromptTemplate 可用于动态生成 Prompt,支持占位符,避免硬编码:
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.prompt.PromptTemplate;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/ai")
public class AdvancedChatController {private final ChatClient chatClient;public AdvancedChatController(ChatClient.Builder chatClientBuilder) {this.chatClient = chatClientBuilder.build();}@GetMapping("/joke")public String getTechJoke(@RequestParam String topic) {PromptTemplate template = new PromptTemplate("给我讲一个关于 {topic} 的技术冷笑话。");String prompt = template.render(Map.of("topic", topic));return chatClient.prompt().user(prompt).call().content();}
}
流式响应
对于长文本响应,可以使用流式响应提高用户体验:
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChat(@RequestParam String message) {return chatClient.prompt().user(message).stream() // 使用流式调用.content();
}
配置默认系统提示
你可以在创建 ChatClient 时配置默认的系统提示,定义 AI 的角色和行为:
五、最佳实践与注意事项
API 密钥管理:永远不要将 API 密钥提交到版本控制系统。使用环境变量或密钥管理服务1。
异常处理:在实际应用中,应该添加适当的异常处理机制:
@GetMapping("/test") public ResponseEntity<String> completion(@RequestParam String message) {try {String response = chatClient.prompt().user(message).call().content();return ResponseEntity.ok(response);} catch (Exception e) {return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("AI服务暂时不可用: " + e.getMessage());} }
性能考虑:AI API 调用可能有延迟,考虑添加超时设置和重试机制。
成本控制:设置使用限制和监控,避免意外的高额费用。
六、总结
通过 Spring AI,Java 开发者可以以熟悉的 Spring 方式快速集成 AI 能力。本文演示了如何通过三个简单步骤将 AI 功能添加到 Spring Boot 应用中:1
添加 Spring AI 依赖
配置 API 凭证
编写调用代码
Spring AI 的强大之处在于它提供了统一的抽象接口,让你可以轻松切换不同的 AI 提供商,而无需重写业务逻辑3。无论你是要构建智能聊天机器人、文本生成工具还是复杂的 RAG 系统,Spring AI 都能提供良好的支持。