跳到主要内容

1.1.0

云端
Spring AI 学习者

Spring AI 1.1.0 正式发布,累计合并 705 个提交,涉及 1270 个文件(+86,805 / -13,742 行)。作为 1.0.x 后的首个次版本升级,1.1.0 引入了统一的文本转语音(TTS)抽象、ElevenLabs 集成、OpenAI 多项能力增强以及 MCP 架构重构。

核心抽象

统一文本转语音(TTS)API

1.1.0 在 spring-ai-model 中新增 org.springframework.ai.audio.tts 包,为文本转语音提供统一抽象:

接口/类说明
TextToSpeechModel同步 TTS 模型接口,call(TextToSpeechPrompt) 返回 TextToSpeechResponse
StreamingTextToSpeechModel流式 TTS 模型接口,返回 Flux<Speech>
TextToSpeechPromptTTS 请求封装,包含 TextToSpeechMessage 列表和 TextToSpeechOptions
TextToSpeechResponseTTS 响应,包含 Speech 对象和 TextToSpeechResponseMetadata
Speech语音结果,封装音频数据(byte[] / Resource)和音频格式
TextToSpeechOptionsTTS 选项接口,支持 modelvoicespeedresponseFormat
DefaultTextToSpeechOptions默认选项实现,Builder 模式

破坏性变更:OpenAI 模块原有的 SpeechModel / SpeechPrompt / SpeechMessage / Speech 已移除,迁移至统一的 TextToSpeechModel 接口。

增强响应转换器

新增多个 ResponseTextCleaner 实现,用于清理模型输出中的格式化标记:

转换器说明
MarkdownCodeBlockCleaner移除 Markdown 代码块标记(```json ... ```...
ThinkingTagCleaner移除模型推理标签(<thinking>...</thinking>
WhitespaceCleaner规整多余空白字符
CompositeResponseTextCleaner组合多个 Cleaner 链式处理

BeanOutputConverter 新增 withResponseTextCleaner() 方法,支持在 JSON 解析前自动清理响应文本。

模型厂商

OpenAI

1.1.0 对 OpenAI 集成进行了大幅增强:

  • extraBody —— OpenAiChatOptions 新增 extraBody 字段,允许传入任意额外请求体参数(如 reasoning_effortverbosity 等),通过 @JsonAnySetter 反序列化灵活支持 OpenAI API 扩展
  • reasoningContent —— 支持推理模型的思考内容输出
  • promptCacheKey / safetyIdentifier —— 新增提示缓存和安全标识符支持
  • OpenAiFileApi —— 全新文件 API(413 行),支持文件上传、列表、检索、删除,为多模态输入和微调场景铺路
  • TTS 迁移 —— OpenAiAudioSpeechModel 重构为实现统一的 TextToSpeechModel 接口

ElevenLabs(新增)

新增 ElevenLabs TTS 集成:

  • ElevenLabsSpeechModel:实现 TextToSpeechModel 接口
  • 自动配置:spring-ai-autoconfigure-model-elevenlabs
  • Starter:spring-ai-starter-model-elevenlabs
  • 配置前缀:spring.ai.elevenlabs

MCP 协议

架构重构

MCP 自动配置在 1.1.0 中进行了全面重构,从单模块拆分为六模块:

客户端:common → httpclient / webflux
服务端:common → webmvc / webflux

每个传输实现独立为单独的自动配置模块,职责更清晰、扩展更容易。

新增传输方式

  • Streamable HTTP 传输 —— 新增 StreamableHttpClientTransport,支持标准 HTTP 协议的 MCP 通信(McpStreamableHttpClientProperties
  • SSE HTTP Client 传输 —— 新增 SseHttpClientTransport,基于 JDK HttpClient 的 SSE 客户端

Tool Callback 增强

  • 工具回调缓存 —— 新增 McpAsyncToolsChangeEventEmmiter / McpSyncToolsChangeEventEmmiter,基于事件驱动机制缓存工具列表,减少重复获取开销
  • 客户端注解扫描 —— 新增 McpClientAnnotationScannerAutoConfiguration,自动扫描 @McpTool 注解并注册为工具回调
  • ObjectProvider 注入 —— ToolCallbackProvider 注入改用 ObjectProvider,延迟初始化更健壮

连接详情抽象

新增 McpSseClientConnectionDetails 接口和 PropertiesMcpSseClientConnectionDetails 实现,将 SSE 连接配置从属性读集中管理,便于外部化配置和测试。

聊天记忆

MongoDB 持久化(新增)

新增 MongoChatMemoryRepository,支持 MongoDB 作为聊天记忆后端:

  • Starter:spring-ai-starter-model-chat-memory-repository-mongodb
  • 自动索引创建:MongoChatMemoryIndexCreator
  • 元数据返回增强:查询结果现包含完整元数据

Bug Fix 汇总

问题修复
OpenAI TTS 缺乏统一抽象新增 TextToSpeechModel 接口,重构 OpenAiAudioSpeechModel
MCP 工具频繁重复获取新增事件驱动缓存机制
MCP 缺少 Streamable HTTP 支持新增 HTTP 传输实现
BeanOutputConverter 被代码块标记干扰新增 ResponseTextCleaner 链式清理
MongoDB 聊天记忆索引未自动创建修复 MongoChatMemoryIndexCreator 扫描
PgVectorSchemaValidator 可见性不当改为 package-private
AnthropicChatModel 冗余调试日志移除 verbose 级别日志
OpenAI API 异常响应未正确处理新增畸形响应处理逻辑

基础设施

  • Spring Boot 3.5.7 —— 基于 Spring Boot 3.5.7 构建
  • MCP SDK 0.16.0 —— 升级 MCP 协议 SDK
  • CI/CD —— 新增快速 CI 工作流(fast-continuous-integration.yml),支持选择性模块构建

Spring AI 1.1.0 作为次版本升级,在保持向后兼容性的前提下,引入了统一的 TTS 抽象、ElevenLabs 集成和 MCP 架构重构,为后续功能扩展奠定了更坚实的基础。