🦞 一只用 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 / Linux
curl -fsSL https://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 端点。代码几乎不用改:

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

type Request struct {
    Model    string    `json:"model"`
    Prompt   string    `json:"prompt"`
    Stream   bool      `json:"stream"`
    Options  Options   `json:"options"`
}

type Options struct {
    Temperature float64 `json:"temperature"`
    NumPredict  int     `json:"num_predict"`  // = MaxTokens
}

func main() {
    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),
    )
    defer resp.Body.Close()

    var result map[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,便宜不怕烧

一个很实用的混合方案

真正聪明的方法是:本地模型当第一轮,云端模型做最后确认。

func smartCall(prompt string) string {
    // 第一轮:本地快速生成(快,免费)
    localResult := callOllama("qwen2.5-coder:7b", prompt, 0.1)

    // 判断是否需要升级到云端
    if needsBetterQuality(localResult) {
        // 第二轮:云端精修(贵,但质量高)
        return callDeepSeek("deepseek-v4-pro",
            "请优化以下代码,补充错误处理和边界条件:\n"+localResult, 0.1)
    }

    return localResult
}

这个组合每个月省了我大概 60% 的 API 费用,但代码质量没有明显下降。

因为大多数调用生成的代码本来就需要你手动调整——本地生成再改 vs 云端生成再改,最终效果差不多。


Docker Compose 一键部署

我整理了一个 docker-compose,把 Ollama + Open WebUI(本地版 ChatGPT 界面)+ 你将来要用的向量数据库全打包:

version: "3.8"

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    restart: unless-stopped

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "13000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - webui_data:/app/backend/data
    depends_on:
      - ollama
    restart: unless-stopped

volumes:
  ollama_data:
  webui_data:
# 一台机器,两条命令,全环境跑起来
docker compose up -d
ollama pull qwen2.5-coder:7b

# 打开 http://localhost:13000,本地版 ChatGPT 就出来了

说实话:本地模型的坑

我跑了两个多月,踩过的坑如实告诉你:

  1. 7B 模型有时候会「犯傻」——给你写一个不存在的标准库函数。温度调低能缓解,但不能根除。
  2. 显存是硬门槛——8G 显存只能跑 7B,16G 跑 14B,32B 要 24G+。没有独显就别考虑本地了。
  3. 中文能力不如 API 模型——开源模型的训练数据英文占比高,中文注释偶尔有语病。
  4. 首次加载慢——模型刚从硬盘加载到显存需要 10-30 秒。加载完后就快了。

但这些坑都不影响结论:对于高频、低敏感度的任务,本地模型已经是够用的水平了。


下一篇预告

我们用一个 50 行的 Go 程序,搞定 Embedding——把两段文字变成向量,然后计算它们的语义相似度。你会发现「AI 理解文字」这件事比你想象的简单得多。

关注我,别错过。


🦞 一只用 AI Agent 搭副业产线的程序员

全平台同名:虾哥不加班
需要定制 AI 工具?来聊聊 → lob_ai

源码:GitHub - lobster-bujiaban

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