領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多我謹代表 Spring AI 工程團隊以及所有為本次釋出做出貢獻的人,非常興奮地宣佈 Spring AI 1.0 正式釋出。我們為你準備了一篇精彩的釋出博文。
所有新元件都已釋出到 Maven Central。請使用提供的 BOM 來匯入依賴項。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
檢視 升級說明 以瞭解最新的重大變更以及如何升級。注意:你可以使用 OpenRewrite 指令碼來自動完成升級到 1.0.0-GA 的過程。此指令碼有助於應用本次版本許多必需的程式碼更改。在 Arconia Spring AI Migrations 中查詢指令碼和使用說明。
你可以透過 Intialzr 網站 開始建立 1.0 GA 應用,並閱讀參考文件中的 入門指南。
其次,這裡精選了許多我們過去兩年合作的朋友和家人為 1.0 GA 版本創作的博文,展示瞭如何以各種方式使用 Spring AI。
此外,Josh Long 撰寫了一篇詳細的文章,演示如何 將 Spring AI 與 Anthropic 的 Claude 結合使用,Daniel Garnier-Moiroux 也在他的部落格中發表了文章 Spring AI 和 OAuth2 中的 MCP 授權實踐。
首先,當然是一首新歌。請在 Spring AI 播放列表 中收聽 最新單曲 - 它會讓你 快樂。
第三,我們有了新的 Spring AI Logo!非常感謝 Sergi Almar,他是 Spring IO 大會 的組織者,以及設計師 Jorge Rigabert 創造瞭如此精美的 Logo。小寫字母 'i' 的各種變化形式令人著迷。
讓我們來探索 Spring AI 1.0 GA 的功能集。
Spring AI 的核心是 ChatClient,這是一個**可移植且易於使用的 API**,是與 AI 模型互動的主要介面。
Spring AI 的 ChatClient 支援呼叫**20**個 AI 模型,從 Anthropic 到 ZhiPu。它支援多模態輸入和輸出(當底層模型支援時)以及結構化響應 - 最常見的是 JSON 格式,以便於在應用程式中處理輸出。
有關 AI 模型功能集的詳細比較,請訪問我們參考文件中的 聊天模型比較。
請閱讀我們的 ChatClient 參考文件以獲取更多資訊。你可以在 Josh 的部落格 中看到它的實際應用。
建立正確的 Prompt(你傳遞給模型的輸入)是一項重要技能。有幾種模式可以充分利用 AI 模型以獲得最佳結果。
你可以在 參考文件中找到 Prompt 的示例用法。Spring AI 的參考文件還涵蓋了 Prompt Engineering 技術,並附有基於全面 Prompt Engineering 指南的程式碼示例。
然而,真實的 AI 應用不僅僅是與無狀態 AI 模型 API 進行簡單的請求/響應互動。
要構建有效的 AI 應用,一系列支援性功能至關重要。這就是 增強型 LLM(如下圖所示)的概念,它透過資料檢索、對話記憶和工具呼叫等功能為基礎模型互動增加了能力。這些功能使你能夠將自己的資料和外部 API 直接引入模型的推理過程中。

實現 Spring AI 中此模式的關鍵是 Advisor。
Spring AI 的 ChatClient 的一個關鍵特性是 Advisor API。這是一個攔截器鏈,允許你透過注入檢索到的資料和對話記憶來修改傳入的 Prompt。
你可以在 參考文件中的相關章節 閱讀更多關於它們的資訊。
現在讓我們深入瞭解增強型 LLM 的每個元件。
AI 應用中檢索資料的核心是資料庫,特別是向量資料庫,這是最常見的用途。Spring AI 提供了一個可移植的向量儲存抽象,支援**20**種不同的向量資料庫,從 Azure Cosmos DB 到 Weaviate。
處理這些資料庫時的一個常見挑戰是,它們都有自己獨特的元資料過濾查詢語言。Spring AI 透過一個可移植的過濾表示式語言來解決這個問題,該語言使用熟悉的類 SQL 語法。如果你達到了該抽象的極限,可以回退到原生查詢。
Spring AI 包括一個輕量級、可配置的 **ETL (Extract, Transform, Load) 框架**,用於簡化將資料匯入向量儲存的過程。它透過可插拔的 DocumentReader 元件支援廣泛的輸入源,包括**本地檔案系統**、**網頁**、**GitHub 倉庫**、**AWS S3**、**Azure Blob Storage**、**Google Cloud Storage**、**Kafka**、**MongoDB** 和 **JDBC 相容的資料庫**。這使得將幾乎任何地方的內容引入 RAG 管道變得容易,並內建了分塊、元資料豐富和嵌入生成等支援。你可以在參考文件的 相關章節 中閱讀更多關於 ETL 功能的資訊。
Spring AI 還廣泛支援檢索增強生成(RAG)模式,該模式使 AI 模型能夠根據你輸入的資料來生成響應。你可以從簡單的 QuestionAnswerAdvisor 開始,將相關上下文注入 Prompt,或者擴充套件到更復雜、模組化的 RAG 管道,以滿足你的應用程式需求,使用 RetrievalAugmentationAdvisor。
你可以在參考文件的 相關章節 閱讀更多關於它們的資訊。
要學習在你的 Spring AI 應用中實現 RAG 的教程,請檢視我們的 檢索增強生成指南,其中介紹了設定向量儲存、嵌入文件以及透過實際程式碼示例建立有效的檢索管道。
對話歷史是建立 AI 聊天應用的重要組成部分。Spring AI 透過 ChatMemory 介面支援這一點,該介面負責管理訊息的儲存和檢索。MessageWindowChatMemory 實現維護最近 N 條訊息,並在對話進行時進行滑動更新。它委託給 ChatMemoryRepository,我們目前提供 JDBC、Cassandra 和 Neo4j 的儲存庫實現,未來還將有更多。
另一種選擇是使用 VectorStoreChatMemoryAdvisor。它不只是記住最近的訊息,而是使用向量搜尋從過去的對話中檢索語義上最相似的訊息。
你可以在參考文件的 相關章節 閱讀更多關於它們的資訊。
要學習在你的 Spring AI 應用中實現聊天記憶的教程,請檢視我們的 聊天記憶實現指南,其中涵蓋了基本和高階的記憶模式,包括持久化儲存選項的程式碼示例。
Spring AI 透過**工具**——自定義函式,讓 AI 能夠檢索外部資訊或執行現實世界操作——輕鬆擴充套件了模型的功能。工具呼叫**(也稱為函式呼叫)於 2023 年 6 月首次由 OpenAI 廣泛推出,當時他們在 gpt-4 和 gpt-3.5-turbo 模型中釋出了函式呼叫功能。
工具可以獲取當前天氣、查詢資料庫或返回最新新聞,幫助模型回答其訓練資料之外的問題。它們還可以觸發工作流、傳送電子郵件或更新系統——將模型變成你應用程式中的積極參與者。定義工具很簡單:使用 @Tool 註釋宣告式方法,使用 @Bean 動態註冊 Bean,或者以程式設計方式建立它們以獲得完全控制。
你可以在參考文件的 相關章節 閱讀更多關於它們的資訊。
要學習在你的 Spring AI 應用中實現工具呼叫的教程,請參閱我們的 本地工具呼叫指南,其中演示瞭如何透過實際示例和最佳實踐來建立、註冊和使用工具。
使用這項技術建立應用程式很有趣,但你怎麼知道它是否有效呢?不幸的是,這不像編寫傳統的單元或整合測試並檢視測試是否透過那麼簡單。需要根據一系列標準來評估 AI 模型的回應。例如,答案是否與提出的問題相關?它是否出現了幻覺?答案是否基於提供的事實?
為了掌握這一點,你應該先進行所謂的“感覺檢查”。顧名思義,這是手動審查響應並使用你自己的判斷來確定答案是否正確。當然,這很耗時,所以有一套不斷發展的技術可以幫助自動化這個過程。
Spring AI 可以輕鬆檢查你生成的 AI 內容的準確性和相關性。它提供了一個靈活的 Evaluator 介面和兩個方便的內建評估器:
RelevancyEvaluator - 幫助你弄清楚 AI 的響應是否真正匹配使用者的問題和檢索到的上下文。它非常適合測試 RAG 流,並使用可自定義的 Prompt 來問另一個模型:“這個響應是否基於檢索到的內容有意義?”
FactCheckingEvaluator - 驗證 AI 的響應是否基於提供的上下文是事實準確的。它透過讓模型判斷一個陳述是否在邏輯上得到某個文件的支援來工作。你可以使用 Bespoke 的 Minicheck(透過 Ollama)這樣的小模型來執行它,這比為每次檢查都使用 GPT-4 要便宜得多。
然而,這不是萬能藥。 Clémentine Fourrier,Hugging Face 的 Open LLM Leaderboard 的首席維護者,警告說“**LLM 作為裁判不是萬能的**”。在她在 Latent Space Podcast 的採訪中,她概述了關鍵問題:
你可以在參考文件的 相關章節 閱讀更多關於評估的資訊。
祝你好運!要開始,請檢視 一些 不錯的 文章,其中展示了這些評估器的使用。
當你在生產環境中執行 AI 時,你需要的不僅僅是希望和良好的感覺——你需要**可觀測性**。Spring AI 可以輕鬆地觀察你的模型在做什麼、效能如何以及所有這些成本是多少。
Spring AI 集成了 **Micrometer**,提供關鍵指標的詳細遙測資料,例如:
模型延遲 - 模型響應所需的時間(不僅僅是情緒上的)。
Token 使用量 - 每個請求的輸入/輸出 token,以便你可以跟蹤和最佳化成本。
工具呼叫和檢索 - 瞭解你的模型何時像一個樂於助人的助手,而不是僅僅依賴你的向量儲存。
你還可以透過 **Micrometer Tracing** 獲得完整的跟蹤支援,每個模型互動的主要步驟都有相應的 span。你還可以獲得有助於故障排除的日誌訊息,以便你可以看到使用者 Prompt 或向量儲存響應是什麼。
你可以在參考文件的 相關章節 閱讀更多關於可觀測性的資訊。
Model Context Protocol (MCP) 於 2024 年 11 月問世。它迅速流行起來,因為它提供了一種標準化的方式,讓 AI 模型能夠與外部工具、Prompt 和資源進行互動。MCP 是一個客戶端-伺服器導向的協議,一旦你構建了一個 MCP 伺服器,就可以輕鬆地在你的應用程式中採用它,無論 MCP 伺服器是用哪種程式語言編寫的,也無論 MCP 客戶端是用哪種程式語言編寫的。
這在工具領域已經迅速發展,儘管 MCP 不限於工具。現在,你可以使用現成的 MCP 伺服器來執行特定功能,例如與 GitHub 互動,而無需自己編寫程式碼。從 AI 工具的角度來看,這就像一個工具類庫,你可以輕鬆地將其新增到你的應用程式中。
Spring AI 團隊在規範釋出後不久就開始支援 MCP,然後這段程式碼被捐贈給了 Anthropic,作為 MCP Java SDK 的基礎。Spring AI 在此基礎上提供了豐富的功能集。
Spring AI 透過其客戶端啟動器模組,使得使用 Model Context Protocol (MCP) 工具變得簡單。透過新增 `spring-ai-starter-mcp-client` 依賴項,你就可以快速連線到遠端 MCP 伺服器。Spring Boot 的自動配置會處理繁重的工作,因此你的客戶端無需大量樣板程式碼即可呼叫 MCP 伺服器公開的工具——讓你專注於構建有效的 AI 工作流。Spring 可以輕鬆連線 MCP 伺服器提供的 stdio 和基於 HTTP 的 SSE 端點。
要進行實際介紹,請檢視 MCP 客戶端示例,該示例演示瞭如何連線到一個提供 Brave 網頁搜尋的 MCP 伺服器——這樣你就可以在你的 Spring 應用中直接新增強大的搜尋功能。
要學習在你的 Spring AI 應用中實現 Model Context Protocol 的教程,請參閱我們的 MCP 指南,其中解釋瞭如何設定客戶端和伺服器元件,連線到外部工具,並利用該協議來增強 AI 功能。
Spring AI 透過其專用的啟動器模組和直觀的註解驅動方法,簡化了 MCP 伺服器的建立。新增 `spring-ai-starter-mcp-server` 依賴項,你就可以快速將 Spring 元件轉換為符合 MCP 的伺服器。
該框架提供了一個使用 @Tool 註釋來公開方法的簡潔語法。引數會自動轉換為適當的 MCP 格式,框架會處理所有底層協議細節——傳輸、序列化和錯誤處理。透過最少的配置,你的 Spring 應用程式就可以公開其功能,既有 stdio 端點,也有基於 HTTP 的 SSE 端點。
你會在 spring-ai-examples 倉庫中找到幾個有用的示例——一個好的起點是 Spring AI MCP 天氣 STDIO 伺服器。
還可以檢視 Spring 生態系統中已經開始擁抱 MCP 並提供專用伺服器的專案:
這些伺服器將 Spring 的企業級功能帶入了不斷增長的 MCP 生態系統。
在企業環境中,你希望對向 LLM 提供什麼資料作為上下文以及提供哪些 API(尤其是修改資料/狀態的 API)有一定的控制,這並不奇怪。MCP 規範透過 OAuth 解決了這些問題。Spring Security 和 Spring Authorization Server 已經為你準備好了。Spring Security 大師 Daniel 在他的部落格 Spring AI 和 OAuth2 中的 MCP 授權實踐 中詳細介紹了保護 MCP 應用。
2025 年是 Agent 年。百萬美元的問題是“定義 Agent”,好吧,這是一個嘗試!:) 它的核心是一個 Agent,“利用 AI 模型與其環境互動以解決使用者定義的任務。”有效的 Agent 結合了規劃、記憶和行動來完成使用者分配的任務。
Agent 主要分為兩大類:
工作流代表一種更受控的方法,透過預定義的路徑來編排 LLM 和工具。這些工作流是規定性的,引導 AI 完成既定的操作序列以獲得可預測的結果。
相比之下,**自主 Agent** 允許 LLM 自主規劃和執行處理步驟以完成任務。這些 Agent 確定自己的路徑,無需明確指令即可決定使用哪些工具以及使用順序。
雖然完全自主的 Agent 因其靈活性而具有吸引力,但對於定義明確的任務,工作流提供了更好的可預測性和一致性。在這兩種方法之間的選擇取決於你的具體需求和風險承受能力。
Spring AI 支援幾種工作流模式來構建 Agent 行為:在下圖的每個 LLM 框中,都是前面顯示的“增強型 LLM”圖。

路由 - 這種模式允許根據使用者請求和上下文的分類,將輸入智慧地路由到專用處理程式。
編排器工作流 - 這種模式是一種靈活的方法,用於處理需要動態任務分解和專業化處理的複雜任務。
鏈式 - 該模式將複雜任務分解為一系列步驟,其中每次 LLM 呼叫都會處理前一次呼叫的輸出。
並行化 - 該模式適用於需要並行執行 LLM 呼叫並自動聚合輸出的場景。
這些模式可以使用 Spring AI 的聊天模型和工具執行功能來實現,框架負責處理大部分底層複雜性。
你可以在 Spring AI 示例倉庫 和我們參考文件的 構建有效的 Agent 部分找到更多資訊。
Spring AI 還透過 Model Context Protocol 支援自主 Agent 的開發。正在孵化的 Spring MCP Agent 專案演示瞭如何建立 Agent,這些 Agent:
Tanzu AI 解決方案可在 Tanzu Platform 10 及以上版本中使用,並且與 Spring AI Apps 配合效果最佳。
有關使用 Tanzu AI Server 部署 AI 應用的更多資訊,請訪問 VMware Tanzu AI 文件,有關構建 Agentic AI 應用的更多資訊,請檢視以下博文:
推薦閱讀 Agentic AI
Agentic AI:推動業務成功的全新 AI 正規化 - Broadcom
探討 Agentic AI 如何透過實現自主決策、減少摩擦和推動業務轉型來重新定義企業戰略。
AI Agents:為何工作流是值得關注的 LLM 用例 - VMware TanzU
討論了為什麼 LLM 驅動的工作流代表了 AI Agent 一個引人注目的實際用例,特別是在企業軟體開發和運營中。
看到社群不僅使用 Spring AI,還貢獻於它的熱情,真是令人欣慰。整個團隊對此深感榮幸。特別要提一下 - Thomas Vitale (ThomasVitale)。他推動了諸如 @Tools 和 RAG 等核心功能,以及其他很棒的貢獻和 bug 修復。太棒了!
我已整理了貢獻者列表,它很長。我想製作一張地圖,顯示來自世界各地許多不同地區的人們。謝謝!
AI 合併了之前部落格中提到的作者,如果遺漏了某人,我(而不是 AI)深表歉意。
當然還有 Spring AI 1.1!敬請期待!