Spring AI 1.0 GA 正式發(fā)布!!支持 MCP 很炸裂!! 原創(chuàng)
北京時(shí)間 2025 年 5 月 20 日,Spring AI 官方團(tuán)隊(duì)宣布 1.0 GA 版本正式發(fā)布,并采用了全新的 Logo。
Spring AI 1.0 GA 功能集剖析
第一、Prompt 提示詞
創(chuàng)建正確的 Prompt(即傳遞給大模型的內(nèi)容)是一項(xiàng)重要技能。掌握幾種模式可以充分利用 AI 大模型的推理能力,從而獲得最佳結(jié)果。
第二、模型增強(qiáng)(The Augmented LLM)
不過(guò),在現(xiàn)實(shí)世界的 AI 應(yīng)用中,對(duì)于大模型的需求已經(jīng)不僅限于與無(wú)狀態(tài)的 AI 大模型 API 進(jìn)行簡(jiǎn)單的請(qǐng)求和響應(yīng)交互。
為了開(kāi)發(fā)出高效的 AI 應(yīng)用程序,一系列輔助功能是必不可少的。模型增強(qiáng)的概念(如下圖所示)正是為了滿足這一需求,它為基本大模型增加了數(shù)據(jù)檢索(Retrieval Augmented Generation,簡(jiǎn)稱(chēng) RAG)、對(duì)話記憶(Memory)和工具調(diào)用(Tool)等功能。這些功能使得用戶能夠?qū)⒆陨淼臄?shù)據(jù)和外部 API 直接集成到大模型的推理過(guò)程中。
第三、顧問(wèn)(Advisors)
Spring AI ChatClient 的核心功能之一是 Advisor API。該 API 采用了攔截器鏈的設(shè)計(jì)模式,這使得用戶能夠通過(guò)添加檢索上下文(Retrieval Context)和對(duì)話記憶(Chat Memory)來(lái)調(diào)整輸入的提示(Prompt)。
第四、檢索(Retrieval)
在 AI 應(yīng)用中,檢索數(shù)據(jù)的基礎(chǔ)通常是一個(gè)數(shù)據(jù)庫(kù),而向量數(shù)據(jù)庫(kù)因其特性而成為首選。Spring AI 提供了一個(gè)通用的向量存儲(chǔ)接口,能夠兼容包括 Azure Cosmos DB 和 Weaviate 在內(nèi)的多達(dá)20種不同類(lèi)型的向量數(shù)據(jù)庫(kù)。
使用這些數(shù)據(jù)庫(kù)時(shí)常見(jiàn)的一個(gè)問(wèn)題是,每種數(shù)據(jù)庫(kù)都有其獨(dú)特的元數(shù)據(jù)過(guò)濾查詢語(yǔ)言。為了解決這個(gè)問(wèn)題,Spring AI 引入了一種通用的過(guò)濾器表達(dá)式語(yǔ)言,該語(yǔ)言采用了類(lèi)似 SQL 的語(yǔ)法,使得用戶能夠更加方便地進(jìn)行查詢。如果用戶需要更復(fù)雜的查詢,也可以選擇使用數(shù)據(jù)庫(kù)的原生查詢語(yǔ)言。
Spring AI 還包含了一個(gè)輕量級(jí)且可配置的 ETL(提取、轉(zhuǎn)換、加載)框架,它簡(jiǎn)化了將數(shù)據(jù)導(dǎo)入向量存儲(chǔ)的過(guò)程。這個(gè)框架通過(guò)支持多種輸入源的 DocumentReader 插件,包括本地文件系統(tǒng)、網(wǎng)頁(yè)、GitHub 倉(cāng)庫(kù)、AWS S3、Azure Blob 存儲(chǔ)、Google Cloud Storage、Kafka、MongoDB 以及兼容 JDBC 的數(shù)據(jù)庫(kù),使得用戶能夠輕松地將內(nèi)容從幾乎任何地方導(dǎo)入到 RAG (檢索增強(qiáng)生成)流程中。此外,它還內(nèi)置了對(duì)數(shù)據(jù)分塊、元數(shù)據(jù)豐富化和嵌入生成的支持。
Spring AI 支持 RAG 模式,這使得 AI 大模型能夠基于傳入的數(shù)據(jù)生成響應(yīng)。用戶可以通過(guò)簡(jiǎn)單的 QuestionAnswerAdvisor 方法將相關(guān)上下文注入到提示詞中,或者使用更復(fù)雜、更模塊化的 RetrievalAugmentationAdvisor 來(lái)擴(kuò)展 RAG 管道,以滿足 AI 應(yīng)用的具體需求。
第五、記憶(ChatMemory)
對(duì)話歷史是構(gòu)建 AI 聊天應(yīng)用的一個(gè)關(guān)鍵要素。Spring AI 利用 ChatMemory 接口來(lái)實(shí)現(xiàn)這一點(diǎn),該接口負(fù)責(zé)管理消息的保存和提取。MessageWindowChatMemory 的實(shí)現(xiàn)方式是在滑動(dòng)窗口中保存最近 N 條消息,并能夠隨著對(duì)話的進(jìn)行自動(dòng)更新。它依賴于一個(gè) ChatMemoryRepository,目前我們提供了針對(duì) JDBC、Cassandra 和 Neo4j 的存儲(chǔ)庫(kù)實(shí)現(xiàn),并且還在開(kāi)發(fā)更多的版本。
另一種方案是采用
VectorStoreChatMemoryAdvisor
這種方法不僅記住了最新的對(duì)話內(nèi)容,還能通過(guò)向量搜索技術(shù)從歷史對(duì)話中找出語(yǔ)義上最接近的消息。
第六、工具(Tool)
Spring AI 可以輕松通過(guò)工具擴(kuò)展模型的功能--自定義函數(shù),讓 AI 檢索外部信息或執(zhí)行實(shí)際操作。工具調(diào)用(也稱(chēng)為函數(shù)調(diào)用)由 OpenAI 于 2023 年 6 月首次廣泛引入,并在和模型中發(fā)布了函數(shù)調(diào)用功能??。?
?
?
??
?
?工具可以獲取當(dāng)前天氣、查詢數(shù)據(jù)庫(kù)或返回最新新聞,幫助大模型解答訓(xùn)練數(shù)據(jù)以外的問(wèn)題。它們還可以觸發(fā)工作流、發(fā)送電子郵件或更新系統(tǒng),從而將模型轉(zhuǎn)變?yōu)閼?yīng)用程序中的活躍參與者。定義工具很簡(jiǎn)單:使用 ??@Tool?
??注解來(lái)聲明方法,使用動(dòng)態(tài)注冊(cè) Bean ??@Bean?
?,或以編程方式創(chuàng)建它們以實(shí)現(xiàn)完全控制。
第七、評(píng)估(Evaluation)
開(kāi)發(fā) AI 應(yīng)用是一件令人興奮的事情,但是如何評(píng)估其效能呢?不幸的是,這并不像編寫(xiě)常規(guī)的單元測(cè)試或集成測(cè)試然后查看測(cè)試結(jié)果那樣直接。我們需要依據(jù)一系列準(zhǔn)則來(lái)評(píng)價(jià) AI 模型的輸出。比如:答案是否與問(wèn)題相關(guān)?它是否產(chǎn)生了不真實(shí)的信息?回答是否基于提供的事實(shí)?
為了應(yīng)對(duì)這一挑戰(zhàn),我們應(yīng)該首先進(jìn)行所謂的“直覺(jué)檢查”。顧名思義,這涉及到手動(dòng)檢查答案,并運(yùn)用個(gè)人的判斷力來(lái)確定答案的正確性。當(dāng)然,這個(gè)過(guò)程相當(dāng)耗時(shí),因此有一系列不斷發(fā)展的技術(shù)來(lái)幫助自動(dòng)化這一過(guò)程。
Spring AI 能夠輕松地檢驗(yàn) AI 生成內(nèi)容的準(zhǔn)確性和相關(guān)性。它提供了一個(gè)靈活的評(píng)估器(Evaluator)接口和兩個(gè)實(shí)用的內(nèi)置評(píng)估器:
- 相關(guān)性評(píng)估器(RelevancyEvaluator)- 幫助您判斷 AI 的響應(yīng)是否真正與用戶的問(wèn)題和檢索到的上下文相匹配。它非常適合測(cè)試 RAG 流程,并使用可定制的提示詞來(lái)詢問(wèn)另一個(gè)模型:“根據(jù)檢索到的內(nèi)容,這個(gè)響應(yīng)是否合理?”
- 事實(shí)核查評(píng)估器(FactCheckingEvaluator)- 根據(jù)提供的上下文驗(yàn)證 AI 的響應(yīng)是否符合事實(shí)。它的工作方式是要求模型判斷某個(gè)陳述是否在邏輯上得到了文檔的支持。您可以使用如 Bespoke 的 Minicheck(通過(guò) Ollama)等小型模型來(lái)運(yùn)行此評(píng)估器,這比每次都使用 GPT-4 這樣的工具成本要低得多。
然而,這并不是萬(wàn)能的解決方案。Hugging Face “LLM as judges”排行榜的主要維護(hù)者 Clémentine Fourrier 警告說(shuō),“LLM 作為評(píng)委”并非萬(wàn)能藥。在 Latent Space Podcast 的采訪中,她概述了幾個(gè)關(guān)鍵問(wèn)題:
- 模式崩潰和位置偏差:法學(xué)碩士評(píng)委通常更傾向于來(lái)自同一系列模型的答案或顯示的第一個(gè)答案。
- 冗長(zhǎng)偏見(jiàn):無(wú)論準(zhǔn)確性如何,模型對(duì)較長(zhǎng)的答案評(píng)價(jià)更高。
- 評(píng)分不穩(wěn)定:排名比評(píng)分更可靠;即便如此,可重復(fù)性也很弱。
- 過(guò)度自信偏見(jiàn):人們和模型通常更喜歡自信的答案,即使這些答案可能是錯(cuò)誤的。
第八、可觀測(cè)性(Observability)
在 AI 應(yīng)用系統(tǒng)的生產(chǎn)環(huán)境中,為了確保其性能和效果,可觀測(cè)性是必不可少的。Spring AI 提供了一種簡(jiǎn)便的方式來(lái)監(jiān)控模型的運(yùn)行狀況、性能指標(biāo)以及成本消耗。
Spring AI 通過(guò)與 Micrometer 的集成,能夠提供關(guān)鍵性能指標(biāo)的詳盡遙測(cè)數(shù)據(jù),包括:
- 模型響應(yīng)時(shí)間:即模型處理請(qǐng)求并給出響應(yīng)所需的時(shí)間。
- Token 消耗:每個(gè)請(qǐng)求的輸入和輸出 Token 數(shù)量,這有助于您追蹤并優(yōu)化成本支出。
- 工具調(diào)用和數(shù)據(jù)檢索:這可以幫助您了解模型在何時(shí)發(fā)揮了實(shí)際作用,而不是僅僅在向量數(shù)據(jù)庫(kù)中進(jìn)行無(wú)效查詢。
此外,您還可以利用 Micrometer Tracing 獲得全面的追蹤支持,它包含了模型交互過(guò)程中每個(gè)關(guān)鍵步驟的詳細(xì)信息。您還可以獲取有助于診斷問(wèn)題的日志信息,這些日志可以展示用戶輸入的提示或向量數(shù)據(jù)庫(kù)的響應(yīng)內(nèi)容。
第九、模型上下文協(xié)議 MCP
模型上下文協(xié)議(MCP) 于 2024 年 11 月問(wèn)世。它迅速走紅,因?yàn)樗鼮?AI 模型與外部工具、提示詞和資源交互提供了一種標(biāo)準(zhǔn)化的方式。MCP 是一種面向客戶端-服務(wù)器的協(xié)議,一旦構(gòu)建了 MCP 服務(wù)器,就可以輕松地將其應(yīng)用于您的應(yīng)用程序,無(wú)論 MCP 服務(wù)器是用什么編程語(yǔ)言編寫(xiě)的,MCP 客戶端是用什么編程語(yǔ)言編寫(xiě)的。
這在工具領(lǐng)域確實(shí)取得了長(zhǎng)足的進(jìn)步,盡管 MCP 并不局限于工具。現(xiàn)在,您可以使用“開(kāi)箱即用”的 MCP 服務(wù)器來(lái)實(shí)現(xiàn)特定功能,比如:與 GitHub 交互,而無(wú)需自己編寫(xiě)代碼。從 AI 工具的角度來(lái)看,它就像一個(gè)工具類(lèi)庫(kù),您可以輕松將其添加到您的應(yīng)用程序中。
Spring AI 團(tuán)隊(duì)在 MCP 規(guī)范發(fā)布后不久就開(kāi)始支持該規(guī)范,并將這些代碼捐贈(zèng)給 Anthropic作為 MCP Java SDK的基礎(chǔ)。Spring AI 圍繞此基礎(chǔ)提供了豐富的功能。
第十、智能體(Agent)
2025年被譽(yù)為智能體的元年,而一個(gè)價(jià)值連城的問(wèn)題是“智能體究竟是什么”。讓我來(lái)解答這個(gè)問(wèn)題:智能體的本質(zhì)在于“利用 AI 模型與外界環(huán)境互動(dòng),以完成用戶指定的任務(wù)”。高效的智能體結(jié)合了規(guī)劃、記憶和執(zhí)行能力來(lái)達(dá)成用戶設(shè)定的目標(biāo)。
智能體主要分為兩大類(lèi)型:
- 工作流型智能體:這種方法更加有序,其中大型語(yǔ)言模型(LLM)和工具按照預(yù)設(shè)的流程進(jìn)行組合。這些工作流是規(guī)范性的,引導(dǎo)AI按照既定的步驟操作,以實(shí)現(xiàn)可預(yù)測(cè)的結(jié)果。
- 自主決策型智能體:這類(lèi)智能體允許 LLM 自主規(guī)劃和執(zhí)行任務(wù),無(wú)需明確的指令即可自行確定執(zhí)行路徑,選擇使用哪些工具以及它們的使用順序。
盡管完全自主的智能體因其靈活性而極具吸引力,但對(duì)于有明確定義的任務(wù),工作流提供了更好的可預(yù)測(cè)性和一致性。選擇哪種方法取決于您的具體需求和風(fēng)險(xiǎn)偏好。
工作流(Workflow)Spring AI 支持多種構(gòu)建代理行為的工作流模式,如下所示:
- 評(píng)估器-優(yōu)化器:該模型分析自身的反應(yīng),并通過(guò)結(jié)構(gòu)化的自我評(píng)估過(guò)程進(jìn)行改進(jìn)。
- 路由:此模式能夠根據(jù)用戶請(qǐng)求和上下文的分類(lèi)將輸入智能地路由到專(zhuān)門(mén)的處理器。
- 協(xié)調(diào)者-執(zhí)行者:這種模式是一種靈活的方法,用于處理需要?jiǎng)討B(tài)任務(wù)分解和專(zhuān)門(mén)處理的復(fù)雜任務(wù)。
- 鏈?zhǔn)?/strong>:該模式將復(fù)雜任務(wù)分解為一系列步驟,每個(gè) LLM 調(diào)用都會(huì)處理前一個(gè)調(diào)用的輸出。
- 并行化:該模式對(duì)于需要并行執(zhí)行LLM調(diào)用并自動(dòng)進(jìn)行輸出聚合的情況非常有用。
這些模式可以通過(guò) Spring AI 的聊天模型和工具執(zhí)行功能來(lái)實(shí)現(xiàn),框架可以處理大部分底層復(fù)雜性。
自主決策型智能體(Autonomous Agent)Spring AI 還支持通過(guò)模型上下文協(xié)議(MCP)開(kāi)發(fā)自主代理。正在孵化的 Spring MCP Agent 項(xiàng)目展示了如何創(chuàng)建以下智能體:
- 接受用戶指令并自主確定最佳執(zhí)行方法。
- 通過(guò) MCP 動(dòng)態(tài)發(fā)現(xiàn)并利用可用工具。
- 維護(hù)執(zhí)行記憶以跟蹤進(jìn)度和決策。
- 根據(jù)結(jié)果遞歸地完善策略。
Spring AI 是一款非常優(yōu)秀的 AI 應(yīng)用開(kāi)發(fā)框架,它專(zhuān)為 Java 開(kāi)發(fā)者而設(shè)計(jì),幫助 Java 開(kāi)發(fā)者快速構(gòu)建具備智能化的應(yīng)用,很高興看到 Spring AI 在今天達(dá)成正式 GA 版本!!
本文轉(zhuǎn)載自??玄姐聊AGI?? 作者:玄姐
