千问本地部署实战:从Ollama到Spring AI的完整接入指南
这段时间,业内关于“苹果和千问合作出现调整”的讨论很多。围绕 iPhone 中国市场的大模型合作,苹果与阿里之间的消息一波接一波,先是传出合作推进,又陆续出现集成层面的调整。很多人只把这件事当成商业新闻看,但作为开发者,我更关心另一个问题:千问到底是一个“别人选不选你”的供应商,还是一个“我自己就能拿起来用”的模型生态?
答案是后者。这也是这篇文章想讲清楚的核心判断:
设备厂商选模型,本质是供应链问题。选中你,不是因为你最好,而是因为你最合适。但真正稳定的生态,不是某一家手机厂商的合作备忘录,而是你随时可以下载、可以部署、可以跑在自己机器上的开源权重。
苹果的合作关系可以调整,阿里通义千问这个模型本身却很难被“删掉”。因为千问已经在本地部署、开发工具、Java 集成、办公自动化这些场景里铺开了。
这篇文章会从三个层面展开:先聊清楚“苹果删了千问,阿里为什么还是赢家”这个商业逻辑背后的技术原因;再用完整可复制的命令,带你把千问跑在本地;最后收尾于开发者的落地建议和常见坑。读完你可以获得一套明确的操作路径:从模型选型、量化级别、本地服务器启动,到 Spring AI 接本地千问、VS Code 接本地千问、办公场景对比,都有结论。
1. 苹果删了千问,但阿里的机会在开发者手里
先明确一个判断:“被苹果删除”和“阿里赢了”并不矛盾。
过去一年里,手机厂商、电脑厂商、汽车厂商都在为端侧智能模型找供应商。你经常看到某个大模型品牌被曝光进入某家巨头供应链,过几个月又出现调整。这在消费电子行业太正常了。对终端厂商来说,模型不是宗教信仰,而是供应链里的一个零部件,选型和备胎策略都要有。
但阿里通义千问和其他“只能通过云 API 调用”的模型有一个根本区别:千问大量模型是开放权重,可以下载到本地,跑在自己服务器、工作站甚至开发板上。
这意味着什么呢?
- 如果某个终端厂商不合作了,模型不会消失。
- 如果某个云厂商不提供 API 了,开发者可以通过 Ollama、LM Studio、ModelScope 自己把模型跑起来。
- 如果某个地区合规政策变化,本地部署本身就是一个可选的合规方案。
- 如果某个收费 API 涨价了,你可以直接切换到本地推理。
所以,你把视角从“谁进入谁的供应链”抬到“谁在开发者中间真正形成了使用习惯”,答案就很清晰。千问的竞争对手从来不是苹果,而是豆包、DeepSeek、元宝这些同样在争夺开发者入口的模型。设备厂商的合作是锦上添花,开发者生态才是长期竞争力。
这也是为什么这篇文章值得收藏。它不聊八卦,只讲你可以执行的那部分:如何在本地部署千问、如何在现有开发工具链里接入千问、如何选择合适的中文办公模型。
1.1 为什么“开放权重”比“某个大厂合作”更值钱
一个模型是否值得长期投入,看三件事:权重是否开放,能不能本地部署,社区工具链是否成熟。
千问在这三点上都踩准了。Qwen2.5 系列、Qwen3 系列已经在 Hugging Face、ModelScope 等模型社区放出大量开源权重,包括 0.5B、1.5B、3B、7B、14B、32B、72B 等多个参数量级别。从几 GB 内存的树莓派设备,到双卡 3090 的工作站,到云端 A100 集群,都能找到适合自己的档位。
相比之下,部分闭源模型你再喜欢也只能通过 API 使用,数据都要过别人的服务。很多企业客户和国内开发者对这一点很敏感,也正是因为如此,千问的本地部署热度一直很高。
2. 千问到底是什么?为什么说它“删不掉”
千问(Qwen)是阿里通义实验室开发的大语言模型系列。和其他模型品牌不同,千问更强调“全链路”覆盖:小到手机端侧,大到云端数据中心,几乎每个硬件档位都有对应模型。
从技术角度看,千问有几个容易被忽略的特点。
第一个特点是中文能力稳定。在中文理解、中文写作、成语使用、中国式办公文档处理上,千问的表现比很多英文主导模型更自然。这也是它被广泛用于会议记录、论文写作、办公自动化这些场景的原因。
第二个特点是工具调用与结构化输出扎实。千问的 Qwen2.5 系列开始强化 Function Calling 能力,可以让模型按 JSON Schema 输出结果。这对 Java 后端工程师尤其重要——你接一个模型到 Spring Boot 项目里,要的不只是聊天,而是能可靠返回结构化 JSON,方便业务代码解析。千问在这方面的表现是可用的。
第三个特点是量化生态成熟。模型开放后,社区很快就补上了 GGUF、GPTQ、AWQ 这些量化格式。量化后的模型体积明显减小,消费级显卡也能跑。你现在用 LM Studio 下载千问 GGUF 模型,几分钟就能跑起来,不需要写任何部署代码。
这三个特点叠加起来,让千问在“本地部署”这个关键词上形成了很强的生态韧性。本地能跑,意味着模型和具体厂商的合作关系解耦了。
3. 本地部署与模型选型:先想清楚硬件,再谈部署
很多新手犯的第一个错误,是直接下载最大参数的模型,然后发现自己显卡溢出、内存爆了、系统卡死。本地部署千问之前,先回答一个问题:你的硬件有多少显存,多少内存,多少可用磁盘。
本地模型的参数规模决定基础显存需求。参数越多,模型需要占用的显存越大。
| 模型参数规模 | 量化级别 | 约需显存(仅推理) | 适合设备 |
|---|---|---|---|
| 0.5B - 1.5B | INT4 / Q4_K_M | 1GB - 2GB | 树莓派、RK3588、旧笔记本 |
| 3B - 4B | Q4_K_M | 3GB - 4GB | 普通家用笔记本、低端显卡 |
| 7B - 8B | Q4_K_M | 5GB - 6GB | RTX 3060、4070 等消费级显卡 |
| 14B | Q4_K_M | 9GB - 10GB | RTX 4080、4090 |
| 27B | Q4_K_M | 16GB - 18GB | RTX 3090 单卡勉强,双卡更稳 |
| 32B | Q4_K_M | 19GB - 21GB | RTX 4090、双 3090 |
| 72B | Q4_K_M | 45GB 左右 | A100、多卡服务器、专业工作站 |
表中的数据是按通用估算口径整理的。不同量化级别对显存的占用不同,Q8 比 Q4 更吃显存,但精度更好。本地个人电脑优先推荐 Q4_K_M,这是显存压力和生成质量之间比较平衡的选择。
注意一个关键点:显存不满,CPU 来凑。如果你的显存不够,Ollama、LM Studio 会自动把一部分层放到 CPU 上计算,这叫“CPU Offload”。结果是模型能跑,但速度明显变慢。如果出现“跑起来很慢”的问题,优先怀疑的是层数卸载过多。
3.1 常见硬件档位推荐
从热搜词看,开发者常用设备主要有三类:
- 3090 双卡工作站:跑千问 27B 模型是比较均衡的组合。27B 模型 Q4_K_M 量化后大约 16GB 到 18GB,双卡 48GB 显存除了放模型,还能留出足够的 KV Cache,生成速度会比单卡快不少。
- RK3588 这类边缘开发板:适合 0.5B、1.5B 这种小参数模型。你要跑 7B 基本不现实,因为 RK3588 算力有限,且显存和内存带宽都很紧张。更稳妥的做法是跑 1.5B 的量化模型,做简单问答、实体抽取。
- Atlas 300I 这类专用推理卡:一般出现在企业级边缘推理场景。部署方式偏向昇腾 MindIE 和 MindSpore 生态,很多人卡在驱动版本和 CANN 版本兼容上,建议严格按官方文档对齐版本。
4. 使用 Ollama 本地部署千问:最快路径
如果你想在本地最快跑起一个千问模型,推荐 Ollama。它把模型下载、模型管理、OpenAI 兼容 API 这几件事合到了一起,基本是“装好即用”的体验。
4.1 安装 Ollama
在 Linux 或 macOS 终端里执行:
curl -fsSL https://ollama.com/install.sh | shWindows 用户直接到 Ollama 官网下载安装包,安装后会自动注册命令行工具。安装完成后先确认版本:
ollama --version4.2 拉取并运行千问模型
以 Qwen2.5 7B 为例。7B 是目前个人电脑上最均衡的档位,中文能力强,显存要求不算离谱。
ollama pull qwen2.5:7b ollama run qwen2.5:7b运行之后你会进入模型交互命令行,可以直接提问。
>>> 请用一句中文说明大模型本地部署的价值如果机器显存不够,也可以选择 3B 或 1.5B:
ollama pull qwen2.5:3b ollama run qwen2.5:3b从热搜词看,很多人关心“千问27B怎么跑”。如果你有两张 3090,想跑 27B,推荐用官方支持的标签或 qwen2.5 系列中 27B 量级的模型:
ollama pull qwen2.5:27b双卡跑时,Ollama 会自动利用多张显卡。你可以通过nvidia-smi观察两张卡的使用情况,确认显存分配是否正常。
4.3 通过 Ollama 的 OpenAI 兼容接口调用
Ollama 默认监听11434端口,并且提供了一个 OpenAI 兼容的 API 入口。这意味着你不需要安装任何 Ollama 专属 SDK,直接使用 OpenAI 客户端就能调用本地千问。
先用 curl 验证接口是否可用:
curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen2.5:7b", "messages": [ {"role": "user", "content": "用一句话介绍千问"} ], "stream": false }'只要返回了 JSON 内容,本地模型服务就通了。这一步是整个本地部署流程的核心里程碑。后面不管是接 Spring AI、接 VS Code,还是接其他自动化工具,本质上都是连到这个http://localhost:11434/v1地址。
4.4 设置 Ollama 允许局域网访问
如果想让局域网内的其他开发机或手机访问,需要通过环境变量修改监听地址。Linux 下可以这样启动:
OLLAMA_HOST=0.0.0.0 ollama serve这样同一网络下的其他人就能访问http://你的IP:11434。注意不要直接暴露到公网,除非你确认安全策略到位。
5. 使用 LM Studio 部署千问:适合图形界面用户
LM Studio 是另一个很受欢迎的本地模型工具,适合不喜欢命令行操作的人。它同样支持 GGUF 格式模型,内置模型下载和图形化管理界面。
使用 LM Studio 的典型流程:
- 打开 LM Studio。
- 在搜索栏中搜索
qwen。 - 选择千问的 GGUF 模型,点击下载。
- 下载完成后,在 Chat 页面选中模型并加载。
- 在 Local Server 页面启动本地推理服务器,默认端口为
http://localhost:1234/v1。
很多开发者问“为什么 LM Studio 里本地千问模型跑得很慢”。常见原因是加载模型时把上下文长度开得过大,显存被上下文占掉,导致模型层被大量卸载到 CPU。可以尝试把上下文长度从默认或自定义的大值改成 4096 或 2048,再观察速度变化。
LM Studio 的本地服务器同样兼容 OpenAI API,后续所有工具只要把 base_url 指到http://localhost:1234/v1即可。
6. 在 VS Code 中接入千问:Claude Code 与 Code Assistant 场景
开发工具接入本地模型,是这段时间技术社区讨论最热的话题之一。热搜词里出现“vscode claude code 接入千问模型”,说明很多人想用本地方案替代云端 API。
原理很简单:Claude Code、Continue 这类 VS Code 插件支持自定义 API 地址。你把地址指向本地千问,就可以在 IDE 里体验代码生成和问答。
以 Claude Code 为例。先通过环境变量把它的请求地址指向本地模型服务:
export ANTHROPIC_BASE_URL=http://localhost:11434 export ANTHROPIC_AUTH_TOKEN=ollama然后启动 Cluade Code:
claude如果你是接入 Continue 插件,则需要在config.yaml中配置 OpenAI 兼容 provider:
models: - name: qwen2.5:7b provider: openai model: qwen2.5:7b apiBase: http://localhost:11434/v1 apiKey: ollama这一步落地后,你在 IDE 里按快捷键选中代码,就能让本地千问帮你解释代码、生成测试用例、做代码审查。
需要提醒的是:本地模型在代码生成能力上和云端大模型相比仍有差距,尤其复杂业务的上下文理解。它更合适的定位是“代码助手”,而不是完全替代云端顶级编程模型。
7. Spring AI 接入本地千问:Java 工程师的集成方式
Java 后端工程师最关心的问题通常是:能不能用 Spring AI 接本地千问,把模型变成后端服务的一部分。答案是肯定的。Spring AI 提供 OpenAI 兼容适配,而 Ollama 已经暴露了 OpenAI 兼容端点,两者可以直接打通。
7.1 引入依赖
在 Spring Boot 项目的pom.xml中加入:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-openai</artifactId> </dependency>具体版本以你使用的 Spring Boot 版本和 Spring AI 发布版本为准。Spring AI 每个版本对应不同的 Spring Boot 基线,不要盲目选最新版。
7.2 配置 base-url
在application.properties中配置:
spring.application.name=qwen-local-demo spring.ai.openai.base-url=http://localhost:11434/v1 spring.ai.openai.api-key=ollama spring.ai.openai.chat.options.model=qwen2.5:7b spring.ai.openai.chat.options.temperature=0.7这里api-key填ollama就行,因为 Ollama 的兼容接口不会对这个值做真实校验。但如果你接的是云端官方 API,必须填真实 API Key。
7.3 写一个简单的 Controller
import org.springframework.ai.chat.ChatClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class QwenChatController { private final ChatClient chatClient; public QwenChatController(ChatClient chatClient) { this.chatClient = chatClient; } @GetMapping("/chat") public String chat(@RequestParam String message) { return chatClient.call(message); } }启动应用后,浏览器访问:
http://localhost:8080/chat?message=你好只要本地 Ollama 还在运行,Spring Boot 就会把请求转发给本地千问,并把结果返回给前端。整个过程不产生任何云端 API 费用。
这里最关键的工程点在于:Spring AI 把本地模型封装成了标准接口,后续如果要从本地千问切换到其他兼容 OpenAI 协议的模型,只需要修改model和base-url,业务代码不需要改动。这种“模型可替换”架构是生产项目最值得保留的设计。
8. CC Switch 等模型切换工具:多模型管理
开发者电脑上通常不只装一个本地模型。可能同时有千问、DeepSeek,甚至还有下载到一半的实验模型。CC Switch 这类工具能帮你在不同本地模型服务之间快速切换,避免反复修改端口和配置。
使用的一般流程:
- 下载并安装 CC Switch。
- 在工具中登记你的本地模型服务,填写服务名、地址、端口。
- 如果需要配置 Ollama,确认端口为
11434。 - 切换后,用之前提到的 curl 命令验证
/v1/models接口是否能返回模型列表。
常见问题集中在“CC Switch 里找不到千问”。大部分原因是:
- 对应的本地模型服务没有启动。
- 端口填错。
- 工具版本太旧,不支持最新模型接口格式。
排查方式很简单:先用 curl 访问http://localhost:11434/v1/models,如果这个地址都不通,问题不在切换工具,而在模型服务本身。
9. 办公场景:千问、豆包、元宝、DeepSeek 怎么选
热搜词里有一类问题非常高频:办公场景下,豆包、千问、元宝、DeepSeek 哪个更好用。
这类问题没有绝对答案,但可以拆成四个维度来看。
如果涉及会议记录和音视频速读,千问的办公套件和通义听悟体验更垂直。从社区反馈看,千问在会议纪要和音视频内容摘要上做得比较顺手,适合日常工作流。
如果需要代码辅助,DeepSeek 和千问都值得试,但本地部署方便程度千问更高。DeepSeek 的模型固然强,但很多版本走的是 API 路线,本地部署 GGUF 支持没有千问那么普及。
如果追求全家桶体验,豆包的优势在于字节生态。豆包和飞书、剪映联动紧密,适合已经深度使用字节系产品的团队。
如果追求本地数据隐私,只有本地可部署的模型才进入候选。千问从 0.5B 到 72B 都有开放权重,选择灵活度最高。
| 场景 | 推荐 | 原因 |
|---|---|---|
| 会议记录、音视频速读 | 千问/通义系 | 中文办公场景积累深,模型与音视频工具联动好 |
| 本地代码助手 | 千问本地部署 + 开发插件 | GGUF 生态成熟,消费级硬件可跑 |
| 云端编程能力极限测试 | DeepSeek / 千问 API | 各有优势,按具体任务评测 |
| 字节生态内办公 | 豆包 | 与飞书、剪映集成更顺畅 |
| 通用中文文案写作 | 千问 / 元宝 | 中文表达能力都比较稳定 |
没有哪个模型在所有维度都是第一。真正聪明的做法是,办公场景用成熟云端工具,开发场景保留本地模型作为兜底,两边不冲突。
10. 常见问题与排查思路
无论你用 Ollama、LM Studio 还是 Spring AI,下面这些问题是本地部署千问时最高频的坑。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| LM Studio 或 Ollama 模型运行非常慢 | 显存不足,模型层大量卸载到 CPU | 用任务管理器观察 GPU 显存占用率 | 降低上下文长度,改用 Q4_K_M 量化,或换更小模型 |
| Ollama 拉取模型后无法运行 | 下载不完整或模型损坏 | 执行ollama list,重新 pull | 删除后再拉取 |
| Spring Boot 启动后调用 /chat 返回 404 | base-url 指向错误 | curl 先测http://localhost:11434/v1/models | 修正 base-url 为正确端口 |
| Spring AI 能访问但没有输出 | 上下文窗口超限,或 max_tokens 设置过小 | 查看应用日志,检查是否截断 | 增大 max_tokens,或缩短输入上下文 |
| CC Switch/切换工具里找不到千问 | 模型服务未启动或端口不一致 | curl 测试本地端口 | 启动模型服务,重新登记端口 |
| 写长文时中途不输出 | max_tokens 限制,或上下文窗口占满 | 检查 max_tokens 设置 | 调高生成上限,按需切割输入 |
| 千问本地回答质量明显比云端差 | 量化级别太低 / 模型参数太小 | 对比不同量化级别效果 | 在显存允许范围内提高 Q8,或换更大参数模型 |
| 网络搜索显示有某版本,但本地找不到下载入口 | 模型隐藏在了非默认仓库 | 去 ModelScope、Hugging Face 搜索 | 使用 modelscope 下载后手动导入 |
排查顺序一般从底向上:先验证模型服务是否可用,再验证 API 端点是否连通,最后才检查业务代码。
11. 最佳实践与工程建议
结合社区经验和实际工程场景,总结几条建议。
第一,默认从 Q4_K_M 量化开始。不要一上来就追求 Q8 或 FP16,先保证流程跑通。Q4_K_M 在中端显卡上的速度和显存占用更均衡。等业务逻辑验证完,再决定要不要提高精度。
第二,把本地模型服务当作独立进程管理。不要每次开会话时才启动模型。推荐将 Ollama 或 LM Studio 注册为系统服务,开机自启,保证其他开发工具随时都能连接到模型。
第三,在业务代码中预留模型切换能力。把模型连接信息放到配置中心或环境变量里,不要在业务代码里硬编码端口和模型名。这样下次换模型时,只需要改配置。
第四,严格控制生产环境的无认证暴露。本地模型服务默认没有认证。如果部署在企业服务器上,一定要加一层 API Key 校验或网络白名单,避免生产环境被内网其他服务随意调用。
第五,本地模型的输出要接入日志和审计。模型生成内容可能是不可控的,尤其在离线环境中。建议在调用层记录请求参数和返回结果,便于问题回溯。
第六,不要在论文写作、正式文档生成中完全依赖模型。很多人问“怎么让千问写论文时不中断”,这本质是 max_tokens 和提示词策略问题。建议长文分节生成,每次只写一个章节,再统一整合,而不是让模型一口气输出整篇论文。这样既能减少中断,也能让结构更稳定。
我把这个思路直接给一个可复用的提示模板:
你现在是学术写作助手。我会分小节提问,请按小节输出。 每次输出控制在800字以内,只输出正文,不要输出标题。 等我给出下一节内容后,再继续。这样看起来绕了远路,实际生成稳定性和可编辑性都比一次性输出好很多。
12. 总结与后续学习方向
回到文章开头的问题。苹果和千问的合作关系或许会出现调整,但阿里在开发者生态里的位置,不是靠单一硬件订单决定的,而是靠“开放权重、本地可跑、工具链丰富、中文能力强”这四个基础打出来的。
从热搜趋势能明显感受到一个变化:使用千问的人,谈论的重点已经从“千问能干什么”切换到了“千问怎么部署、怎么接入、怎么和现有系统整合”。围绕 2025 年的开源模型竞争,模型的平均智商已经不是唯一瓶颈,工程化成本才是。谁能被更快部署、更容易集成、更方便切换,谁就更可能留在开发者的技术栈里。
下一步,你可以按顺序做三件事:
- 把你当前正在用的 IDE 接入本地千问,从最简单的代码注释生成和代码解释开始。
- 用 Spring AI 或者 Python FastAPI 把本地千问封装成团队内部知识库的问答服务。
- 调研 RAG 方案,把千问接入到你的个人文档库,让模型能回答基于你私有文档的问题。
本地部署不是终点,只是起点。真正值得投入的是围绕它建立的一套可替换、可观测、可自动化的工程链路。这套链路,不会因为任何一次厂商合作调整而失效。
建议把这篇文章收藏备用,后面部署和排错时可以对照操作。
