Spring AI Alibaba + Ollama:让大模型在你的电脑上跑起来
前言Spring AI Alibaba 是阿里巴巴官方推出的 AI 框架它在 Spring AI 生态基础上深度集成了通义系列模型并完全兼容 Spring AI 的抽象接口。这使得我们在享受阿里云 AI 便利的同时也能无缝接入Ollama这类本地大模型。本文将展示如何在一个 Spring AI Alibaba 项目中快速集成 Ollama 本地模型实现对话补全与流式输出。读完本文你将掌握本地安装 Ollama 并拉取 Llama 3 模型在 Spring AI Alibaba 项目中引入必要依赖通过application.yml同时配置 Alibaba 和 Ollama注入顶层接口ChatModel或具体实现OllamaChatModel实现同步调用与 SSE 流式调用一、环境准备本地安装 OllamaOllama 是一个跨平台的本地大模型运行工具提供类似 Docker 的模型管理体验。1.1 安装并启动# macOS (Homebrew)brew install ollama# Linuxcurl -fsSL https://ollama.com/install.sh | sh启动服务默认监听http://localhost:11434ollama serve1.2 拉取 Llama 3 模型ollama pull llama3测试模型ollama run llama3对话正常即表示环境就绪。二、创建 Spring Boot 项目并引入依赖2.1 项目基础基于 Spring Boot 3.x 创建项目添加 Spring Web 依赖。2.2 添加仓库需要 Spring Milestone 仓库来获取 Spring AI 相关里程碑版本repositoriesrepositoryidspring-milestones/idurlhttps://repo.spring.io/milestone/url/repository/repositories2.3 引入 Spring AI Alibaba 与 Ollama Starterdependencies!-- Spring AI Alibaba 基础 Starter提供通义千问等能力 --dependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter/artifactIdversion1.0.0-M3/version/dependency!-- Ollama 官方 Starter提供本地模型能力 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-ollama-starter/artifactIdversion1.0.0-M4/version/dependency/dependencies注意版本号请根据官方最新发布调整。Spring AI Alibaba 在底层完全兼容 Spring AI因此可以混用不同模型的 Starter。三、配置 application.yml只需一份配置即可同时启用多个模型。因为我们主要使用 Ollama所以重点配置 Ollama 的连接信息spring:ai:# 阿里云灵积配置若暂不使用可省略或者仅占位dashscope:api-key: your-dashscope-key # 此处不展开# Ollama 本地模型配置ollama:base-url: http://localhost:11434chat:enabled: trueoptions:model: llama3 # 与 ollama list 显示的模型名一致temperature: 0.7num-predict: 512embedding:enabled: falsebase-url指向本地 Ollama 服务地址。model必须与已拉取的模型名称严格一致。四、注入并使用 ChatModel重点注入方式的选择Spring AI及 Spring AI Alibaba统一了顶层接口ChatModel无论是阿里云的通义千问还是本地的 Ollama业务代码完全相同。但开发者在注入时有两种选择各有优劣。方式一注入顶层接口ChatModel推荐可插拔RestControllerRequestMapping(/ai)public class ChatController {Autowiredprivate ChatModel chatModel; // 实际注入的是 OllamaChatModel由配置决定}优点完全解耦后续若要换成阿里云灵积或其他模型仅需修改配置代码无需改动。缺点无法调用OllamaChatModel特有的非标准方法极少使用绝大多数场景用接口方法足够。方式二注入具体实现类OllamaChatModel类型明确Autowiredprivate OllamaChatModel ollamaChatModel;优点代码表意清晰一眼就知道用的是本地 Ollama 模型可调用其特有 API。缺点与实现类绑定切换 AI 提供商时需要修改代码不够灵活。实际表现当同时引入spring-ai-alibaba-starter和spring-ai-ollama-starter且只启用ollama.chat.enabled: true时Spring 容器中会存在一个OllamaChatModelBean它同时也实现了ChatModel接口。此时用接口注入和用实现类注入拿到的是同一个对象。建议如果你的项目确定长期只用 Ollama且希望代码更明确可以使用方式二若考虑未来灵活扩展推荐方式一。两种方式均不影响同步和流式调用的代码逻辑。五、同步与流式调用以下示例以接口注入ChatModel为例如果使用OllamaChatModel代码写法完全一致接口方法签名相同。5.1 同步调用GetMapping(/chat)public String chat(RequestParam String message) {Prompt prompt new Prompt(new UserMessage(message));return chatModel.call(prompt).getResult().getOutput().getContent();}5.2 流式调用SSEGetMapping(value /chat/stream, produces MediaType.TEXT_EVENT_STREAM_VALUE)public FluxString chatStream(RequestParam String message) {Prompt prompt new Prompt(new UserMessage(message));return chatModel.stream(prompt).map(response - response.getResults().get(0).getOutput().getContent());}前端可使用EventSource接收流式数据实现打字机效果。六、切换模型一行配置的事如果你后续想从本地 Ollama 切换到阿里云通义千问只需在application.yml中配置dashscope.api-key。将ollama.chat.enabled设为false或移除配置。添加dashscope.chat.options.model: qwen-turbo等。Controller 代码完全无需修改。这正是 Spring AI Alibaba 拥抱 Spring AI 生态带来的插拔式体验。七、常见问题1. 启动报错找不到 OllamaChatModel确认已引入spring-ai-ollama-starter。检查 Spring AI 版本与 Spring Boot 版本兼容性通常 1.0.0-M4 配合 Spring Boot 3.3.x。2. 连接被拒绝确保 Ollama 服务已启动ollama serve且base-url端口正确。3. 模型名无效执行ollama list查看已安装模型名注意区分大小写。4. 如何同时使用多个模型可以同时配置ollama和dashscope然后通过Qualifier或根据ChatModel的 bean 名称来注入特定实现如ollamaChatModel、dashScopeChatModel。默认情况下只有一个聊天模型会被标注为 primary。八、总结本文展示了如何在 Spring AI Alibaba 项目中快速接入 Ollama 本地大模型并重点讨论了注入ChatModel接口与注入OllamaChatModel具体实现的区别。Spring AI Alibaba 在保持阿里云模型深度集成的同时完全兼容 Spring AI 生态让我们能够自由组合本地与云端模型。代码层面只需面向ChatModel接口编程即可轻松实现同步与流式调用真正做到了一处开发处处可用。本地模型带来的数据隐私和低延迟优势结合 Spring AI Alibaba 的企业级集成能力非常适合构建安全、可控的智能应用。赶快动手试试吧参考资料Ollama 官方文档Spring AI Alibaba GitHubSpring AI 参考手册

