Spring AI 1.0.0 發布!支持 MCP 很炸裂!! 原創
前幾天 Spring AI 迎來了其1.0.0版本的第七個里程碑(Milestone 7)的發布。緊接著下個月,我們將迎來 RC1(Release Candidate 1)版本,隨后便是正式版(GA,General Availability)的發布。對于 Java 開發者社區而言,這無疑是一個備受期待的喜訊!
1、Spring AI 框架介紹
Spring AI 是一個用于 AI 工程的應用框架。它的目標是將 Spring 生態系統中的一些設計原則,比如:可移植性和模塊化設計,應用到 AI 領域。它還推動在 AI 領域使用簡單的 Java 對象(POJOs)作為構建應用程序基礎。
簡單來說,Spring AI 的核心任務是解決 AI 應用集成的基本挑戰:把你的企業數據和 API 與 AI 大模型模型連接起來。
Spring AI 全面采用了模塊化的架構設計,如下圖所示:
Spring AI 新架構設計主要旨在解決以下4個關鍵問題:
第一、提供統一抽象,隱藏底層復雜性
無論你使用的是 OpenAI 的 GPT、深度求索的 DeepSeek、谷歌的 Gemini、Anthropic 的 Claude,還是 Hugging Face 上的開源模型,Spring AI 都旨在提供一套統一且可移植的 API,讓你能夠輕松調用。對于向量數據庫,比如:Milvus、Pinecone、Redis、PGVector 等,它同樣提供了統一的 API 和查詢方法。這樣,你的代碼就可以更靈活地在不同的 AI 服務和數據庫之間切換,不會被某個特定供應商鎖定。
第二、簡化 AI 應用開發
構建一個稍微復雜的 AI 應用,比如:RAG(檢索增強生成),通常需要涉及數據加載、分割、向量化、存儲、檢索、調用大語言模型(LLM)等多個步驟。Spring AI 提供了 ETL 框架、ChatClient、VectorStore 等組件和抽象,大大簡化了這些流程的實現。
第三、廣泛支持模型和向量數據庫
Spring AI 支持市面上幾乎所有主流的大模型提供商(包括聊天模型和圖像生成模型)以及向量數據庫。這意味著你有非常豐富的選擇。
第四、深度集成 Spring 生態
這是 Spring 的強項!Spring AI 提供了各種 Spring Boot Starter,使得配置和集成 AI 模型、向量數據庫變得非常簡單,遵循“約定優于配置”的原則,即開箱即用,無需復雜的配置。
Github 地址:
??https://github.com/spring-projects/spring-ai??
2、Spring AI 支持 MCP 實現
第一、Spring AI MCP 介紹
Spring AI 1.0.0-M7 集成了最新的 MCP 參考實現 Java SDK 版本 0.9.0,帶來了顯著的架構改進。
MCP(模型上下文協議)是一種標準化的協議,它讓 AI 大模型能夠以一種有組織的方式和外部工具、資源進行互動。它支持多種傳輸方式,這樣在不同的環境下都能靈活使用。
MCP 的 Java 開發包(SDK)提供了這個協議的 Java 版本,讓你可以通過同步或異步的方式,和 AI 大模型以及工具進行標準化的互動。
Spring AI 的 MCP 功能是在 MCP Java 開發包的基礎上,增加了和 Spring Boot 集成的功能,提供了客戶端和服務端的啟動器。你可以使用 Spring 的初始化工具來快速搭建支持 MCP 的 AI 應用。
第二、MCP Java 開發包(SDK)架構
MCP 的 Java 實現采用了一個三層架構設計:
- 客戶端/服務器層:這一層包括了 MCPClient 和 MCPServer。MCPClient 負責處理客戶端的操作,而 MCPServer 負責管理服務器端的協議操作。它們都使用 MCPSession 來管理通信。
- 會話層(McpSession):這一層通過 DefaultMCPSession 的實現來管理通信模式和狀態。
- 傳輸層(McpTransport):這一層負責處理 JSON-RPC 消息的序列化和反序列化,并支持多種傳輸實現方式。
1.MCP 客戶端(MCP Client)
MCP 客戶端是MCP(模型上下文協議)架構中的一個關鍵部分,它的工作是和 MCP 服務器建立和管理連接。它負責客戶端的協議操作,包括:
- 和服務器商量使用哪個版本的協議,以確保雙方兼容
- 確定服務器有哪些功能可以用
- 發送和接收消息,以及用 JSON-RPC 格式進行交流
- 查找和運行工具
- 訪問和管理資源
- 與提示詞系統互動
還有一些可選的功能,比如:
- 管理“根”(可能是某種基礎設置)
- 支持抽樣(可能是隨機選擇一部分數據進行處理)
- 支持同步和異步操作(同步就是等待操作完成,異步就是不需要等待)
它還支持不同的傳輸方式,比如:
- 基于標準輸入輸出的傳輸,用于不同程序間的通信
- 基于 Java HttpClient 的 SSE 客戶端傳輸
- 基于 WebFlux 的 SSE 客戶端傳輸,用于響應式的 HTTP 數據流
2.MCP 服務器(MCP Server)
MCP 服務器是 MCP 架構中的另一個基礎部分,它向客戶端提供工具、資源和能力。它負責服務器端的協議操作,包括:
- 實現服務器端的協議操作
a.讓客戶端可以找到和使用工具
b.用基于 URI 的訪問方式管理資源
c.提供和處理提示詞模板
d.和客戶端商量可以使用哪些功能
e.結構化的日志記錄和通知
- 管理多個客戶端的連接
- 支持同步和異步的 API
- 它也支持不同的傳輸實現方式,比如:
a.基于標準輸入輸出的傳輸,用于不同程序間的通信
b.基于 Servlet 的 SSE 服務器傳輸
c.基于 WebFlux 的 SSE 服務器傳輸,用于響應式的 HTTP 數據流
d.基于 WebMVC 的 SSE 服務器傳輸,用于基于 Servlet 的 HTTP 數據流
3.Spring AI MCP 集成
Spring AI 通過以下 Spring Boot 啟動器提供 MCP 集成,如下所示:
- 客戶端啟動器
spring-ai-starter-mcp-client - 提供基于 STDIO 和 HTTP 的 SSE 支持的核心啟動器
spring-ai-starter-mcp-client-webflux - 基于 WebFlux 的 SSE 傳輸實現
- 服務器啟動器
spring-ai-starter-mcp-server - 提供基于 STDIO 傳輸支持的核心服務器
spring-ai-starter-mcp-server-webmvc - 基于 Spring MVC 的 SSE 傳輸實現
spring-ai-starter-mcp-server-webflux - 基于 WebFlux 的 SSE 傳輸實現
如果你想使用 Spring Boot 簡化設置,可以使用上面提到的 MCP 啟動器。
本文轉載自公眾號玄姐聊AGI 作者:玄姐
原文鏈接:??https://mp.weixin.qq.com/s/W-O8h-kduA3lyySjMhl1CQ??