使用?Spring?AI?+?Ollama?構(gòu)建生成式?AI?應(yīng)用的方法
為了構(gòu)建生成式AI應(yīng)用,需要完成兩個(gè)部分:
- AI大模型服務(wù):有兩種方式實(shí)現(xiàn),可以使用大廠的API,也可以自己部署,本文將采用ollama來(lái)構(gòu)建
- 應(yīng)用構(gòu)建:調(diào)用AI大模型的能力實(shí)現(xiàn)業(yè)務(wù)邏輯,本文將采用Spring Boot + Spring AI來(lái)實(shí)現(xiàn)Ollama安裝與使用

進(jìn)入官網(wǎng):https://ollama.com/ ,下載、安裝、啟動(dòng) ollama
參考資料:
具體步驟可以參考這篇文章:手把手教你本地運(yùn)行Meta最新大模型:Llama3.1
構(gòu)建 Spring 應(yīng)用
通過(guò)spring initializr創(chuàng)建Spring Boot應(yīng)用
注意右側(cè)選擇Spring Web和Spring AI對(duì)Ollama的支持依賴

點(diǎn)擊“generate”按鈕獲取工程
使用IDEA或者任何你喜歡的工具打開(kāi)該工程,工程結(jié)構(gòu)如下;

寫(xiě)個(gè)單元測(cè)試,嘗試在Spring Boot應(yīng)用里調(diào)用本地的ollama服務(wù)
@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {
@Autowired
private OllamaChatModel chatModel;
@Test
void ollamaChat() {
ChatResponse response = chatModel.call(
new Prompt(
"Spring Boot適合做什么?",
OllamaOptions.builder()
.withModel(OllamaModel.LLAMA3_1)
.withTemperature(0.4)
.build()
));
System.out.println(response);
}
}運(yùn)行得到如下輸出:
ChatResponse [metadata={ id: , usage: { promptTokens: 17, generationTokens: 275, totalTokens: 292 }, rateLimit: org.springframework.ai.chat.metadata.EmptyRateLimit@7b3feb26 }, generations=[Generation[assistantMessage=AssistantMessage [messageType=ASSISTANT, toolCalls=[], textContent=Spring Boot是一個(gè)基于Java的快速開(kāi)發(fā)框架,主要用于創(chuàng)建獨(dú)立的、生產(chǎn)級(jí)別的應(yīng)用程序。它提供了一個(gè)簡(jiǎn)化的配置過(guò)程,使得開(kāi)發(fā)者能夠快速構(gòu)建和部署Web應(yīng)用程序。
Spring Boot適合做以下幾件事情:
1. **快速開(kāi)發(fā)**: Spring Boot提供了一系列的自動(dòng)配置功能,可以幫助開(kāi)發(fā)者快速創(chuàng)建基本的應(yīng)用程序,減少手動(dòng)編寫(xiě)配置代碼的時(shí)間。
2. **獨(dú)立運(yùn)行**: Spring Boot可以作為一個(gè)獨(dú)立的應(yīng)用程序運(yùn)行,不需要額外的容器或服務(wù)器支持。
3. **生產(chǎn)級(jí)別的應(yīng)用程序**: Spring Boot提供了許多生產(chǎn)級(jí)別的特性,例如安全、監(jiān)控和部署等功能,可以幫助開(kāi)發(fā)者創(chuàng)建高性能、可靠的應(yīng)用程序。
4. **Web 應(yīng)用程序**: Spring Boot可以用于創(chuàng)建Web應(yīng)用程序,包括RESTful API、WebSockets和其他類(lèi)型的Web應(yīng)用程序。
5. **微服務(wù)架構(gòu)**: Spring Boot支持微服務(wù)架構(gòu),允許開(kāi)發(fā)者將一個(gè)大型應(yīng)用程序分解成多個(gè)小型服務(wù),每個(gè)服務(wù)都可以獨(dú)立運(yùn)行和部署。總之,Spring Boot是一個(gè)強(qiáng)大的框架,可以幫助開(kāi)發(fā)者快速創(chuàng)建、測(cè)試和部署生產(chǎn)級(jí)別的應(yīng)用程序。, metadata={messageType=ASSISTANT}], chatGenerationMetadata=ChatGenerationMetadata{finishReason=stop,contentFilterMetadata=null}]]]
上述樣例工程打包放公眾號(hào)了,如果需要的話,關(guān)注"程序猿DD",發(fā)送關(guān)鍵詞spring+ollama獲得下載鏈接。
小結(jié)
通過(guò)本文的介紹,我們就已經(jīng)完成了Spring Boot應(yīng)用與Ollama運(yùn)行的AI模型之間的對(duì)接。剩下的就是與業(yè)務(wù)邏輯的結(jié)合實(shí)現(xiàn),這里讀者根據(jù)自己的需要去實(shí)現(xiàn)即可。
可能存在的一些疑問(wèn)
如何使用其他AI模型
通過(guò)ollama的 Models 頁(yè)面,可以找到各種其他模型:

選擇你要使用的模型來(lái)啟動(dòng)即可。
如何植入現(xiàn)有應(yīng)用?
打開(kāi)上面工程的pom.xml,可以看到主要就下面兩個(gè)依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-ollama-spring-boot-starter</artifactId> </dependency>
所以,如果要在現(xiàn)有工程引入的話只要引入spring-ai-ollama-spring-boot-starter依賴就可以了。
好了,今天的分享就到這里。最近較忙,分享較少,感謝持續(xù)的關(guān)注與支持 _
到此這篇關(guān)于如何用 Spring AI + Ollama 構(gòu)建生成式 AI 應(yīng)用的文章就介紹到這了,更多相關(guān)Spring AI Ollama 構(gòu)建生成式 AI 應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式,java復(fù)制文件的方式其實(shí)有不少種,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問(wèn)題解決方法
這篇文章主要介紹了SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問(wèn)題,為什么注冊(cè)的IP和真實(shí)IP不符合呢,原因是Nacos客戶端在注冊(cè)服務(wù)時(shí)會(huì)從機(jī)器網(wǎng)卡中選擇一個(gè)IP來(lái)注冊(cè),所以,當(dāng)注冊(cè)了的是非真實(shí)IP后,另一臺(tái)機(jī)器調(diào)用時(shí)是不可能調(diào)通的,知道問(wèn)題原因就是解決方法,一起看看吧2024-01-01
Java讀文件修改默認(rèn)換行符的實(shí)現(xiàn)
這篇文章主要介紹了Java讀文件修改默認(rèn)換行符的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Spring+SpringMVC配置事務(wù)管理無(wú)效原因及解決辦法詳解
這篇文章主要介紹了Spring+SpringMVC配置事務(wù)管理無(wú)效原因及解決辦法詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12
Spring?MVC各種參數(shù)進(jìn)行封裝的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Spring?MVC各種參數(shù)進(jìn)行封裝的相關(guān)資料,SpringMVC內(nèi)置多種數(shù)據(jù)類(lèi)型轉(zhuǎn)換器,可以根據(jù)請(qǐng)求中的參數(shù)與后端控制器方法的參數(shù)的關(guān)系為我們實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)封裝,需要的朋友可以參考下2023-06-06
MyBatisPlus-QueryWrapper多條件查詢及修改方式
這篇文章主要介紹了MyBatisPlus-QueryWrapper多條件查詢及修改方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

