?一、Spring AI 簡介
在人工智能技術快速迭代的今天,Spring AI 作為 Spring 生態系統的新生力量,正在成為 Java 開發者擁抱生成式 AI 的最佳選擇。該框架通過模塊化設計實現了與主流 AI 服務(如 OpenAI、Anthropic)的無縫對接,同時支持本地模型部署(如 Ollama),為開發者提供了靈活高效的 AI 集成方案。
?
?核心價值體現:
- 生態融合:完美繼承 Spring Boot 的自動配置特性,通過簡單配置即可接入 AI 服務
- 多模型支持:統一抽象層兼容 OpenAI GPT、Mistral 等 20+主流模型
- 企業級特性:內置重試機制、限流策略、監控指標等生產級功能
- 全棧能力:覆蓋文本生成、圖像處理、向量檢索等完整 AI 應用場景
?
?二、環境準備
?1. 開發環境要求
- JDK 17+(推薦 Azul Zulu JDK)
- Spring Boot 3.2.x
- Maven 3.8.6+ 或 Gradle 8.5+
?
?2. 項目初始化
通過 Spring Initializr 創建項目時選擇:
bash
Project: Maven Project
Language: Java
Spring Boot: 3.2.1
Dependencies: Spring Web, Spring AI Starter
?
?3. 依賴配置
在 `pom.xml` 中添加核心依賴:
xml
<dependency>
? ? <groupId>org.springframework.ai</groupId>
? ? <artifactId>spring-ai-starter</artifactId>
? ? <version>0.8.1</version>
</dependency>
<!-- OpenAI 服務支持 -->
<dependency>
? ? <groupId>org.springframework.ai</groupId>
? ? <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
? ? <version>0.8.1</version>
</dependency>
?
?三、快速入門實踐
?1. 配置 API 密鑰
在 `application.yml` 中設置服務憑證:
yaml
spring:
? ai:
? ? openai:
? ? ? api-key: sk-your-api-key-here
? ? ? chat:
? ? ? ? options:
? ? ? ? ? model: gpt-3.5-turbo
? ? ? ? ? temperature: 0.7
?
?2. 創建聊天服務
java
@Service
public class ChatService {
? ??
? ? @Autowired
? ? private ChatClient chatClient;
?
? ? public String generateResponse(String prompt) {
? ? ? ? ChatResponse response = chatClient.call(prompt);
? ? ? ? return response.getResult().getOutput().getContent();
? ? }
}
?
?3. 控制器實現
java
@RestController
@RequestMapping("/api/chat")
public class ChatController {
? ??
? ? @Autowired
? ? private ChatService chatService;
?
? ? @GetMapping
? ? public String chat(@RequestParam String message) {
? ? ? ? return chatService.generateResponse(message);
? ? }
}
?
?4. 測試接口
通過 curl 發送請求:
bash
curl "http://localhost:8080/api/chat?message=用Java實現快速排序"
?
?四、核心功能解析
?1. 模型管理
Spring AI 提供統一的模型訪問接口:
java
@Autowired
private ModelManager modelManager;
?
// 加載本地模型
TensorFlowModel model = modelManager.loadModel("classpath:model.pb");
?
// 調用遠程服務
OpenAiChatOptions options = OpenAiChatOptions.builder()
? ? .withTemperature(0.5)
? ? .build();
?
?2. 提示工程
通過模板化提示提升輸出質量:
java
PromptTemplate template = new PromptTemplate("作為{role},請用{language}解釋{topic}");
template.addVariable("role", "資深架構師");
template.addVariable("language", "中文");
template.addVariable("topic", "微服務架構設計");
?
?3. 向量處理
文本向量化實現語義檢索:
java
TextEmbedding embedding = new OpenAiTextEmbedding();
float vector = embedding.embed("Spring AI 入門指南");
?
?4. RAG 增強
結合檢索增強生成技術:
java
RetrievalChain chain = RetrievalChain.builder()
? ? .withRetriever(vectorRetriever)
? ? .withPromptTemplate(promptTemplate)
? ? .build();
?
?