一、Spring AI 概述

什么是Spring AI?
-
Spring生态的AI集成框架
-
统一API访问不同AI服务(OpenAI、Azure OpenAI、Anthropic等)
-
支持多种AI功能:聊天、文生图、嵌入、向量存储等
Spring AI 是一个用于 AI 工程的应用框架。 其目标是将 Spring 生态系统设计原则应用于 AI 领域,如可移植性和模块化设计,并推广将 POJO 作为应用构建模块到人工智能领域的应用。
二、学习资源
官方资源
-
参考文档:Spring AI Reference Documentation
实践建议
-
从OpenAI开始:先用OpenAI API熟悉基本概念
-
尝试本地模型:使用Ollama运行本地LLM
-
实现RAG应用:构建文档问答系统
-
集成到现有项目:为已有Spring Boot项目添加AI能力
三、核心概念
1. AI Models
-
聊天模型:ChatClient、ChatModel
-
嵌入模型:EmbeddingClient、EmbeddingModel
-
图像模型:ImageClient、ImageModel
-
语音模型:AudioClient、AudioModel
2. Prompt Engineering
java
PromptTemplate template = new PromptTemplate("请用{style}风格解释:{topic}");
Prompt prompt = template.create(Map.of("style", "简单易懂", "topic", "机器学习"))
3. 输出解析
java
@Parser(description = "天气预报响应")
public class WeatherResponse {
private String city;
private double temperature;
private String condition;
}
四、快速开始
1. 添加依赖
XML
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>0.8.1</version>
</dependency>
2. 基础配置
XML
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
chat:
model: gpt-3.5-turbo
# model: gpt-4.1-mini
3. 基本使用示例
java
@Service
public class ChatService {
private final ChatClient chatClient;
public String chat(String message) {
return chatClient.call(message);
}
// 流式响应
public Flux<String> streamChat(String message) {
return chatClient.stream(message)
.map(ChatResponse::getOutput);
}
}
四、核心功能详解
1. 聊天功能
java
// 带上下文对话
List<Message> messages = new ArrayList<>();
messages.add(new UserMessage("你好"));
messages.add(new AssistantMessage("你好!有什么可以帮助你?"));
messages.add(new UserMessage("Java是什么?"));
ChatResponse response = chatClient.call(new Prompt(messages));
2. 函数调用(Function Calling)
java
@Bean
public FunctionCallback weatherFunction() {
return FunctionCallbackWrapper.builder(new WeatherService())
.withName("getWeather")
.withDescription("获取城市天气")
.build();
}
3. RAG(检索增强生成)
java
// 1. 创建向量存储
VectorStore vectorStore = new InMemoryVectorStore(embeddingModel);
// 2. 添加文档
vectorStore.add(List.of(
new Document("Spring AI是Spring官方AI框架", Map.of("source", "docs"))
));
// 3. 检索相关文档
List<Document> docs = vectorStore.similaritySearch(request);
// 4. 增强提示
String enhancedPrompt = "基于以下信息:" + docs + "\n问题:" + question;
4. 多模态支持
java
// 图像生成
ImagePrompt prompt = new ImagePrompt("一只可爱的猫");
ImageResponse response = imageClient.call(prompt);
// 语音转文字
AudioPrompt audioPrompt = new AudioPrompt(audioFile);
AudioTranscription transcription = audioClient.call(audioPrompt);
五、支持的AI服务
主要Provider:
-
OpenAI:GPT、DALL-E
-
Azure OpenAI:Azure上的OpenAI服务
-
Anthropic:Claude模型
-
Google Vertex AI:Gemini模型
-
Hugging Face:开源模型
-
本地模型:Ollama、LM Studio等
