当前位置: 首页 > news >正文

Ollama 本地部署 Qwen3 + SpringAI Alibaba 快速入门


标签:Ollama、Qwen3、SpringAI Alibaba、ChatClient、流式响应、Java AI

一、前言

上一篇介绍了阿里云百炼云端模型和 OpenAI 接口规范。
本篇进入实操环节:

  1. 使用 Ollama 在本地部署 Qwen3 大模型
  2. 在 Spring Boot 中集成 SpringAI Alibaba
  3. 同时配置云端(DashScope)和本地(Ollama)双模型
  4. 编写同步对话与流式对话接口

二、Ollama:本地大模型管理神器

2.1 什么是 Ollama

Ollama 是一个用于在本地运行、管理和发布大模型的开源框架。
它让下载和运行 Qwen 等模型变得像docker run一样简单。

2.2 安装 Ollama

  1. 访问官网:https://ollama.com
  2. 下载对应操作系统的安装包
  3. 一键安装

2.3 验证安装

打开终端执行:

ollama--version

2.4 拉取并运行 Qwen3

ollama run qwen3:1.7b
  • 模型大小约 1.4GB
  • 下载完成后会自动运行模型服务
  • 服务地址:http://localhost:11434

也可以打开 Ollama 客户端界面,搜索模型后直接下载启动。

2.5 测试本地模型

方式一:交互界面在 ollama run 的交互界面中直接输入问题,查看回复。
方式二:浏览器访问

http://localhost:11434/api/tags

能看到已拉取的模型列表,说明本地服务启动成功。

恭喜,你拥有了一个完全在本地运行、可对话的大模型!

三、SpringAI Alibaba 简介

3.1 什么是 SpringAI Alibaba

SpringAI Alibaba 是 Spring AI 项目的一个实现,由阿里云贡献:

  • 深度集成阿里云百炼(DashScope)
  • 支持 OpenAI 兼容接口
  • 提供统一的 ChatClient、AiStreamClient 等接口
  • 通过配置即可切换模型,极大降低集成复杂度

官方文档:https://java2ai.com

3.2 SpringAI 与 SpringAI Alibaba 的区别

特性SpringAISpringAI Alibaba
定位国外 AI 接口标准国内环境优化版本
国内模型兼容性百炼等国内模型不完全兼容阿里云百炼全系列完美兼容
使用体验访问国内模型较麻烦方便快捷,开箱即用

四、Spring Boot 项目配置双模型

4.1 版本对应关系

SpringAI AlibabaSpring AISpring Boot
1.0.0.21.0.03.4.5

4.2 Maven 依赖

