Ollama 本地部署 Qwen3 + SpringAI Alibaba 快速入门
标签Ollama、Qwen3、SpringAI Alibaba、ChatClient、流式响应、Java AI一、前言上一篇介绍了阿里云百炼云端模型和 OpenAI 接口规范。本篇进入实操环节使用 Ollama 在本地部署 Qwen3 大模型在 Spring Boot 中集成 SpringAI Alibaba同时配置云端DashScope和本地Ollama双模型编写同步对话与流式对话接口二、Ollama本地大模型管理神器2.1 什么是 OllamaOllama 是一个用于在本地运行、管理和发布大模型的开源框架。它让下载和运行 Qwen 等模型变得像docker run一样简单。2.2 安装 Ollama访问官网https://ollama.com下载对应操作系统的安装包一键安装2.3 验证安装打开终端执行ollama--version2.4 拉取并运行 Qwen3ollama run qwen3:1.7b模型大小约 1.4GB下载完成后会自动运行模型服务服务地址http://localhost:11434也可以打开 Ollama 客户端界面搜索模型后直接下载启动。2.5 测试本地模型方式一交互界面在 ollama run 的交互界面中直接输入问题查看回复。方式二浏览器访问http://localhost:11434/api/tags能看到已拉取的模型列表说明本地服务启动成功。恭喜你拥有了一个完全在本地运行、可对话的大模型三、SpringAI Alibaba 简介3.1 什么是 SpringAI AlibabaSpringAI Alibaba 是 Spring AI 项目的一个实现由阿里云贡献深度集成阿里云百炼DashScope支持 OpenAI 兼容接口提供统一的 ChatClient、AiStreamClient 等接口通过配置即可切换模型极大降低集成复杂度官方文档https://java2ai.com3.2 SpringAI 与 SpringAI Alibaba 的区别特性SpringAISpringAI Alibaba定位国外 AI 接口标准国内环境优化版本国内模型兼容性百炼等国内模型不完全兼容阿里云百炼全系列完美兼容使用体验访问国内模型较麻烦方便快捷开箱即用四、Spring Boot 项目配置双模型4.1 版本对应关系SpringAI AlibabaSpring AISpring Boot1.0.0.21.0.03.4.54.2 Maven 依赖propertiesjava.version21/java.versionspring-ai.version1.0.0/spring-ai.versionspring-ai-alibaba.version1.0.0.2/spring-ai-alibaba.versionspring-boot.version3.4.5/spring-boot.version/propertiesdependencyManagementdependenciesdependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-bom/artifactIdversion${spring-ai-alibaba.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion${spring-ai.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter-dashscope/artifactId/dependencydependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-ollama/artifactId/dependencydependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter-memory-redis/artifactId/dependencydependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion5.2.0/version/dependency/dependencies4.3 application.yml 配置spring:application:name:SpringAIAlibaba-RAG-Milvusai:dashscope:api-key:${dashscope.api.key}# 请替换为自己的 API Keychat:model:qwen-plusoptions:temperature:0.7ollama:enabled:truebase-url:http://localhost:11434chat:model:qwen3:1.7boptions:temperature:0.7server:port:80804.4 配置 ChatClientpackagenet.xdclass.config;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.chat.model.ChatModel;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;ConfigurationpublicclassChatConfig{BeanpublicChatClientdashscopeChatClient(Qualifier(dashscopeChatModel)ChatModeldashscopeChatModel){returnChatClient.builder(dashscopeChatModel).build();}BeanpublicChatClientollamaChatClient(Qualifier(ollamaChatModel)ChatModelollamaChatModel){returnChatClient.builder(ollamaChatModel).build();}}五、编写同步 AI 对话接口5.1 控制器代码packagenet.xdclass.controller;importlombok.RequiredArgsConstructor;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.web.bind.annotation.*;RestControllerRequestMapping(/api/ai)RequiredArgsConstructorpublicclassSimpleAiController{privatefinalChatClientdashscopeChatClient;privatefinalChatClientollamaChatClient;/** * 同步响应 - 云端模型 */GetMapping(value/simple/chat,producestext/html;charsetutf-8)publicStringsimpleChat(RequestParam(question)Stringquestion){returndashscopeChatClient.prompt(question).call().content();}/** * 同步响应 - 本地 Ollama 模型 */GetMapping(value/ollamaSimpleChat/chat,producestext/html;charsetutf-8)publicStringollamaSimpleChat(RequestParam(question)Stringquestion){returnollamaChatClient.prompt(question).call().content();}}5.2 添加日志 AdvisorBeanpublicChatClientdashscopeChatClient(ChatModeldashscopeChatModel){returnChatClient.builder(dashscopeChatModel).defaultAdvisors(newSimpleLoggerAdvisor()).build();}并在 application.yml 中开启 debug 日志logging:level:org.springframework.ai:debug访问http://localhost:8080/api/ai/simple/chat?question你是谁六、流式 AI 对话接口流式响应可以让 AI一个字一个字地输出体验更接近 ChatGPT。GetMapping(value/stream/chat,producestext/html;charsetutf-8)publicFluxStringstreamChat(RequestParam(question)Stringquestion){returndashscopeChatClient.prompt(question).stream().content();}GetMapping(value/ollamaStreamChat/chat,producestext/html;charsetutf-8)publicFluxStringollamaStreamChat(RequestParam(question)Stringquestion){returnollamaChatClient.prompt(question).stream().content();}七、小结本篇完成了Ollama 本地部署 Qwen3SpringAI Alibaba 项目搭建云端 本地双模型配置同步对话与流式对话接口实现下一篇将介绍提示词工程、系统提示词配置以及使用 Redis 让 AI 记住上下文。

