SpringAI+Ollama本地模型實現(xiàn)快速對話的實戰(zhàn)指南
場景
Spring AI 是什么?
Spring AI 是 Spring 官方推出的 AI 應(yīng)用開發(fā)框架,定位:像 SpringBoot 封裝 Web、MyBatis 封裝數(shù)據(jù)庫一樣,統(tǒng)一封裝大模型、向量庫、RAG、Agent、工具調(diào)用、MCP 協(xié)議,做到一套代碼、無縫切換任意大模型。
支持:
- 國產(chǎn)模型:通義千問、文心一言、訊飛星火、智譜
- 海外模型:OpenAI、Anthropic
- 本地模型:Ollama、LocalAI
協(xié)議:OpenAI 兼容接口、MCP 模型控制協(xié)議(Streamable HTTP/SSE)
設(shè)計思想:抽象統(tǒng)一接口,底層廠商自由替換,業(yè)務(wù)代碼不用改。
Spring AI 頂層核心架構(gòu)
分層理解:
- 應(yīng)用層:Chat 對話、RAG 知識庫問答、Agent 智能體、工作流編排
- 核心抽象層:ChatModel、EmbeddingModel、Prompt、Advisor、Tool、VectorStore
- 適配層:對接各廠商(OpenAI/Ollama/ 通義千問 / 阿里云百煉)
- 基礎(chǔ)設(shè)施層:向量數(shù)據(jù)庫、MCP 服務(wù)、內(nèi)存、日志、可觀測性
ChatModel 對話模型
Spring AI 最核心抽象,所有大模型都實現(xiàn)這個接口。
能力:同步對話、流式對話、多輪上下文、函數(shù)調(diào)用
實現(xiàn)類舉例:
- OpenAiChatModel
- OllamaChatModel
- DashScopeChatModel(通義千問)
特點:切換模型只改配置,不改業(yè)務(wù)代碼
ChatClient 聊天客戶端(開發(fā)首選)
Spring AI 推薦業(yè)務(wù)層入口,封裝 ChatModel,鏈?zhǔn)秸{(diào)用。
優(yōu)勢:
- 內(nèi)置 Prompt 模板、記憶、工具注入
- 流式返回、攔截器擴展
實現(xiàn)
環(huán)境前提
JDK 17
SpringBoot 3.4.5
本地已裝 Ollama,并拉取模型:ollama pull qwen2.5:7b-instruct
不用復(fù)雜依賴、不搞 MCP,先跑通 Spring AI 核心基礎(chǔ):ChatClient + 普通對話
pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.3</version> <!-- 降級為穩(wěn)定版,解決沖突 -->
</parent>
<groupId>com.example</groupId>
<artifactId>spring-ai-ollama-demo</artifactId>
<version>1.0</version>
<properties>
<java.version>17</java.version>
<spring-ai.version>1.0.0-M1</spring-ai.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring AI Ollama 核心 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
<version>${spring-ai.version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>application.yml 配置
?server:
port: 886
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: qwen2.5:7b-instruct
?配置類:注冊 ChatClient(Spring AI 標(biāo)準(zhǔn)入口)
package com.badao.ai.config;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringAiConfig {
/**
* 注入統(tǒng)一聊天客戶端,全局使用
*/
@Bean
public ChatClient chatClient(ChatClient.Builder builder) {
return builder.build();
}
}Controller(最簡單對話)
package com.badao.ai.controller;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SimpleChatController {
private final ChatClient chatClient;
public SimpleChatController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/chat")
public String chat(@RequestParam String msg) {
// 鏈?zhǔn)秸{(diào)用:發(fā)提示詞 -> 調(diào)用模型 -> 返回內(nèi)容
return chatClient.prompt(new Prompt(msg))
.call()
.content();
}
}測試訪問

以上就是SpringAI+Ollama本地模型實現(xiàn)快速對話的實戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于SpringAI結(jié)合Ollama實現(xiàn)快速對話的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring Cloud構(gòu)建Eureka應(yīng)用的方法
這篇文章主要介紹了Spring Cloud構(gòu)建Eureka應(yīng)用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
MybatisPlus?自定義插件實現(xiàn)攔截SQL修改功能(實例詳解)
這篇文章主要介紹了MybatisPlus?自定義插件實現(xiàn)攔截SQL修改功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11
Java中的String對象數(shù)據(jù)類型全面解析
首先String不屬于8種基本數(shù)據(jù)類型,String是一個對象,因為對象的默認(rèn)值是null,所以String的默認(rèn)值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性2012-11-11
java基于正則表達(dá)式實現(xiàn)時間日期的常用判斷操作實例
這篇文章主要介紹了java基于正則表達(dá)式實現(xiàn)時間日期的常用判斷操作,簡單說明了正則表達(dá)式常用元字符含義并結(jié)合實例形式分析了java基于正則表達(dá)式針對常用日期時間格式的判斷操作技巧,需要的朋友可以參考下2017-10-10
利用openoffice+jodconverter-code-3.0-bate4實現(xiàn)ppt轉(zhuǎn)圖片
這篇文章主要為大家詳細(xì)介紹了利用openoffice+jodconverter-code-3.0-bate4實現(xiàn)ppt轉(zhuǎn)圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07