<properties><java.version>21</java.version><spring-ai.version>1.0.0</spring-ai.version><spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version><spring-boot.version>3.4.5</spring-boot.version></properties><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-bom</artifactId><version>${spring-ai-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-dashscope</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-ollama</artifactId></dependency><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-memory-redis</artifactId></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.2.0</version></dependency></dependencies>

4.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:8080

4.4 配置 ChatClient

packagenet.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.*;@RestController@RequestMapping("/api/ai")@RequiredArgsConstructorpublicclassSimpleAiController{privatefinalChatClientdashscopeChatClient;privatefinalChatClientollamaChatClient;/** * 同步响应 - 云端模型 */@GetMapping(value="/simple/chat",produces="text/html;charset=utf-8")publicStringsimpleChat(@RequestParam("question")Stringquestion){returndashscopeChatClient.prompt(question).call().content();}/** * 同步响应 - 本地 Ollama 模型 */@GetMapping(value="/ollamaSimpleChat/chat",produces="text/html;charset=utf-8")publicStringollamaSimpleChat(@RequestParam("question")Stringquestion){returnollamaChatClient.prompt(question).call().content();}}

5.2 添加日志 Advisor

@BeanpublicChatClientdashscopeChatClient(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",produces="text/html;charset=utf-8")publicFlux<String>streamChat(@RequestParam("question")Stringquestion){returndashscopeChatClient.prompt(question).stream().content();}@GetMapping(value="/ollamaStreamChat/chat",produces="text/html;charset=utf-8")publicFlux<String>ollamaStreamChat(@RequestParam("question")Stringquestion){returnollamaChatClient.prompt(question).stream().content();}

七、小结

本篇完成了:

  • Ollama 本地部署 Qwen3
  • SpringAI Alibaba 项目搭建
  • 云端 + 本地双模型配置
  • 同步对话与流式对话接口实现

下一篇将介绍提示词工程、系统提示词配置,以及使用 Redis 让 AI 记住上下文。

http://www.jsqmd.com/news/1183701/

相关文章:

  • 记录一下-31名。云原生领域内容榜
  • 2026年7月最新青岛天梭官方售后客服电话及服务网点地址查询 - 天梭服务中心
  • 5分钟掌握足球PBR材质制作:Photoshop与Unity高效工作流
  • 我这种情况到底要不要办ODI?广州老板自查五问 | 判断路径 - 欢欢在创业
  • 模板驱动型文档自动化:零代码实现结构化内容复用
  • 江诗丹顿中国官方售后服务中心|服务热线及官方维修地址权威信息声明(2026年7月更新) - 江诗丹顿服务中心
  • ChatGPT赋能电商增长:从0到月销500万的12个可复用提示词模板与AB测试数据验证
  • HarmonyOS《柚兔学伴》项目实战09-待办列表 UI——List+ForEach+滑动删除
  • 微信投票到底该怎么做?2026三大平台对比+人人微投票保姆级图文教程
  • Octotree 8.3.0 与 Gitako 4.9.0 深度对比:3项核心功能与2种代码浏览体验
  • HTSeq 0.5.4p1源码包:含htseq-count、质控脚本与GTF解析功能的Python生物信息工具
  • 全球首发!五一视界定制物理AI卫星ECS-1剑指万亿赛道
  • 积家全国售后服务中心专业手表维修保养权威公示(2026年7月最新) - 积家官方售后服务中心
  • ODI备案为什么会被卡?广州企业最常见的几个卡点 - 欢欢在创业
  • 2026年职称论文写作加速器:AI工具如何帮你高效完成职称论文
  • 2026年 实木板材供货商实力解析:生态、免漆、直拼、环保板材采购决策指南 - 甄选服务推荐
  • 雅典中国官方售后服务中心维修地址及服务热线实地考察报告多信源验证(2026年7月最新) - 亨得利官方服务中心
  • VC++高效处理CSV文件实战:编码解析、大文件流式读写与性能优化
  • 【小程序毕业设计】SpringBoot 架构下的高校校车排班与订座系统的设计与实现 基于移动端的高校校车出行预订服务系统(源码+文档+远程调试,全bao定制等)
  • DeepSeek提示词效果暴跌预警:当LLM置信度低于0.62时,必须启用的4层动态重写机制
  • 免费解锁WeMod专业版:Wand-Enhancer终极本地增强指南
  • SAP QM 检验点(Inspection Point) 与 PP 集成:03/04类型对比及5个生产质检场景解析
  • AI Agent 系统架构:Planner、Executor、Memory、Tools 如何协作
  • 办ODI备案,企业大概要准备哪些材料?广州老板提前心里有数 - 欢欢在创业
  • 明末渊虚之羽下载2026最新免费+修改器
  • Tomcat 9 JDWP 远程调试原理解析:Attach 与 Listen 模式 2 种场景选择指南
  • 亲身探访上海宝玑官方售后服务中心|全新官方服务电话与地址(2026年7月最新) - 亨得利钟表维修中心
  • 江诗丹顿官方服务项目及价格查询|热线与地址权威信息通知(2026年7月最新) - 江诗丹顿官方服务中心
  • Perplexity vs ChatGPT vs Claude:实测127组复杂查询任务,谁才是真正可靠的“事实型AI助手”?
  • YARA规则性能优化:3种字符串策略对比与10万文件扫描实测