Spring AI 是 Spring 团队推出的人工智能集成框架,旨在简化 AI 模型(如 OpenAI、Hugging Face、Mistral、Azure OpenAI)与 Spring 应用的结合。
核心特性:
<dependency>
<groupId>org.springframework.aigroupId>
<artifactId>spring-ai-openai-spring-boot-starterartifactId>
<version>0.8.1version>
dependency>
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
base-url: https://api.openai.com/v1/
chat:
model: gpt-3.5-turbo
概念 | 说明 |
---|---|
LLM Client | 连接大型语言模型的客户端封装 |
Prompt | 提示语模板,用于格式化输入 |
Embedding | 文本向量化表示,用于检索和相似度匹配 |
Vector Store | 向量数据库(如 Redis、Pinecone、Chroma) |
RAG | 检索增强生成,结合检索与 LLM 生成回答 |
@Autowired
private OpenAiChatClient chatClient;
public void askModel() {
String result = chatClient.call("用一句话描述Spring AI");
System.out.println(result);
}
如果使用 Prompt 模板:
@Autowired
private PromptTemplate promptTemplate;
public void promptWithTemplate() {
Map<String, Object> params = Map.of("topic", "Spring AI", "style", "简洁");
Prompt prompt = promptTemplate.createPrompt(params);
System.out.println(chatClient.call(prompt));
}
支持多种风格(SpEL、Mustache、Handlebars 等)
src/main/resources/prompts/summary.st
用{{style}}的方式总结 {{topic}} 的核心内容。
PromptTemplate promptTemplate = new PromptTemplate(ResourcePromptTemplateLoader.fromClasspath("prompts/summary.st"));
Prompt prompt = promptTemplate.createPrompt(Map.of("style", "简洁", "topic", "Spring AI"));
Spring AI 提供标准接口对接向量数据库(如 Redis, Chroma, Milvus 等)
<dependency>
<groupId>org.springframework.aigroupId>
<artifactId>spring-ai-chroma-storeartifactId>
dependency>
spring:
ai:
embedding:
model: text-embedding-ada-002
@Autowired
EmbeddingClient embeddingClient;
EmbeddingRequest request = new EmbeddingRequest(List.of("Spring AI 是什么?"));
EmbeddingResponse response = embeddingClient.embed(request);
List<Float> vector = response.getResult().get(0).getEmbedding();
@Autowired
ChatClient chatClient;
public void chat() {
String response = chatClient.prompt()
.user("介绍一下 Spring AI")
.call()
.content();
System.out.println(response);
}
ChatResponse res = chatClient.prompt()
.system("你是一个Java专家")
.user("Spring AI 有什么优势?")
.call();
System.out.println(res.getResult().getOutput().getContent());
项目 | Spring AI | LangChain |
---|---|---|
开发语言 | Java / Kotlin | Python |
上手难度 | 简单,Spring Boot 原生集成 | 中等,需要了解链式结构和模块机制 |
社区支持 | Spring 官方维护 | 开源社区驱动(使用广泛) |
功能支持 | 基础功能完善,正在扩展中 | 丰富:RAG、Agents、Tool、Chains等 |
适用场景 | Java 企业应用、SpringBoot 项目 | 原型开发、快速迭代、学术/科研 |
api-key
https://api.openai.com
application.yml
的 model 名称,如 gpt-4
, gpt-3.5-turbo
@PromptTemplate
注解,或 ResourcePromptTemplateLoader
手动加载