Skip to main content
重磅:Spring AI 1.0 正式发布! 生产级 Java AI 框架终于到来,为企业级应用开发带来革命性变革。本文深入解析核心特性,助你快速驾驭 AI 开发浪潮。

核心突破一览

Spring AI 1.0(2025.5.20)标志着 Java 生态系统在 AI 领域的里程碑式飞跃。现在,企业级开发者可以用熟悉的 Spring 范式构建生产级 AI 应用:
  • 🚀 生产就绪 API:历经多个里程碑版本打磨,提供稳定、可靠、完整的生产级接口
  • 🔌 一体化模型接入:无缝集成 OpenAI、Anthropic、Vertex AI、DeepSeek 等主流大模型
  • 🧠 企业级 RAG 引擎:领先的检索增强生成框架,释放企业知识库价值
  • 🛠️ 智能工具调用:简化 AI 智能体开发,让模型轻松操作企业系统

API 架构升级(0.8→1.0)

1. 模型与客户端解耦

// 新架构下的客户端构建方式
ChatClient chatClient = new ChatClient(
    new OpenAiChatModel("your-api-key"),  // 模型实现与客户端解耦
    new PromptTemplate("您好,请回答:{{question}}")
);
核心变更:模型逻辑与客户端逻辑完全分离,ChatModel 接口专注模型通信,ChatClient 负责协调整体流程。这种架构让开发者能更灵活组合不同模型实现,同时保持统一的客户端接口。

2. 会话记忆标准化

// 新版聊天记忆的使用方式
@Bean
public ChatMemoryRepository chatMemoryRepository() {
    return new JdbcChatMemoryRepository(jdbcTemplate);
}

// 在聊天客户端中应用
chatClient.exchange(
    new ChatMemoryId("user-123"),
    new UserMessage("新的问题")
);
核心升级:全新的 ChatMemoryRepository 接口实现了会话记忆标准化,带来三大优势:
  • 📦 多样化存储:支持内存、JDBC、Redis、Cassandra 等多种持久化方案
  • 🧠 智能上下文管理:自动优化消息窗口大小,确保对话连贯性
  • 🏗️ 统一访问模式:简化开发流程,提高代码一致性

3. RAG 引擎升级:文档处理流水线

// 构建文档处理流水线
ChatClient chatClient = ChatClient.builder()
    .chatModel(chatModel)
    .advisor(new VectorStoreAdvisor(
        vectorStore,
        embeddingClient,
        List.of(
            new DocumentMetadataFilterPostProcessor(filterCriteria),
            new DocumentRerankingPostProcessor(threshold)
        )
    ))
    .build();
核心提升:全新的 DocumentPostProcessors API 取代旧版分散接口,实现企业级 RAG 能力:
  • 📊 精准控制检索质量:细粒度筛选、过滤与重排序,显著提升相关性
  • 🔄 可组合的处理流水线:灵活定制文档预处理、后处理工作流
  • 🎯 上下文优化:智能筛选和优先级排序,最大化模型输入窗口价值

4. 智能体框架升级:从函数到工具调用

Spring AI 1.0 将函数调用 API 全面升级为符合行业标准的工具调用 API,使开发智能体应用变得直观高效:
// 旧版函数调用
FunctionCallback.builder()
    .function("getCurrentWeather", new WeatherService())
    .description("获取指定位置的天气情况")
    .inputType(WeatherRequest.class)
    .build()
    
// 新版工具调用
FunctionToolCallback.builder("getCurrentWeather", new WeatherService())
    .description("获取指定位置的天气情况")
    .inputType(WeatherRequest.class)
    .build()
核心变更
  • FunctionCallbackToolCallback
  • ChatClient.Builder.defaultFunctions()ChatClient.Builder.defaultTools()
  • FunctionCallingOptionsToolCallingChatOptions
重大突破:全新的注解式工具定义让开发者效率倍增:
class SmartHomeTools {
    @Tool(description = "控制房间灯光开关")
    public void turnLight(String roomName, boolean on) {
        // 灯光控制逻辑
        log.info("将{}房间的灯光设置为:{}", roomName, on ? "开启" : "关闭");
    }
}

// 注册工具只需一行代码
String response = chatClient.prompt()
    .user("请把客厅的灯打开")
    .tools(new SmartHomeTools())  // 自动识别所有@Tool 注解方法
    .call()
    .content();
这一升级使智能体应用开发效率提升数倍,从复杂配置到简单注解,让 AI 调用业务逻辑变得轻而易举。完整迁移指南请参阅官方文档

DeepSeek 原生集成

Spring AI 1.0 全面集成了 DeepSeek 模型,提供专属 API 实现而非复用 OpenAI 模块。最大亮点是 DeepSeek 的思维链(chain-of-thought)完整保留在 API 响应中,使开发者能够:
  • 🔍 完整获取推理过程:捕获模型思考的每一步,不会在协议转换中丢失
  • 🧠 增强可解释性:展示 AI 决策的完整逻辑链,提升用户信任度
  • 🛠️ 细粒度访问控制:分别访问推理过程与最终答案,满足不同场景需求
// DeepSeek 推理模型示例
public void deepSeekReasonerExample() {
    // 配置推理模型
    DeepSeekChatOptions options = DeepSeekChatOptions.builder()
            .model(DeepSeekApi.ChatModel.DEEPSEEK_REASONER.getValue())
            .temperature(0.1f)  // 低温度确保推理一致性
            .build();
            
    // 创建推理提示
    Prompt prompt = new Prompt("两个数字:9.11 和 9.8,哪个更大?请详细解释", options);
    ChatResponse response = chatModel.call(prompt);

    // 获取完整推理链与最终答案
    DeepSeekAssistantMessage assistantMsg = 
            (DeepSeekAssistantMessage) response.getResult().getOutput();
    
    String reasoning = assistantMsg.getReasoningContent();
    String answer = assistantMsg.getText();
    
    System.out.println("推理过程:" + reasoning);
    System.out.println("最终答案:" + answer);
}
快速集成 DeepSeek 模型,只需一行依赖:
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-deepseek</artifactId>
    <version>1.0.0</version>
</dependency>

Spring AI 开发模式:三层灵活选择

Spring AI 1.0 提供了三层开发抽象,满足不同复杂度的项目需求。以 DeepSeek 为例: V1omNh

1. 🚀 自动配置模式 - 极速启动

适用场景:快速原型开发、标准 AI 应用 只需添加依赖和简单配置即可立即使用:
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-deepseek</artifactId>
    <version>1.0.0</version>
</dependency>
# application.properties
spring.ai.deepseek.api-key=${DEEPSEEK_API_KEY}
spring.ai.deepseek.model=deepseek-chat
spring.ai.deepseek.temperature=0.7
@RestController
public class AiController {
    @Autowired
    private ChatClient chatClient;  // 自动注入配置好的客户端

    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return chatClient.prompt().user(message).call().content();
    }
}

2. ⚙️ 手动配置模式 - 灵活定制

适用场景:企业应用、自定义参数配置、混合模型使用 通过 Java 配置精确控制模型行为:
@Configuration
public class DeepSeekConfig {
    @Bean
    public ChatModel deepSeekChatModel(@Value("${deepseek.api-key}") String apiKey) {
        // 定制模型参数
        DeepSeekChatOptions options = DeepSeekChatOptions.builder()
                .model(DeepSeekApi.ChatModel.DEEPSEEK_CHAT.getValue())
                .temperature(0.5f)
                .topP(0.95f)
                .build();
        
        return new DeepSeekChatModel(apiKey, options);
    }
    
    @Bean
    public ChatClient deepSeekChatClient(ChatModel deepSeekModel) {
        // 配置完整聊天客户端
        return ChatClient.builder()
            .chatModel(deepSeekModel)
            .defaultSystemPrompt("你是一个专业助手")
            .build();
    }
}

3. 🔧 底层 API 模式 - 完全掌控

适用场景:高级定制、特殊集成需求、最大化性能优化 直接操作底层 API,实现最大控制力:
@Service
public class AdvancedDeepSeekService {
    private final DeepSeekApi deepSeekApi;
    
    public AdvancedDeepSeekService(@Value("${deepseek.api-key}") String apiKey) {
        this.deepSeekApi = new DeepSeekApi(apiKey);
    }
    
    // 流式响应处理
    public Flux<String> streamChat(String prompt) {
        DeepSeekChatRequest request = DeepSeekChatRequest.builder()
                .model(DeepSeekApi.ChatModel.DEEPSEEK_CHAT.getValue())
                .messages(List.of(new UserMessage(prompt)))
                .stream(true)
                .temperature(0.3f)
                .build();
        
        // 返回响应式流
        return deepSeekApi.streamingChat(request)
                .filter(chunk -> chunk.getChoices().get(0).getDelta().getContent() != null)
                .map(chunk -> chunk.getChoices().get(0).getDelta().getContent());
    }
}
三层 API 架构让您可以根据项目需求自由选择适合的抽象级别:从零配置快速启动,到完全控制定制体验,Spring AI 1.0 全面覆盖您的 AI 开发需求。

Spring AI 中文文档

🚀 Spring AI 中文教程全新上线! 我们已将完整系列课程升级至 Spring AI 1.0.0 正式版,打造最权威的 Java AI 中文学习资源。立即访问:https://javaai.pig4cloud.com 该文档已经覆盖 Java AI 开发的常用知识点 spring ai/ langchain4j / deepseek4j 等 SDK 的使用 GGuscE