Skip to content

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.propertiesapplication.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 功能的开发流程。在后续章节中,我们将深入探讨更多高级功能,包括模型集成、提示工程、向量存储等内容。