相关新闻

SpringAI AlibabaRAGMilvus 笔记(一):课程导读与阿里云百炼云模型调试

SpringAI AlibabaRAGMilvus 笔记(一):课程导读与阿里云百炼云模型调试

SpringAI Alibaba&RAG&Milvus 笔记(一):课程导读与阿里云百炼云模型调试 标签:SpringAI Alibaba、阿里云百炼、大模型、OpenAI 接口规范、Java AI 一、前言 AI 大模型时代,Java 工程师也能用熟悉的 Spring 生…

2026/7/14 0:08:18阅读更多 →
AI Agent 系统架构:Planner、Executor、Memory、Tools 如何协作

AI Agent 系统架构:Planner、Executor、Memory、Tools 如何协作

一个真正好用的 AI Agent,不是“一个更会聊天的大模型”。它更像一个小型协作系统:有人负责想清楚怎么做,有人负责一步步执行,有地方保存上下文,还有一组工具连接外部世界。 如果把 Agent 只理解成“LLM Prompt”&…

2026/7/14 0:08:18阅读更多 →
【高阶·融合】混沌工程与 AI 韧性验证深度解析:从故障注入到推理服务弹性的高可用架构

【高阶·融合】混沌工程与 AI 韧性验证深度解析:从故障注入到推理服务弹性的高可用架构

【高阶融合】混沌工程与 AI 韧性验证深度解析:从故障注入到推理服务弹性的高可用架构 专栏:《AI 工程与安全深度实战》 第7轮第3篇 核心痛点:AI 推理服务的失效模式远超传统云原生应用——GPU 静默数据损坏(SDC)会无声腐蚀模型权重、KV Cache OOM 会拖垮连续批处理、负载升…

2026/7/14 0:08:18阅读更多 →
模型“高分”却“低能”??:OpenAI 教你如何从 AI 编码评估的噪声中提取真实信号

模型“高分”却“低能”??:OpenAI 教你如何从 AI 编码评估的噪声中提取真实信号

