2025年,你不能錯過Spring AI,那個汲取了LangChain靈感的家伙!
如何給Spring AI下定義呢?
在我看來,Spring AI和AI的關(guān)系,就像Spring Boot和Spring的關(guān)系一樣,旨在簡化包含AI功能的應(yīng)用程序開發(fā),避免不必要的復(fù)雜性。
據(jù)說,Spring AI是從著名的Python LangChain中汲取的靈感,就是為了讓生成式AI應(yīng)用不僅僅面向Python開發(fā)者,使Java這個偉大的語言再次偉大!
通過Spring AI,可以更行之有效地解決企業(yè)數(shù)據(jù)、API與AI模型集成的根本挑戰(zhàn)。
圖片
Spring AI 提供了一些抽象層,這些具有多種實現(xiàn)方式的抽象層是開發(fā)AI應(yīng)用程序的基礎(chǔ),能夠以最少的代碼改動實現(xiàn)組件的輕松替換。
接下來我們看下Spring AI都具備哪些特性和能力。
1、主流模型支持
按照官網(wǎng)的說法,目前Spring AI支持所有主流的AI大模型提供商,包括:Anthropic、OpenAI、微軟、亞馬遜、谷歌和Ollama等。
其所支持的模型類型有:
- 聊天補(bǔ)全(Chat Completion)
- 嵌入(Embedding)
- 文本生成圖像(Text to Image)
- 音頻轉(zhuǎn)錄(Audio Transcription)
- 文本轉(zhuǎn)語音(Text to Speech)
- 內(nèi)容審核(Moderation)
圖片
圖片
Spring AI支持這么多的大模型,并根據(jù)項目的實際需要在各個大模型間進(jìn)行秒級切換,這對研發(fā)效率的提升是非常有幫助的。
我們就以對話機(jī)器人為例,來看下代碼的具體實現(xiàn)。
配置類及配置文件
我們在這里選擇Spring AI的1.0版本,并引入openai和ollama來實現(xiàn)大模型間的動態(tài)切換。
這里特別需要注意的是,不要用Spring AI的太高版本,我之前用的1.1.0-M7版本,里面各種maven依賴jar包不能下載。
圖片
圖片
圖片
圖片
Controller類
實現(xiàn)具體的大模型調(diào)用。
啟動類
訪問結(jié)果
我們在跑通上面的代碼后,就算完成了Spring AI的Hello World。
2、會話記憶
會話記憶(Conversational Memory)是Spring AI中非常好用的一個特性,可以使系統(tǒng)在對話過程中具有主動記錄、理解和利用上下文信息的能力。
其核心目標(biāo)是讓AI能夠像人類一樣進(jìn)行連貫、有邏輯的多輪交互,而非孤立地處理每一條用戶輸入。
我們繼續(xù)在剛才的代碼中進(jìn)行實現(xiàn)。
配置類及配置文件在這里需要引入會話記憶的依賴,默認(rèn)以內(nèi)存的方式進(jìn)行存儲實現(xiàn)。
圖片
圖片
Controller類
新增了一個completionMemory方法進(jìn)行實驗,這里需要新增一個conversationId(會話ID),用于會話串聯(lián)并記憶。
圖片
訪問結(jié)果
我們首先輸入問題“托尼學(xué)長是誰”,并把會話ID設(shè)置為1。
圖片
接下來,我們輸入問題“我剛才輸入的是什么”,會話ID還是設(shè)置為1。
果然,大模型進(jìn)行了正確的解答,證明我們的會話記憶功能跑通了。
圖片
然后我們再做一次實驗,輸入的問題還是“我剛才輸入的是什么”,但把會話ID設(shè)置為2。
從返回結(jié)果上來看,當(dāng)會話ID變更之后,就無法實現(xiàn)會話記憶了。
圖片
除了內(nèi)存之外,Spring AI還提供了MySQL、PostgreSQL、Cassandra、Neo4j等方式進(jìn)行存儲,我們可以根據(jù)業(yè)務(wù)特性進(jìn)行靈活選擇。
3、提示詞工程
在Spring AI中,提示詞工程(Prompt Engineering)是連接人類意圖與 AI 模型的核心橋梁,簡單說就是通過精心設(shè)計輸入給 AI 的指令(提示),讓模型更精準(zhǔn)地輸出符合預(yù)期的結(jié)果。
做個比較形象的比喻,相當(dāng)于把廣東人說的粵語,轉(zhuǎn)化為全國人民都通俗易懂的普通話。
提示工程的目標(biāo)包括:
- 明確任務(wù)意圖(問答、總結(jié)、生成代碼)
- 控制輸出格式(JSON、表格、列表)
- 減少幻覺(模型生成錯誤信息)
- 適配特定領(lǐng)域(醫(yī)療、法律、金融等)
我們繼續(xù)通過代碼實現(xiàn)一個簡單的Demo。
Controller類
新增了一個completionPrompt方法進(jìn)行實驗,該方法中共有三個步驟。
- 先創(chuàng)建一個提示詞模板,需要滿足四要素:角色、任務(wù)、上下文和輸出。
- 注入可變的參數(shù)。
- 調(diào)用大模型并返回結(jié)果。
圖片
訪問結(jié)果
1、我們首先輸入?yún)?shù)為“洞見”,返回結(jié)果是一篇現(xiàn)代文。
2、接下來我們輸入的參數(shù)為“李白”,返回結(jié)果變成了一篇文言文。
結(jié)語
本篇文章我們先介紹到這里,后續(xù)我們會繼續(xù)介紹Spring AI的RAG、多模態(tài)、MCP、向量存儲等相關(guān)內(nèi)容。