相关新闻

从0到1单月盈利3.6万元:一个普通运营人的AI小程序实战日记(含全部Prompt指令+审核避坑清单)

从0到1单月盈利3.6万元:一个普通运营人的AI小程序实战日记(含全部Prompt指令+审核避坑清单)

更多请点击: https://codechina.net 第一章:从0到1单月盈利3.6万元:一个普通运营人的AI小程序实战日记(含全部Prompt指令审核避坑清单) 凌晨三点,我盯着后台实时跳动的数字:当日收入1,287.40&a…

2026/8/5 10:07:19 阅读更多 →
数据质量崩塌前的最后防线,AI数据治理框架必须部署的5个强制控制点

数据质量崩塌前的最后防线,AI数据治理框架必须部署的5个强制控制点

更多请点击: https://codechina.net 第一章:数据质量崩塌前的最后防线:AI数据治理框架的战略定位 在生成式AI爆发式应用的当下,模型性能不再仅由算法复杂度决定,而越来越依赖于输入数据的可信度、一致性与可追溯性。当…

2026/8/5 10:07:18 阅读更多 →
Bevy 0.14 窗口纯黑问题排查:Camera2d 只是标记组件,spawn(Camera2d) 不会创建相机

Bevy 0.14 窗口纯黑问题排查:Camera2d 只是标记组件,spawn(Camera2d) 不会创建相机

一、问题现象:窗口纯黑但程序正常运行在使用 Bevy 0.14.2 avian2d 0.1.2 开发 2D 物理演示时,你可能会遇到一个令人困惑的现象:窗口弹出后整个画面纯黑,连设置好的深灰背景 ClearColor(Color::srgb(0.10, 0.10, 0.12)) 都没有显示…

2026/8/5 10:06:18 阅读更多 →

最新新闻

【爱马仕】Hermes Agent 桌面端落地方案,Windows 可视化部署完整流程

【爱马仕】Hermes Agent 桌面端落地方案,Windows 可视化部署完整流程

Windows 本地部署 Hermes 流程简化,整合包五分钟快速搭建 不少使用者想要体验 Hermes Agent,但在原生部署阶段很容易卡在环境配置环节。 手动安装各类运行依赖、调试系统运行路径、处理命令行报错、应对系统安全拦截、补全缺失文件等一系列操作&#xf…

2026/8/5 10:48:49 阅读更多 →
魔兽世界血DK莱登极限输出:动态资源管理与高压生存循环详解

魔兽世界血DK莱登极限输出:动态资源管理与高压生存循环详解

最近在魔兽世界怀旧服里,很多死亡骑士(DK)玩家,特别是血DK(DKT),都在讨论一个话题:如何在雷电王座(Throne of Thunder)的莱登(Lei Shen&#xff0…

2026/8/5 10:48:49 阅读更多 →
4500元,手搓一台会走路的人形机器人(上) 极低成本 · 实物上手 · 可迁移至高端人形平台

4500元,手搓一台会走路的人形机器人(上) 极低成本 · 实物上手 · 可迁移至高端人形平台

系列文章目录 第1章_4500元手搓一台会走路的人形机器人 第2章_成果展示 第3章_整体架构设计 第4章_开发历程回顾 第5章_串口总线舵机入门 第6章_BusLinker舵机控制器开发 第7章_舵机控制的高级话题 第8章_多舵机机器人的关节标定体系 第9章_IMU选型 第10章_IMU轴映射 第11章_IM…

2026/8/5 10:48:49 阅读更多 →
如何5分钟掌握B站4K视频下载:终极完整指南

如何5分钟掌握B站4K视频下载:终极完整指南

如何5分钟掌握B站4K视频下载:终极完整指南 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否经常在B站看到精彩视频却…

2026/8/5 10:48:49 阅读更多 →
高并发内存池:Part-4——项目优化、调试性能分析、项目复盘

高并发内存池:Part-4——项目优化、调试性能分析、项目复盘

bit::Shadow✧(≖ ◡ ≖✿ 目录 嵌入定长内存池 大于256KB处理 🐉龙级Bug分析 性能分析 测试性能窗口调出流程 调用方/被调用方 火焰图(更加形象、清晰) 优化前的性能测试 基数树优化 二级基数树 二级基数树图示 项目结果 提效 …

2026/8/5 10:48:49 阅读更多 →
公众号文章被判定AI生成后推荐量掉了一半?我是这样把流量拉回来的。

公众号文章被判定AI生成后推荐量掉了一半?我是这样把流量拉回来的。

公众号文章被判定AI生成后推荐量掉了一半?我是这样把流量拉回来的。 那天早上七点多我照例点开后台,前一天那篇的推荐量停在四位数,往常这个时间该是它的三四倍。我以为是选题不行,第二天换了个更稳的题材,结果更低。第…

2026/8/5 10:47:48 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →