SpringAI+Ollama本地模型实现快速对话的实战指南
场景
Spring AI 是什么?
Spring AI 是 Spring 官方推出的 AI 应用开发框架,定位:像 SpringBoot 封装 Web、MyBatis 封装数据库一样,统一封装大模型、向量库、RAG、Agent、工具调用、MCP 协议,做到一套代码、无缝切换任意大模型。
支持:
- 国产模型:通义千问、文心一言、讯飞星火、智谱
- 海外模型:OpenAI、Anthropic
- 本地模型:Ollama、LocalAI
协议:OpenAI 兼容接口、MCP 模型控制协议(Streamable HTTP/SSE)
设计思想:抽象统一接口,底层厂商自由替换,业务代码不用改。
Spring AI 顶层核心架构
分层理解:
- 应用层:Chat 对话、RAG 知识库问答、Agent 智能体、工作流编排
- 核心抽象层:ChatModel、EmbeddingModel、Prompt、Advisor、Tool、VectorStore
- 适配层:对接各厂商(OpenAI/Ollama/ 通义千问 / 阿里云百炼)
- 基础设施层:向量数据库、MCP 服务、内存、日志、可观测性
ChatModel 对话模型
Spring AI 最核心抽象,所有大模型都实现这个接口。
能力:同步对话、流式对话、多轮上下文、函数调用
实现类举例:
- OpenAiChatModel
- OllamaChatModel
- DashScopeChatModel(通义千问)
特点:切换模型只改配置,不改业务代码
ChatClient 聊天客户端(开发首选)
Spring AI 推荐业务层入口,封装 ChatModel,链式调用。
优势:
- 内置 Prompt 模板、记忆、工具注入
- 流式返回、拦截器扩展
实现
环境前提
JDK 17
SpringBoot 3.4.5
本地已装 Ollama,并拉取模型:ollama pull qwen2.5:7b-instruct
不用复杂依赖、不搞 MCP,先跑通 Spring AI 核心基础:ChatClient + 普通对话
pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.3</version> <!-- 降级为稳定版,解决冲突 -->
</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 标准入口)
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 {
/**
* 注入统一聊天客户端,全局使用
*/
@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) {
// 链式调用:发提示词 -> 调用模型 -> 返回内容
return chatClient.prompt(new Prompt(msg))
.call()
.content();
}
}测试访问

以上就是SpringAI+Ollama本地模型实现快速对话的实战指南的详细内容,更多关于SpringAI结合Ollama实现快速对话的资料请关注脚本之家其它相关文章!
相关文章
解决Maven build打包,类找不到,找不到引用的那个项目里面的类问题
文章讨论了在使用Maven构建项目时遇到类找不到的问题,并给出了解决方法,主要原因是公共项目被打成了可执行的jar,导致其他项目无法引用其中的类,解决方法包括在公共项目的pom中将打包类型改为普通jar,以及在主项目中正确引用公共项目2026-02-02
springboot集成mybaits plus实现增删改查功能(示例代码)
本文介绍了使用SpringBoot集成MyBatisPlus实现增删改查的全过程,包括添加依赖、配置数据库、创建表及实体类、Mapper和Service层的创建及实现等,最后通过knife4j或generated-requests.http进行测试,感兴趣的朋友跟随小编一起看看吧2026-04-04
Java GUI进阶之流式布局管理器FlowLayout专项精讲
FlowLayout-流式布局管理器,按水平方向依次排列放置组件,排满一行,换下一行继续排列。排列方向(左到右 或 右到左)取决于容器的componentOrientation属性2022-04-04


最新评论