大模型开发 - 06 QuickStart_本地大模型私有化部署实战:Ollama + Spring AI 全栈指南
摘要:本文介绍了如何利用Ollama本地部署大语言模型并与Spring AI框架集成。Ollama支持主流开源模型(如Qwen、Llama等)的本地运行,保障数据安全。文章详细演示了Ollama安装、模型部署流程,并展示了Spring AI集成方法。此外,还探讨了高级功能实现,包括关闭思考模式、流式输出和多模态图像识别,为企业级AI应用开发提供了完整解决方案。通过这种组合,开发者能在保证数据隐私的
文章目录
Pre
大模型开发 - 03 QuickStart_借助DeepSeekChatModel实现Spring AI 集成 DeepSeek
大模型开发 - 04 QuickStart_DeepSeek 模型调用流程源码解析:从 Prompt 到远程请求
大模型开发 - 05 QuickStart_接入阿里百炼平台:Spring AI Alibaba 与 DashScope SDK
概述
在企业级 AI 应用日益普及的今天,如何在保障数据安全的前提下高效利用大语言模型(LLM),成为许多技术团队的核心诉求。Ollama 作为一款轻量级、开源的大模型本地运行环境,支持将主流开源大模型(如 Qwen、Llama、Gemma 等)一键部署到本地设备,实现完全离线、私有化的推理服务。配合 Spring AI 框架,开发者可以快速构建企业级 AI 应用,兼顾安全性、成本与开发效率。
本文将手把手带你完成从 Ollama 安装 → 模型部署 → Spring AI 集成 → 高级功能(关闭思考、流式输出、多模态) 的全流程实践。
一、为什么选择 Ollama?
- 完全本地运行:无需联网,数据不出内网,满足企业数据合规要求
- 开箱即用:命令行一键拉取、运行主流开源模型(Qwen、Llama、Mistral 等)
- 资源友好:支持 4B、7B、8B 等中小参数模型,普通消费级 GPU(如 4–8GB 显存)即可运行
- API 标准化:提供 RESTful API(默认
http://localhost:11434
),便于集成到任意系统 - 持续演进:官方积极支持 流式输出(streaming)、工具调用(tool calling)、思考模式(thinking)、多模态(vision) 等前沿能力
二、本地安装 Ollama
1. 下载安装
访问 https://ollama.com/download,根据操作系统下载安装包(Windows / macOS / Linux 均支持)。
Windows 用户需 Windows 10 或更高版本,安装过程只需“下一步”即可。
2. 验证安装
打开终端(CMD / PowerShell / Terminal),执行:
ollama list
初始状态下无模型,输出为空。
3. 拉取并运行模型
以 Qwen3-4B 为例(40亿参数,适合 4GB+ 显存设备):
ollama run qwen3:4b
首次运行会自动下载模型,完成后即可在终端与模型对话。
💡 提示:若设备性能较强,可尝试
qwen3:8b
,但响应速度可能变慢。
三、Spring AI 集成 Ollama
Spring AI 是 Spring 官方推出的 AI 应用开发框架,抽象了大模型调用细节,支持多种后端(OpenAI、Ollama、Azure 等)。
1. 添加依赖(Maven)
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
推荐使用 Spring Boot 3.x + Spring AI 1.0.1+(修复了多项 Ollama 兼容性问题)
2. 配置 application.yml
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: qwen3:4b
3. 基础对话测试
/**
* 测试Ollama聊天模型功能
*
* @param ollamaChatModel Ollama聊天模型实例,通过Spring自动注入
*/
@Test
public void testOllama(@Autowired OllamaChatModel ollamaChatModel) {
// 调用Ollama聊天模型并输出响应结果
System.out.println(ollamaChatModel.call("你好你是谁?/no_think"));
}
运行后将输出模型对“你是谁?”的回答。
四、高级功能实战
1. 关闭“思考模式”(Thinking)
Ollama 自 v0.9.0 起支持 Thinking 模式(如 Qwen3、DeepSeek-R1),模型会先输出推理过程(<think>...</think>
),再给出答案。
但在某些场景(如客服机器人、API 服务)中,我们希望直接获取答案,避免冗余内容。
方法一:通过提示词指令(临时方案)
String text = ollamaChatModel.call("你是谁?/no_think");
⚠️ 注意:截至 Spring AI 1.0.0,此方式仍可能返回
<think>
标签,需前端或后端过滤处理。
方法二:使用 API 参数(推荐,需 Spring AI 1.0.1+)
Ollama 的 /api/chat
支持 think: false
参数,但 Spring AI 尚未直接暴露该选项。
可考虑通过自定义 OllamaOptions
或升级至支持版本(关注 Spring AI 官方更新)。
2. 流式输出(Streaming)
流式响应适用于聊天界面、实时打字效果等场景。
/**
* 测试Ollama聊天模型的流式响应功能
*
* @param ollamaChatModel 自动注入的Ollama聊天模型实例,用于发起流式聊天请求
*/
@Test
public void testDeepseekStream(@Autowired OllamaChatModel ollamaChatModel) {
// 发起流式聊天请求,向模型发送"你好你是谁"消息
Flux<String> stream = ollamaChatModel.stream("你好你是谁");
// 遍历流式响应结果并打印到控制台
stream.toIterable().forEach(System.out::println);
}
注意:Ollama v0.8.0+ 才支持
stream + tools
联合使用。
Spring AI 1.0.0 存在兼容性问题(Issue #3369),1.0.1 已修复。
3. 多模态(图像识别)
Ollama 支持多模态模型,如:
- Qwen 2.5 VL
- Gemma 3
- Llama 4(Vision)
- Mistral Small 3.1
示例:使用 Gemma 3 识别图片
选择 Input支持 Image类型的模型
/**
* 多模态图像识别测试方法,使用gemma3模型进行图片识别
* @param ollamaChatModel Ollama聊天模型实例,用于调用多模态识别功能
*/
@Test
public void testMultimodality(@Autowired OllamaChatModel ollamaChatModel) {
// 加载classpath下的图片资源
var imageResource = new ClassPathResource("files/artisan-code.png");
// 配置Ollama选项,指定使用gemma3模型
OllamaOptions ollamaOptions = OllamaOptions.builder()
.model("gemma3")
.build();
// 创建媒体对象,封装图片资源和MIME类型
Media media = new Media(MimeTypeUtils.IMAGE_PNG, imageResource);
// 调用模型进行图片识别,发送包含图片和文本提示的请求
ChatResponse response = ollamaChatModel.call(
new Prompt(
UserMessage.builder().media(media)
.text("识别图片").build(),
ollamaOptions
)
);
// 输出识别结果
System.out.println(response.getResult().getOutput().getText());
}
提示:确保已通过
ollama run gemma3
拉取多模态版本模型。
五、企业级建议
场景 | 建议 |
---|---|
数据安全要求高 | 全流程离线部署,禁用外网访问 |
低延迟响应 | 使用 4B–8B 模型 + 关闭 thinking |
复杂任务(如工具调用) | 升级 Ollama ≥ v0.8.0 + Spring AI ≥ 1.0.1 |
长上下文需求 | 在请求中设置 num_ctx: 32000 (注意内存占用) |
生产环境监控 | 结合 Prometheus + Grafana 监控 Ollama 推理延迟与资源使用 |
六、总结
通过 Ollama + Spring AI 的组合,企业可以:
- 快速构建私有化 AI 能力
- 避免云服务 API 调用成本与数据泄露风险
- 灵活支持文本、流式、工具调用、多模态等场景
随着 Ollama 不断增强对 Model Context Protocol (MCP)、增量工具解析、思考控制 的支持,本地大模型的实用性与稳定性将持续提升。未来,我们甚至可以在笔记本上运行具备“思考-行动-反思”能力的智能体(Agent)!
资源链接
- Ollama 官网:https://ollama.com
- Thinking 模式说明:https://ollama.com/blog/thinking
- Streaming + Tools 支持:https://ollama.com/blog/streaming-tool
- Spring AI GitHub:https://github.com/spring-projects/spring-ai
更多推荐
所有评论(0)