Spring AI 三条版本线同时更新:1.0.8、1.1.7 与 2.0.0-M7 发布

2026-05-23 23 预计阅读时间:1 分钟
来源:spring.io AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:7 分钟

Spring AI 近期同时推送了三个版本:1.0.8、1.1.7 和 2.0.0-M7。三条线并行推进,意味着不同阶段的用户都有了对应的更新入口——稳定线修 bug、功能线补特性、2.0 里程碑继续打磨大版本重构。如果你正在评估或已经用上 Spring AI,该选哪条线、怎么升级,是这篇文章要回答的问题。

三条版本线各自在做什么

1.0.x(当前 1.0.8)——这是最早的生产可用线,主打稳定。1.0.8 属于补丁版本,修复已知问题,不引入新特性。如果你的项目已经跑在 1.0.x 上且没有迫切的新功能需求,升级到 1.0.8 风险最低,直接改版本号即可。

1.1.x(当前 1.1.7)——功能增强线。1.1.x 相比 1.0.x 增加了更多模型适配、工具调用(Tool Calling)改进、向量存储扩展等。1.1.7 继续在这个基础上修 bug 和做小幅增强。新项目建议直接从 1.1.x 起步,能用到更完整的 API。

2.0.0-M7——下一个大版本的里程碑。2.0 带来了较大的架构调整:API 重新设计、模块拆分更细、对 Agent 编排和结构化输出的支持更深入。M7 还是里程碑(Milestone),不建议用于生产,但适合提前验证新 API 和迁移路径。

一句话总结:生产跑 1.0.8 或 1.1.7,新实验试 2.0.0-M7。

实际接入:用 1.1.7 搭一个最简对话服务

下面用一个可复制的 Spring Boot 项目示例,展示如何用 Spring AI 1.1.7 接入 OpenAI(或任何兼容 API 的模型)完成一次对话调用。

1. 添加依赖

pom.xml 中引入 Spring AI 的 BOM 和 starter:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.1.7</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <!-- OpenAI starter,也可换成 azure-openai、ollama 等 -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

如果用 Gradle,BOM 用 platform("org.springframework.ai:spring-ai-bom:1.1.7") 引入即可。

2. 配置 API Key

application.yml

spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}   # 建议用环境变量,不要硬编码
      base-url: https://api.openai.com  # 如用代理或兼容服务,改这里
      chat:
        options:
          model: gpt-4o-mini        # 选一个性价比合适的模型
          temperature: 0.7

3. 写一个对话接口

@RestController
@RequestMapping("/chat")
public class ChatController {

    private final ChatClient chatClient;

    public ChatController(ChatClient.Builder builder) {
        // ChatClient 是 1.1.x 推荐的 fluent API
        this.chatClient = builder.build();
    }

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

    @GetMapping("/stream")
    public Flux<String> askStream(@RequestParam String message) {
        return chatClient.prompt()
                .user(message)
                .stream()
                .content();
    }
}

启动后访问:

# 普通调用
curl "http://localhost:8080/chat?message=用三句话解释什么是RAG"

# 流式调用(需要 WebFlux 依赖)
curl "http://localhost:8080/chat/stream?message=用三句话解释什么是RAG"

ChatClient 是 1.1.x 的核心入口,比 1.0.x 直接用 ChatModel 更简洁——链式调用、内嵌 system prompt、工具注册都从这里完成。

2.0.0-M7 值得关注的变化

如果你准备试 2.0 里程碑,有几个方向可以提前验证:

  • API 重构ChatClientChatModel 的职责边界更清晰,Advisor(拦截器)机制取代了之前部分回调设计。
  • Agent 编排:2.0 加强了多步工具调用的编排能力,不再只是单轮 function call。
  • 结构化输出BeanOutputConverter 等类被整合进更通用的结构化输出模块,直接映射到 Java POJO 的路径更短。

一个 2.0 中结构化输出的伪代码示例(API 可能随里程碑调整):

// 2.0 里程碑中结构化输出的典型用法,具体 API 以正式版为准
record BookRecommendation(String title, String author, String reason) {}

Flux<BookRecommendation> recommendations = chatClient.prompt()
        .user("推荐三本关于分布式系统的书")
        .outputType(BookRecommendation.class)   // 直接指明目标类型
        .stream()
        .entities();                            // 流式返回实体

⚠️ 2.0.0-M7 是里程碑版本,API 仍可能变动。验证思路可以,上生产请等正式版。

升级决策清单

你的情况 建议动作
项目跑在 1.0.x,运行稳定 升到 1.0.8,只改版本号,回归测试即可
项目跑在 1.1.x,需要最新修复 升到 1.1.7,注意看 release note 里是否有行为变更
新项目起步 直接用 1.1.7,API 更完整,社区示例也多
想提前验证 Agent 编排或结构化输出新设计 单独建实验项目用 2.0.0-M7,不要混进生产依赖
用了 Ollama / Azure OpenAI 等非 OpenAI 模型 1.1.x 和 2.0 都有对应 starter,确认你用的模型 starter 版本兼容

最后一点:Spring AI 的版本迭代节奏很快,三条线并行意味着团队在同时推进稳定维护和架构演进。对你来说,选对版本线比追最新版本更重要——生产求稳,实验求新,不要在同一个项目里混用。


相关推荐