你以为模型考了 90 分,其实它只是运气好。OpenAI 最新研究告诉你,传统编码评估里藏着大量“随机噪声”,新方法能把这些干扰过滤掉,让 AI 编码能力的评估结果更接近真实水平。这是什么 OpenAI 在官方博客发布了一篇名为《Separatin…

2026/7/14 4:43:59阅读更多 →
C++项目配置管理:告别硬编码,用JsonCpp实现优雅外部化配置

C++项目配置管理:告别硬编码,用JsonCpp实现优雅外部化配置

1. 项目概述:为什么我们需要告别硬编码的配置管理? 如果你写过C项目,尤其是那些需要部署到不同环境、或者需要频繁调整参数的应用,下面这个场景你一定不陌生:为了改一个数据库的IP地址或者一个日志级别,你不…

2026/7/14 4:43:59阅读更多 →
C++封装libpng与SDL2实现轻量PNG图像处理类

C++封装libpng与SDL2实现轻量PNG图像处理类

1. 项目概述最近在整理一些老项目,发现很多C程序在处理图像时,要么依赖庞大的OpenCV库,要么就只能处理简单的BMP格式。对于只需要读取、显示和保存PNG图片的场景,引入整个OpenCV显得有点“杀鸡用牛刀”。于是,我决定自…

2026/7/14 4:43:59阅读更多 →
AtCoder-abc466_f Many Mod Calculation 题解

AtCoder-abc466_f Many Mod Calculation 题解

Solution 考虑所有 x0,1,…,Xx 0,1,\dots,Xx0,1,…,X 依次对 A1,A2,…,ANA_1,A_2,\dots,A_NA1​,A2​,…,AN​ 取模的过程。初始时这些数构成一个半开区间 [0,X1)[0, X1)[0,X1)。第 iii 步对 AiA_iAi​ 取模,会把当前每个区间 [0,d)[0,d)[0,d) 分拆成: …

2026/7/14 4:43:59阅读更多 →
C++服务热更新:从90%失败率到高可用架构的实战解析

C++服务热更新:从90%失败率到高可用架构的实战解析

1. 项目概述:从一次大会报告说起最近刚参加完2025年的全球系统软件大会,一个关于C服务热更新的专题讨论让我印象特别深刻。报告人展示了一组数据,声称在大型线上C服务中,尝试实现热更新的项目,有接近九成最终以失败告终…

2026/7/14 4:43:59阅读更多 →
OpenClaw通用架构分析

OpenClaw通用架构分析

把你的AI放在自己的服务器上,而不是别人的网页里 ——OpenClaw 架构与实践第一章:为什么不是打开一个网页就够了?“一切从实践中来,一切到实践中去。” ——认识论实践场景 你在网上看到了一个叫 OpenClaw 的东西——“一个开源的…

2026/7/14 4:38:58阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/13 4:47:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/14 2:55:05阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/13 4:52:09阅读更多 →
【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

更多请点击: https://intelliparadigm.com 第一章:Cursor数据库安全红线概览 Cursor 作为一款基于 AI 的智能编程助手,其本地数据库(SQLite 存储)承载着用户代码片段、会话历史、自定义规则及敏感上下文信息。理解其安…

2026/7/14 0:03:18阅读更多 →
【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

更多请点击: https://codechina.net 第一章:Notion AI写作辅助的底层能力边界认知 Notion AI 并非通用大语言模型的直接封装,而是基于 Llama 系列与自研微调模型构建的轻量化推理服务,其输入上下文窗口严格限制在 8192 token&…

2026/7/14 0:03:18阅读更多 →
AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

更多请点击: https://kaifayun.com 第一章:AI Agent数据越界行为的合规性挑战与溯源必要性 AI Agent在自主执行任务过程中,可能因提示注入、上下文污染或权限配置缺陷,无意或有意访问、缓存、传输受保护数据(如PII、G…

2026/7/14 0:03:18阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/13 4:21:17阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/13 4:08:53阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →