在 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 官方文档。