【Java学习】Spring AI集成指南
在 Java 中使用 Spring AI 可以简化与生成式 AI(如 OpenAI、Hugging Face 等)的集成。以下是详细步骤和示例代码,帮助你快速上手。
1. 添加依赖
首先,在项目的 pom.xml 中添加 Spring AI 的依赖(以 OpenAI 为例):
xml
复制
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>0.8.1</version> <!-- 检查最新版本 -->
</dependency>
运行 HTML
如果使用 Gradle:
groovy
复制
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter:0.8.1'
注意:Spring AI 正在快速发展,版本可能频繁更新,请检查 Spring AI 官方文档 获取最新版本。
2. 配置 API 密钥
在 application.properties 或 application.yml 中配置 OpenAI 的 API 密钥:
properties
复制
# application.properties spring.ai.openai.api-key=YOUR_API_KEY
或 YAML 格式:
yaml
复制
# application.yml
spring:
ai:
openai:
api-key: YOUR_API_KEY
确保替换 YOUR_API_KEY 为实际的 OpenAI API 密钥。
3. 创建 AI 服务类
创建一个 Spring 服务类,注入 OpenAITemplate 或 ChatClient 来调用 AI 模型:
java
复制
import org.springframework.ai.client.AiClient;
import org.springframework.ai.client.AiResponse;
import org.springframework.ai.prompt.Prompt;
import org.springframework.ai.prompt.SystemPrompt;
import org.springframework.ai.prompt.messages.UserMessage;
import org.springframework.stereotype.Service;
@Service
public class AIService {
private final AiClient aiClient;
public AIService(AiClient aiClient) {
this.aiClient = aiClient;
}
public String generateText(String prompt) {
// 构建请求
Prompt request = new Prompt(new UserMessage(prompt));
// 调用 AI 模型
AiResponse response = aiClient.generate(request);
// 提取生成的文本
return response.getGeneration().getText();
}
}
4. 创建 REST 控制器
创建一个控制器,暴露 API 接口供外部调用:
java
复制
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AIController {
private final AIService aiService;
public AIController(AIService aiService) {
this.aiService = aiService;
}
@GetMapping("/generate")
public String generate(@RequestParam String prompt) {
return aiService.generateText(prompt);
}
}
5. 运行并测试
启动 Spring Boot 应用后,通过浏览器或工具(如 Postman)测试接口:
复制
http://localhost:8080/generate?prompt=用Java写一个Hello World程序
响应示例:
java
复制
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
高级用法
自定义模型参数
在生成文本时,可以调整温度(temperature)和最大 Token 数(maxTokens)等参数:
java
复制
PromptTemplate promptTemplate = new PromptTemplate("告诉我关于 {topic} 的信息");
Prompt prompt = promptTemplate.create(Map.of("topic", "量子力学"));
GenerationOptions options = new GenerationOptions();
options.setTemperature(0.7f);
options.setMaxTokens(200);
AiResponse response = aiClient.generate(prompt, options);
流式响应
如果需要实时流式响应(逐词返回结果),可以使用流式 API:
java
复制
aiClient.generateStream(prompt)
.subscribe(chunk -> {
System.out.print(chunk.getGeneration().getText());
});
切换 AI 模型供应商
Spring AI 支持多种模型供应商(如 OpenAI、Hugging Face、Azure OpenAI 等)。例如,切换到 Hugging Face:
-
修改依赖:
xml
复制
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-huggingface-spring-boot-starter</artifactId>
<version>0.8.1</version>
</dependency>
运行 HTML
-
配置 Hugging Face 的 API 密钥:
properties
复制
spring.ai.huggingface.api-key=YOUR_HF_API_KEY
常见问题
依赖找不到?
确保添加了 Spring 的仓库(如快照仓库):
xml
复制
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
运行 HTML
安全性
API 密钥应通过环境变量或配置服务器管理,避免硬编码在代码中:
properties
复制
spring.ai.openai.api-key=${OPENAI_API_KEY}
通过以上步骤,你可以快速将 AI 功能集成到 Java 应用中。更多高级功能(如 Embeddings、RAG 等)可参考 Spring AI 官方文档。
