Spring AI 是 Spring 官方推出的用于构建人工智能(AI)应用的全新框架,旨在将 Spring 生态的简洁性、一致性和生产力优势带入 AI 开发领域。截至 2025 年,Spring AI 已成为 Java 开发者集成大语言模型(LLM)、向量数据库、提示工程等 AI 能力的重要工具。
以下是 Spring AI 的核心知识点系统分析,涵盖其设计目标、架构组成、关键特性与使用要点:
一、Spring AI 的定位与目标
✅ 核心理念
- 统一抽象:为不同 LLM 提供一致的编程接口(如 OpenAI、Anthropic、Ollama、Azure OpenAI、Google Vertex AI 等)。
- Spring 原生集成:无缝融入 Spring Boot 应用,支持自动配置、依赖注入、AOP、测试等。
- 低侵入性:开发者无需深入 Prompt 工程或模型细节,即可快速构建 AI 功能。
- 可扩展性:支持自定义模型适配器、输出解析器、向量存储等。
🎯 目标:让 Java 开发者像调用普通 Service 一样调用 AI 模型。
二、核心组件与架构
Spring AI 的架构围绕"输入 → 处理 → 输出"流程设计,主要包含以下模块:
1. AI Client 抽象(AiClient / StreamingAiClient)
- 统一接口发送 Prompt 并获取响应。
- 支持同步(
call())和流式(stream())调用。 - 自动处理序列化、错误重试、超时等。
java
String response = aiClient.generate("介绍一下 Spring AI");
2. Prompt 与 Message 管理
-
Prompt:封装用户输入、系统指令、上下文。 -
Message:分为UserMessage、SystemMessage、AssistantMessage,支持多轮对话。 -
支持 模板化 Prompt (类似 Thymeleaf):
javaPromptTemplate template = new PromptTemplate("你好,{name}!"); Prompt prompt = template.create(Map.of("name", "张三"));
3. Output Parser(输出解析器)
-
将 LLM 的非结构化文本转换为 Java 对象(POJO)。
-
内置 JSON、List、Enum 等解析器,也支持自定义。
-
示例:直接返回
User对象:javaUser user = aiClient.generate(prompt, User.class);
4. Function Calling(函数调用 / Tool Use)
- 允许 LLM 调用外部 Java 方法(如查询数据库、调用 API)。
- 通过
@Tool注解注册工具方法,Spring AI 自动注册到 LLM。 - 实现 ReAct(Reason + Act) 模式,提升 AI 智能性。
java
@Component
public class WeatherService {
@Tool("获取某城市的当前天气")
public String getCurrentWeather(String city) {
return "北京:晴,25°C";
}
}
5. Embeddings 与向量存储(Vector Store)
- 支持生成文本嵌入(Embedding),用于语义搜索、RAG(检索增强生成)。
- 集成主流向量数据库:
- Redis
- PostgreSQL(pgvector)
- Milvus
- Weaviate
- Pinecone(社区支持)
- 提供统一
VectorStore接口,实现"存入文档 → 向量化 → 相似检索"。
6. Observability 与监控
- 与 Micrometer、OpenTelemetry 集成,记录 LLM 调用耗时、Token 使用量、错误率。
- 支持日志追踪(Trace ID 关联业务请求)。
三、关键技术特性详解
🔹 1. RAG(Retrieval-Augmented Generation)支持
Spring AI 原生支持构建 RAG 应用:
- 用户提问 →
- 在向量库中检索相关文档 →
- 将文档作为上下文注入 Prompt →
- LLM 生成答案。
java
List<Document> docs = vectorStore.similaritySearch(query, 3);
String context = docs.stream().map(Document::getContent).collect(Collectors.joining("\n"));
String answer = aiClient.generate("基于以下信息回答:" + context + "\n问题:" + query);
🔹 2. 多模态初步支持(实验性)
部分模型(如 GPT-4V)支持图像输入,Spring AI 提供 Media 类封装图片、音频等。
🔹 3. 异步与响应式支持
- 支持
CompletableFuture和 Reactor(Mono/Flux)。 - 适用于高并发 AI 服务场景。
🔹 4. 测试支持(Test Support)
- 提供
@ExpectedResponse注解,模拟 LLM 返回固定内容,便于单元测试。 - 避免测试时真实调用昂贵或不稳定的 LLM API。
四、典型应用场景
| 场景 | Spring AI 实现方式 |
|---|---|
| 智能客服问答 | Prompt + RAG + Function Calling |
| 文档摘要生成 | AiClient + OutputParser |
| 代码生成助手 | SystemMessage + UserMessage + 流式输出 |
| 企业知识库问答 | 向量存储 + 语义检索 + LLM 生成 |
| 数据分析报告 | 调用数据库工具 + 生成自然语言结论 |
五、与其他框架对比
| 框架 | 语言 | 特点 |
|---|---|---|
| Spring AI | Java/Kotlin | Spring 生态原生,企业级集成强 |
| LangChain | Python/JS | 功能全面但学习曲线陡 |
| LlamaIndex | Python | 专注 RAG,适合研究 |
| Semantic Kernel | C#/Python | 微软出品,强调插件生态 |
✅ Spring AI 优势:对 Java 企业开发者最友好,无需切换技术栈。
六、学习与使用建议
-
前提知识:
- 熟悉 Spring Boot(自动配置、Starter 机制)
- 了解基本 LLM 概念(Prompt、Token、Embedding)
-
快速上手:
-
添加依赖(以 OpenAI 为例):
xml<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>1.0.0-M2</version> <!-- 注意版本 --> </dependency> -
配置
application.yml:yamlspring: ai: openai: api-key: ${OPENAI_API_KEY} base-url: https://api.openai.com/v1
-
-
官方资源:
总结
Spring AI 的核心价值在于:将复杂的 AI 集成简化为 Spring 开发范式。它不是要取代 LangChain,而是为 Java 企业应用提供一条"低摩擦、高可靠"的 AI 落地路径。
💡 关键记忆点:
- 统一 Client → 屏蔽模型差异
- Prompt 模板 + Output 解析 → 结构化输入输出
- Function Calling + Vector Store → 构建智能体与 RAG
- Spring Boot 原生体验 → 开箱即用,测试监控齐全
随着 Spring AI 的持续演进(已进入 1.x 里程碑版本),它有望成为 Java 领域 AI 应用开发的事实标准。