Spring AI 1.0.0 M7 釋出

釋出 | Mark Pollack | 2025年4月10日 | ...

我們很高興地宣佈 Spring AI 1.0.0 Milestone 7 的釋出。這將是最後一個里程碑版本。下個月將釋出 RC1 版本,緊接著在 Spring IO 巴塞羅那會議之前釋出 GA 版本。

為了慶祝這次釋出,我們在 AI 生成音樂播放列表 中添加了一首新歌,歌詞由 Josh Long 和 Claude 創作!快來收聽 最新曲目,為您的部落格閱讀和編碼體驗增添樂趣。

以下是本次釋出的主要變更。請注意,存在破壞性變更!

破壞性變更

Spring AI 1.0.0-M7 引入了多項重要變更,這些變更與早期 SNAPSHOT 版本中引入的結構性改進保持一致。這些變更旨在打造一個更模組化、更易於維護的程式碼庫,同時減少應用程式中的不必要依賴。

Artifact ID 變更

最顯著的變更是 Spring AI 啟動器 artifact 的命名模式

  • 模型啟動器:spring-ai-{model}-spring-boot-starterspring-ai-starter-model-{model}
  • 向量儲存啟動器:spring-ai-{store}-store-spring-boot-starterspring-ai-starter-vector-store-{store}
  • MCP啟動器:spring-ai-mcp-{type}-spring-boot-starterspring-ai-starter-mcp-{type}

包變更

一些類已移動到新的包中,以更好地反映其領域職責。

  • KeywordMetadataEnricherSummaryMetadataEnricherorg.springframework.ai.transformer 移動到 org.springframework.ai.chat.transformer
  • ContentMediaContentMediaorg.springframework.ai.model 移動到 org.springframework.ai.content

您的 IDE 應該能輕鬆處理這些重構。

新模組結構

如上方“核心架構改進”部分所述,專案已從單體核心重構為專門的領域模組。

這種模組化方法允許您僅包含所需的功能,從而實現更小的部署和更清晰的元件邊界。

重要的是,如果您使用 Spring AI starter,此更改不應構成破壞性更改,因為它們現在會自動匯入新的模組化依賴項。只有直接引用先前單體 artifact 的應用程式才需要更新其依賴項。

ToolContext 變更

ToolContext 類已得到增強,以支援顯式和隱式工具解析,並且僅在顯式請求時才將工具包含在模型呼叫中。

其他資源

有關這些變更的更多詳細資訊,請參閱

有兩種方法可以將您的專案更新到 Spring AI 1.0.0-M7

  1. 使用 Claude Code CLI 工具 和此 提示。您也可以使用其他 AI 助手工具,但我們僅測試了 Claude Code。請注意,此自動化方法處理了 artifact ID 更改、包重定位和模組結構更改,但尚未自動處理升級到 MCP 0.9.0 的更改。

  2. 有關詳細說明,包括關於手動更新 MCP 相關程式碼的指導,請參閱升級說明

核心架構改進

  1. 全面的模組化架構

    • 專案已完全從單體核心重構為專門的領域模組,提供了
      • 減少的依賴佔用空間:應用程式只需包含實際使用的模組
      • 最小化的傳遞依賴:與第三方庫的衝突更少
      • 更清晰的關注點分離:每個模組都有明確的職責

    Spring AI Dependencies

    • spring-ai-commons:基礎模組,不依賴於其他 Spring AI 模組
      • 核心領域模型(DocumentTextSplitter 等)
      • JSON 工具和資源處理
      • 結構化日誌記錄和可觀察性支援
    • spring-ai-model:基於 commons 提供 AI 功能抽象
      • 介面,如 ChatModelEmbeddingModelImageModel
      • 訊息型別和提示模板
      • 函式呼叫框架(ToolDefinitionToolCallback
      • 內容過濾和觀察支援
    • spring-ai-vector-store:統一的向量資料庫抽象
      • 用於相似性搜尋的 VectorStore 介面
      • 支援 SQL 風格表示式的高階過濾
      • SimpleVectorStore 用於記憶體使用
      • Embedding 的批次處理支援
    • spring-ai-client-chat:高階對話式 AI API
      • ChatClient 介面
      • 透過 ChatMemory 進行對話持久化
      • 使用 OutputConverter 進行響應轉換
      • 基於 Advisor 的攔截
      • 同步和響應式流支援
    • spring-ai-advisors-vector-store:連線聊天和向量儲存以實現 RAG
      • QuestionAnswerAdvisor:將上下文注入提示
      • VectorStoreChatMemoryAdvisor:儲存/檢索對話歷史記錄
    • spring-ai-model-chat-memory-*:專用持久化實現
      • Cassandra、Neo4j 和 JDBC 實現
    • spring-ai-rag:用於檢索增強生成的全面框架
      • RAG 管道的模組化架構
      • RetrievalAugmentationAdvisor 作為主要入口點
      • 函數語言程式設計原則與可組合元件
  2. 模組化自動配置

    • 將單個單體自動配置 artifact 替換為每個元件的獨立自動配置 artifact
      • 模型自動配置:spring-ai-autoconfigure-model-{model}
      • 向量儲存自動配置:spring-ai-autoconfigure-vector-store-{store}
      • MCP 自動配置:spring-ai-autoconfigure-mcp-{type}
    • 此更改最大限度地減少了與 Google Protocol Buffers 和 gRPC 等庫的依賴衝突
    • 應用程式現在只包含實際使用的元件的自動配置
    • 使用相應的 starter 依賴項時,這些自動配置 artifact 會被傳遞性地包含
  3. 包重組

    • 類的戰略性遷移,以更好地反映其領域職責
      • KeywordMetadataEnricherSummaryMetadataEnricherorg.springframework.ai.transformer 移動到 org.springframework.ai.chat.transformer
      • ContentMediaContentMediaorg.springframework.ai.model 移動到 org.springframework.ai.content
    • 改進的包命名約定,以提高可發現性和組織性
  4. 框架增強

    • 為 MethodToolCallbackProvider 添加了 AOP 代理支援,以實現更靈活的整合
    • 增強了 JSON 序列化的執行時提示配置,以改進原生映象支援
    • 透過標準化配置改進了 Spring Boot 整合
    • 增強了所有模組的可觀察性和指標收集

升級到 MCP 0.9.0

Spring AI 1.0.0-M7 集成了最新的 MCP 參考實現 Java SDK 版本 0.9.0,帶來了重大的架構改進

  • 基於會話的架構:改進了對多個併發客戶端連線的處理,並增強了會話之間的隔離性
  • 基於交換的互動:新的交換物件提供了客戶端和伺服器之間的上下文感知互動
  • 增強的傳輸提供程式抽象:實現了更清晰的連線管理和通訊處理之間的分離
  • 改進的工具管理:透過名稱改進了工具的去重,以避免在複雜場景中發生衝突
  • 簡化的伺服器配置:為配置和管理 MCP 伺服器提供了簡化的 API
  • 全面的 WebFlux 和 WebMvc 支援:為響應式和 Servlet 應用程式增強了傳輸提供程式

這些改進帶來了更健壯、更具擴充套件性的 MCP 實現,能更好地符合 MCP 規範。有關詳細遷移指南,請參閱 MCP Java SDK 變更的升級說明部分。

Spring AI Examples 儲存庫中的所有示例均已更新,以相容最新的 MCP 實現:Spring AI Examples repository

新增和增強的模型整合

  1. Anthropic Claude 更新

    • 添加了對 Claude 3.7 Sonnet 模型支援,並將其設為預設
    • 增強了“思考”能力(THINKING 和 REDACTED_THINKING 塊)
    • 重新命名了與函式相關的 API 為與工具相關的 API,以保持一致性
    • 添加了對 Anthropic API 請求中自定義 HTTP 標頭的支援
    • 改進了選項,增加了 equals、hashCode 和 deep copy 支援
  2. Mistral AI 增強

    • 添加了稽核模型支援,用於檢測潛在的有害內容
    • 實現了具有 JSON schema 功能的自定義結構化輸出
    • 增強了安全功能和內容過濾
  3. Ollama 改進

    • 添加了 min_p 引數以改進取樣控制
    • 添加了對 qwq 模型支援
    • 添加了對 LLAMA3_2_3B 模型支援
  4. Azure OpenAI 更新

    • 增強了 AzureOpenAiChatOptions
    • 修復了自動配置的 opt-in 行為
    • 改進了與 Azure 服務的整合
  5. OpenAI 增強

    • 更改了 OpenAI Audio Speech API 中的 voice 引數為 string 型別
    • 為 OpenAI Audio API 添加了缺失的音訊格式
    • 使用 equals、hashCode 和 deep copy 功能增強了 OpenAiChatOptions

Docker Model Runner 支援

Spring AI 1.0.0-M7 增加了對 Docker Desktop 4.40 的 Model Runner 的支援,實現了與本地執行的 AI 模型的無縫整合

  • OpenAI 相容 API:Docker Model Runner 提供了一個本地推理 API,設計上相容 OpenAI API,從而可以輕鬆地與 Spring AI 整合
  • 標準 OCI Artifacts:模型以標準 OCI artifact 的形式分佈在 Docker Hub 的 ai 名稱空間
  • 多種配置選項:
    • 直接 TCP 連線到 Model Runner
    • 透過 Testcontainers 整合,用於開發和測試
  • 簡單配置:只需使用自定義基本 URL 配置 OpenAI 客戶端
    spring.ai.openai.api-key=ignored
    spring.ai.openai.base-url=https://:12434/engines
    spring.ai.openai.chat.options.model=ai/gemma3
    
  • 完整功能支援:所有 Spring AI 功能,包括函式呼叫、流式傳輸等,均可與 Docker Model Runner 配合使用
  • 本地模型執行:在 Apple Silicon 上本地執行模型,無需將資料傳送到外部服務

有關詳細資訊,請查閱 Spring AI Docker Model Runner 文件以及我們配套的部落格文章 Spring AI with Docker Model Runner,該文章深入探討了此整合。

特別感謝 Eddú Meléndez 對此功能做出的重要貢獻。

工具和多模態能力

  1. 工具執行框架

    • 引入了 ToolExecutionEligibilityPredicate 介面
    • 透過 MCP 伺服器按名稱改進了工具去重
    • 增強了 MCP 工具回撥中的錯誤處理
    • 標準化了 MCP 工具名稱格式
  2. 多模態支援

    • 支援工具呼叫結果中的 base64 編碼影像
    • 處理 JSON 響應中的 base64 編碼影像
    • 增強了影像轉換能力
    • 支援工具響應中的自定義 MIME 型別
  3. 文件處理

    • 添加了 JSoup HTML 文件讀取器,用於解析網頁內容
    • 增強了文件格式化能力
    • 向 ContextualQueryAugmenter 添加了 documentFormatter 引數

記憶體和儲存

  1. 聊天記憶體實現

    • 添加了 ChatMemory 的 JDBC 實現
    • 將 Cassandra 聊天記憶體實現遷移到其自己的模組
    • 添加了 Neo4j 聊天記憶體實現
  2. 向量儲存增強

    • 添加了 Couchbase 向量儲存支援
    • 移除了 CosmosDBVectorStore 中對分割槽鍵路徑的斷言
    • 使用原生表示式增強了 Milvus 向量儲存
    • 添加了 Milvus 中資料庫集合的配置選項
    • 條件性啟用單個向量儲存實現
    • 增強了 PgVectorStore,使其支援基於 PgIdType 的 schema 生成

查詢處理

  1. 檢索增強
    • 向 RetrievalAugmentationAdvisor 中的 Query 添加了 Context 支援
    • 移除了所有 QueryTransformer 實現中的預設 temperature
    • 增強了上下文處理,以提高相關性

開發者體驗

  1. Spring Boot 整合

    • 更新了支援的 Spring Boot 版本
    • 改進了自動配置模式
    • 向 MCP 自動配置添加了 boot 配置處理器
  2. AOT 和原生映象支援

    • 改進了提前編譯支援
    • 增強了原生映象相容性的執行時提示
    • 對 JsonInclude 註釋進行了全面掃描
  3. 文件

    • 添加了遷移到 M7 的升級說明
    • 使用架構圖改進了模組文件
    • 為新功能增強了 API 文件

貢獻者

還有許多其他重構、錯誤修復、文件增強等工作由眾多貢獻者完成。如果您的 PR 尚未被處理,我們會盡快處理,請耐心等待。感謝

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有