Appearance
Spring AI 基础
Spring AI 提供了一套简单而强大的抽象,使开发人员能够轻松地将 AI 功能集成到他们的 Spring 应用程序中。本文将介绍 Spring AI 的基本概念和使用方法。
项目依赖
要开始使用 Spring AI,首先需要添加相关依赖。以下是在 Maven 项目中添加 Spring AI 的基本依赖示例:
xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter</artifactId>
<version>0.8.0</version>
</dependency>
如果使用特定的服务提供商,还需要添加相应的依赖,如:
xml
<!-- OpenAI 支持 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>0.8.0</version>
</dependency>
基本配置
Spring AI 遵循 Spring Boot 的配置约定,可以在 application.properties
或 application.yml
文件中配置:
yaml
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY} # 通过环境变量设置 API 密钥
client:
timeout: 10s # 设置客户端超时时间
AI 模型抽象
Spring AI 提供了统一的模型抽象接口:
ChatClient
- 用于与 LLM 进行对话交互EmbeddingClient
- 用于生成文本嵌入向量ImageClient
- 用于图像生成任务
基础代码示例:
java
@RestController
public class AIController {
private final ChatClient chatClient;
public AIController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ai/chat")
public Map<String, String> chat(@RequestParam String message) {
ChatResponse response = chatClient.call(new Prompt(message));
return Map.of("response", response.getResult().getOutput().getContent());
}
}
提示(Prompts)
在 Spring AI 中,Prompt
是与 AI 模型交互的基本单位。简单提示可以是纯文本字符串,但 Spring AI 支持更复杂的提示构建:
java
Prompt prompt = new Prompt("生成一个关于春天的短诗");
带有系统消息的提示:
java
UserMessage userMessage = new UserMessage("生成一个关于春天的短诗");
SystemMessage systemMessage = new SystemMessage("你是一位古风诗人,擅长五言绝句");
Prompt prompt = new Prompt(List.of(systemMessage, userMessage));
响应处理
AI 模型的响应通过 ChatResponse
对象获取:
java
ChatResponse response = chatClient.call(prompt);
String content = response.getResult().getOutput().getContent();
对于流式响应:
java
StreamingChatClient streamingChatClient = ...;
Flux<ChatResponse> responseStream = streamingChatClient.stream(prompt);
responseStream.subscribe(chunk -> {
System.out.println("收到部分响应: " + chunk.getResult().getOutput().getContent());
});
错误处理
Spring AI 使用标准的 Spring 异常处理机制:
java
try {
ChatResponse response = chatClient.call(prompt);
// 处理响应
} catch (AiException e) {
// 处理 AI 特定错误
} catch (Exception e) {
// 处理其他错误
}
总结
Spring AI 提供了一套简洁而强大的抽象,使开发人员能够轻松地集成和使用各种 AI 服务。通过统一的接口和 Spring Boot 的自动配置,大大简化了 AI 功能的开发流程。在后续章节中,我们将深入探讨更多高级功能,包括模型集成、提示工程、向量存储等内容。