我用一台旧电脑跑了个 AI 模型,发现比云 API 还香(附一键部署命令)
🦞 一只用 AI Agent 搭副业产线的程序员
上篇算完账单,你可能有个想法:「每天 100+ 次调用,一年也是一笔钱。能不能自己部署,不花这个钱?」
答案是可以。而且比你想的简单。
我用一台配置很普通的机器——i7-12700H、32G 内存、一块 RTX 3060(12G 显存)的笔记本——跑了一个开源模型。同一个代码生成任务,本地 vs 云端的结果是这样的:
| 指标 | DeepSeek V4 API | Ollama + Qwen 2.5 Coder 7B |
|---|---|---|
| 代码正确率 | 95% | 80% |
| 单次生成耗时 | 3s | 8s |
| 每次调用成本 | ¥0.0018 | ¥0(电费忽略不计) |
| 并发能力 | 几乎无限 | 1-2 个请求 |
| 隐私 | 代码传到云端 | 数据不出本机 |
结论先行:本地模型适合高频、隐私敏感、不要求最高质量的场景。云端 API 适合需要最强模型能力的场景。两者不是替代关系,是互补关系。
第一步:一行命令装 Ollama
Ollama 是目前最简单的大模型本地部署工具。没有复杂的 Python 环境配置,没有 CUDA 版本兼容问题。
# macOS / Linuxcurl-fsSLhttps://ollama.com/install.sh|sh# Windows# 去 ollama.com 下载安装包,双击安装装完验证:
ollama--version# ollama version is 0.12.0第二步:挑一个模型
# 推荐这几个,按显存大小选:# 8G 显存 — 选 7B 参数模型ollama pull qwen2.5-coder:7b# 通义千问代码版,推荐# 16-24G 显存 — 可以跑 14B 了ollama pull qwen2.5-coder:14b# 32G+ 显存 — 32B 走起ollama pull qwen2.5-coder:32b第一次会下载模型文件,7B 模型大概 4GB,几分钟的事。
拉下来之后,终端直接聊:
ollama run qwen2.5-coder:7b>>>用 Go 写一个冒泡排序这就是本地版的 ChatGPT 体验了。不联网,数据不出你的电脑。
第三步:用 Go 调用本地模型
Ollama 自带一个兼容 OpenAI 格式的 API 端点。代码几乎不用改:
packagemainimport("bytes""encoding/json""fmt""net/http")typeRequeststruct{Modelstring`json:"model"`Promptstring`json:"prompt"`Streambool`json:"stream"`Options Options`json:"options"`}typeOptionsstruct{Temperaturefloat64`json:"temperature"`NumPredictint`json:"num_predict"`// = MaxTokens}funcmain(){req:=Request{Model:"qwen2.5-coder:7b",Prompt:"用 Go 写一个并发安全的计数器。",Stream:false,Options:Options{Temperature:0.1,NumPredict:300,},}body,_:=json.Marshal(req)resp,_:=http.Post("http://localhost:11434/api/generate","application/json",bytes.NewReader(body),)deferresp.Body.Close()varresultmap[string]interface{}json.NewDecoder(resp.Body).Decode(&result)fmt.Println(result["response"])}注意两处变化:
- URL 从
api.deepseek.com变成localhost:11434 - 不需要 API Key
- 请求格式略有不同(单 Prompt 而非 Messages 数组)
第四步:同任务对比——本地 vs 云端
我用同一个 Prompt 跑了 20 次,记录结果:
Prompt: "用 Go 写一个支持超时、重试、连接池的 HTTP 客户端工具类。"DeepSeek V4 Pro(云端):
// 输出完整,包含 Client 结构体、Option 模式、超时配置// 有 context 超时控制、指数退避重试、自定义 Transport// 代码共 85 行,一次性编译通过Qwen 2.5 Coder 7B(本地):
// 输出较简洁,包含了基本功能但缺少连接池配置// 有超时和重试,但重试用的是固定间隔而非指数退避// 代码共 45 行,需要手动调整才能用于生产差别在哪?7B 模型「懂」要做超时和重试,但细节不够到位。14B 模型的输出跟 DeepSeek V4 Pro 的差距就小很多了。
成本计算:什么时候自建划算
假设你用 AI 做代码生成,每天 200 次调用,每次 Prompt ~500 token、输出 ~300 token:
| 方案 | 每天花费 | 每月花费 | 每年花费 |
|---|---|---|---|
| DeepSeek V4 Flash API | ¥0.10 | ¥3.00 | ¥36 |
| DeepSeek V4 Pro API | ¥0.36 | ¥10.80 | ¥129 |
| Ollama 本地 7B | 电费 ~¥2 | ¥60 | ¥720 |
| Ollama 本地 14B | 电费 ~¥3 | ¥90 | ¥1080 |
等等,本地怎么看起来更贵了?
因为电费。一台跑满的电脑功率 ~300W,24 小时开机的话一个月电费 ~¥100。但你的电脑大概率不会 24 小时跑模型——你可能一天只用几小时。
所以真实的账单比上面复杂。我列一个决策表:
| 你的情况 | 建议 |
|---|---|
| 每天 < 50 次调用 | DeepSeek API,便宜又省事 |
| 每天 50-200 次调用 | Flash 主力 + Pro 替补 |
| 每天 200+ 次调用 | 本地 7B 主力 + 云端 Pro 替补 |
| 数据不能出内网 | 必须本地部署,没得选 |
| 电脑没有独显 | 别试了,CPU 跑模型慢到你怀疑人生 |
| 做 Agent 开发的实验阶段 | DeepSeek Flash,便宜不怕烧 |
一个很实用的混合方案
真正聪明的方法是:本地模型当第一轮,云端模型做最后确认。
funcsmartCall(promptstring)string{// 第一轮:本地快速生成(快,免费)localResult:=callOllama("qwen2.5-coder:7b",prompt,0.1)// 判断是否需要升级到云端ifneedsBetterQuality(localResult){// 第二轮:云端精修(贵,但质量高)returncallDeepSeek("deepseek-v4-pro","请优化以下代码,补充错误处理和边界条件:\n"+localResult,0.1)}returnlocalResult}这个组合每个月省了我大概 60% 的 API 费用,但代码质量没有明显下降。
因为大多数调用生成的代码本来就需要你手动调整——本地生成再改 vs 云端生成再改,最终效果差不多。
Docker Compose 一键部署
我整理了一个 docker-compose,把 Ollama + Open WebUI(本地版 ChatGPT 界面)+ 你将来要用的向量数据库全打包:
version:"3.8"services:ollama:image:ollama/ollama:latestcontainer_name:ollamaports:-"11434:11434"volumes:-ollama_data:/root/.ollamadeploy:resources:reservations:devices:-driver:nvidiacount:1capabilities:[gpu]restart:unless-stoppedopen-webui:image:ghcr.io/open-webui/open-webui:maincontainer_name:open-webuiports:-"13000:8080"environment:-OLLAMA_BASE_URL=http://ollama:11434volumes:-webui_data:/app/backend/datadepends_on:-ollamarestart:unless-stoppedvolumes:ollama_data:webui_data:# 一台机器,两条命令,全环境跑起来dockercompose up-dollama pull qwen2.5-coder:7b# 打开 http://localhost:13000,本地版 ChatGPT 就出来了说实话:本地模型的坑
我跑了两个多月,踩过的坑如实告诉你:
- 7B 模型有时候会「犯傻」——给你写一个不存在的标准库函数。温度调低能缓解,但不能根除。
- 显存是硬门槛——8G 显存只能跑 7B,16G 跑 14B,32B 要 24G+。没有独显就别考虑本地了。
- 中文能力不如 API 模型——开源模型的训练数据英文占比高,中文注释偶尔有语病。
- 首次加载慢——模型刚从硬盘加载到显存需要 10-30 秒。加载完后就快了。
但这些坑都不影响结论:对于高频、低敏感度的任务,本地模型已经是够用的水平了。
下一篇预告
我们用一个 50 行的 Go 程序,搞定 Embedding——把两段文字变成向量,然后计算它们的语义相似度。你会发现「AI 理解文字」这件事比你想象的简单得多。
关注我,别错过。
🦞 一只用 AI Agent 搭副业产线的程序员
全平台同名:虾哥不加班
需要定制 AI 工具?来聊聊 → lob_ai源码:GitHub - lobster-bujiaban
