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/10/14 1:33:14 阅读更多 →
数据质量崩塌前的最后防线,AI数据治理框架必须部署的5个强制控制点

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

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

2026/10/16 1:20:14 阅读更多 →
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/10/15 0:17:25 阅读更多 →

最新新闻

RevokeMsgPatcher:PC 微信/QQ/TIM 防撤回补丁完整指南,3 分钟装完,效果边界一次讲清

RevokeMsgPatcher:PC 微信/QQ/TIM 防撤回补丁完整指南,3 分钟装完,效果边界一次讲清

RevokeMsgPatcher:PC 微信/QQ/TIM 防撤回补丁完整指南,3 分钟装完,效果边界一次讲清 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也…

2026/10/16 2:53:57 阅读更多 →
回溯法求解数独:LeetCode 37 解数独的三重占用标记剪枝与多语言实现解析

回溯法求解数独:LeetCode 37 解数独的三重占用标记剪枝与多语言实现解析

示例工程 【免费下载链接】leetcode 🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解 项目地址: https://git…

2026/10/16 2:53:57 阅读更多 →
让 Linux 上的 Claude Code/codex 拿到 Windows 截图的小工具

让 Linux 上的 Claude Code/codex 拿到 Windows 截图的小工具

让 Linux 上的 Claude Code/codex 拿到 Windows 截图的小工具 picopaste 把 Windows 截图送到 Linux 的步骤压缩为一次热键:截图进入剪贴板后按 altshiftv,工具通过已有 SSH 通道上传图片,将远端绝对路径写入剪贴板并注入当前焦点窗口。Linu…

2026/10/16 2:53:57 阅读更多 →
GetQzonehistory:一次扫码,把 QQ 空间历史说说完整导出成本地 Excel 和图片

GetQzonehistory:一次扫码,把 QQ 空间历史说说完整导出成本地 Excel 和图片

GetQzonehistory:一次扫码,把 QQ 空间历史说说完整导出成本地 Excel 和图片 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 翻 QQ 空间翻到 2018 年,…

2026/10/16 2:53:57 阅读更多 →
微信聊天记录导出完整指南:留痕把对话存成 HTML、Word 和年度报告

微信聊天记录导出完整指南:留痕把对话存成 HTML、Word 和年度报告

微信聊天记录导出完整指南:留痕把对话存成 HTML、Word 和年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendi…

2026/10/16 2:53:57 阅读更多 →
如何把来路可疑的 iOS 安装包变成一份可审计清单

如何把来路可疑的 iOS 安装包变成一份可审计清单

如何把来路可疑的 iOS 安装包变成一份可审计清单 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea 做 iOS 应用逆向不一定从反汇编开始。REA&#xf…

2026/10/16 2:52:57 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →