Back to blog
    n8n + Ollama + 微调模型:零 API 成本自动化技术栈
    n8nollamafine-tuningautomationzero-costsegment:builder

    n8n + Ollama + 微调模型:零 API 成本自动化技术栈

    在 n8n 中构建强大的 AI 自动化,每次执行零成本。本指南展示如何通过 Ollama 将每个 OpenAI 节点替换为本地运行的微调模型。

    EErtas Team·

    n8n 是自动化领域最好的工具之一。自托管、开源、无限灵活。你可以连接数百个工作流来在应用之间移动数据、处理文档、分类输入和生成输出——所有这些都无需编写传统后端。

    但当你向 n8n 工作流添加 AI 节点的那一刻,你引入了一个随每次执行扩展的可变成本。每次该工作流触发——每封邮件分类、每个文档摘要、每个潜客评分——你都在为 Token 向 OpenAI 付费。

    每天 100 次执行时,可以忽略不计。每天 1,000 次时,你开始注意到。每天 10,000 次以上时,它成为仅次于托管的最大运营支出。

    本指南向你展示如何通过将 n8n 工作流中的每个 OpenAI 节点替换为通过 Ollama 提供的本地运行微调模型来完全消除该成本。

    n8n 中 AI 节点的隐性成本

    让我们从 n8n 中使用 OpenAI 节点时幕后实际发生的事情开始。

    每次带有 AI 节点的 n8n 工作流执行时,它都会向 OpenAI API 发送请求。该请求包括你的系统提示、上一个节点的输入数据以及你注入的任何上下文。OpenAI 处理它,返回响应,并根据 Token 数量收费。

    以下是常见自动化模式的费用:

    工作流类型平均输入 Token平均输出 Token每次执行成本1K 次/天(月费)
    邮件分类80050$0.027$810/月
    文档摘要2,500400$0.099$2,970/月
    潜客评分600100$0.024$720/月
    工单路由1,00080$0.035$1,050/月
    发票数据提取1,500200$0.057$1,710/月

    这些数字假设 GPT-4 级别定价($30/1M 输入,$60/1M 输出)。即使使用价格低 10 倍的 GPT-3.5-turbo,每天运行 1,000 次执行仍然花费 $70-300/月,取决于工作流。

    而大多数 n8n 高级用户不只运行一个工作流。他们运行数十个。管理客户自动化的代理机构可能在所有客户中有 50 多个带 AI 节点的工作流。成本快速累积。

    最糟糕的是:这些任务中的大多数都是狭窄和重复的。 将邮件分为 5 个类别。从发票中提取姓名和日期。将潜客评为热/温/冷。这些不是需要 GPT-4 莎士比亚十四行诗知识的任务。它们是模式匹配任务,小型专用模型完全可以处理。

    技术栈:n8n + Ollama + 微调模型

    以下是我们要构建的架构:

    ┌─────────────┐     ┌─────────────┐     ┌──────────────────┐
    │   n8n        │────▶│   Ollama     │────▶│  微调模型          │
    │  工作流      │◀────│   服务器     │◀────│  (GGUF 格式)     │
    └─────────────┘     └─────────────┘     └──────────────────┘
         │                     │
         │  HTTP 请求           │  本地推理
         │  (localhost:11434)  │  (零 API 成本)
         │                     │
    

    n8n 编排你的工作流——触发器、数据路由、转换、输出操作。这不变。

    Ollama 运行在同一服务器上(或附近的 VPS),通过与 OpenAI 格式兼容的 API 端点提供你的微调模型。n8n 与它通信的方式和与 OpenAI 相同——只是 URL 不同。

    你的微调模型 是一个在你的特定工作流数据上训练的 7B 参数模型。它知道如何完成你的自动化需要的确切任务,仅此而已。它在 CPU 上运行(自动化级别吞吐量的 7B 模型不需要 GPU)。

    结果:每次执行的 API 费用为 $0。 你唯一的成本是 VPS($30/月)和微调平台(Ertas $14.50/月)。

    第 1 步:识别你的 AI 工作流

    首先审计你的 n8n 实例。打开工作流列表,查找包含以下内容的工作流:

    • OpenAI 节点(最明显的)
    • AI Agent 节点,配置了 OpenAI 模型
    • HTTP 请求节点,指向 api.openai.com
    • LangChain 节点,使用 OpenAI 作为 LLM 提供商

    对于每个工作流,记录:

    • AI 执行的任务(分类、提取、生成、摘要)
    • 每天/每周执行多少次
    • 使用的系统提示
    • 典型的输入和输出格式

    最适合替换的候选者是:

    • 任务狭窄且定义明确(分为 N 个类别、提取特定字段、从模板生成)
    • 工作流频繁运行(每天 100 次以上)
    • 输出格式可预测(JSON、短文本、类别标签)

    常见的高价值目标:

    • 邮件分诊和分类
    • 潜客评分和路由
    • 发票和收据数据提取
    • 工单分类
    • 内容审核
    • 情感分析

    第 2 步:从工作流中收集训练数据

    这是大多数指南跳过的步骤,也是最重要的一步。你的微调模型只和训练数据一样好。好消息:n8n 已经在生成你的训练数据了。

    每次 n8n 工作流执行时,它都会记录输入和输出。这些执行日志就是你的训练数据集。

    以下是提取方法:

    选项 A:n8n 执行历史(UI)

    1. 打开要替换的工作流
    2. 点击左侧栏的"Executions"
    3. 筛选成功的执行
    4. 对于每次执行,点击查看 OpenAI 节点的数据
    5. 复制输入(发送给 OpenAI 的内容)和输出(OpenAI 返回的内容)

    这适用于小数据集(200 个以下示例),但在大规模时会变得繁琐。

    选项 B:n8n API(程序化)

    n8n 有 REST API。你可以程序化地拉取执行数据:

    GET /api/v1/executions?workflowId={id}&status=success&limit=500
    

    对于每次执行,提取 AI 节点的数据并格式化为训练对:

    {
      "input": "The system prompt + user input that was sent to OpenAI",
      "output": "The response OpenAI returned"
    }

    选项 C:添加日志节点

    如果你想从现在开始收集数据,在 OpenAI 节点之后添加一个 Function 节点,将每个输入/输出对写入 Google Sheet、Airtable 或 JSON 文件。几周后,你将拥有一个干净的数据集。

    你需要多少数据?

    任务类型最少示例推荐数量
    二元分类100300+
    多类分类(5-10 个类别)200500+
    数据提取200500+
    短文本生成300800+
    摘要3001,000+

    质量比数量重要。300 个干净、有代表性的示例将优于 3,000 个嘈杂的。

    第 3 步:使用 Ertas 微调

    现在你有了数据集。是时候构建模型了。

    1. 注册 Ertas,在 ertas.io。平台费用 $14.50/月,包含微调所需的一切。

    2. 上传数据集。 Ertas 接受 JSONL(每行一个 JSON 对象,包含"input「和」output"字段)、CSV(两列:input 和 output),或者你可以直接将数据粘贴到 Studio 界面。

    3. 选择基础模型。 对于自动化任务,我们推荐:

      • Qwen 2.5 7B — 分类和提取的最佳全能选手
      • Llama 3.3 8B — 适合生成任务和较长输出
      • Mistral 7B — 推理速度快,适合高吞吐量工作流
    4. 配置和训练。 Ertas 根据你的数据集自动选择 LoRA 秩、学习率和轮数。如果你知道自己在做什么可以调整这些,但默认设置对 90% 的用例都很好。点击"Start Training"并等待——通常根据数据集大小需要 15-45 分钟。

    5. 评估。 Ertas 在保留的测试集上运行你的模型并显示准确率指标。对于分类任务,你会看到精确率、召回率和 F1 分数。对于生成任务,你会看到与预期输出对比的示例输出。

    6. 导出为 GGUF。 点击"Export"并选择 Q4_K_M 量化的 GGUF 格式(7B 模型质量和文件大小的最佳平衡)。下载文件——大约 4-5GB。

    第 4 步:使用 Ollama 部署

    Ollama 是微调模型和 n8n 之间的桥梁。它通过与 OpenAI 格式兼容的本地 API 提供你的 GGUF 模型。

    在 VPS 上安装 Ollama:

    curl -fsSL https://ollama.com/install.sh | sh

    为微调模型创建 Modelfile:

    FROM /path/to/your-model.gguf
    
    PARAMETER temperature 0.1
    PARAMETER num_ctx 4096
    

    低温度(0.1)对自动化任务很重要——你想要一致、确定性的输出,而不是创造性变化。

    创建并运行模型:

    ollama create my-workflow-model -f Modelfile
    ollama run my-workflow-model "Test input here"

    验证 API 可访问:

    curl http://localhost:11434/api/generate -d '{
      "model": "my-workflow-model",
      "prompt": "Test input",
      "stream": false
    }'

    对于生产环境,确保 Ollama 开机启动并可从 n8n 实例访问。如果 n8n 和 Ollama 在同一服务器上,localhost 就可以。如果在不同服务器上,配置 Ollama 绑定到 0.0.0.0 并保护连接。

    VPS 规格:

    模型大小最低 VPS推荐 VPS月费
    7B (Q4)4 vCPU, 8GB RAM4 vCPU, 16GB RAM$20-30/月
    13B (Q4)8 vCPU, 16GB RAM8 vCPU, 32GB RAM$40-60/月

    Hetzner 或 DigitalOcean 的 $30/月 VPS 可以轻松处理 7B 模型,短分类/提取任务每秒处理 10-20 个请求。

    第 5 步:更新 n8n 节点

    现在将它们连接起来。对于每个要替换 OpenAI 节点的工作流:

    选项 A:用 HTTP 请求节点替换 OpenAI 节点

    1. 删除(或禁用)OpenAI 节点
    2. 添加 HTTP 请求 节点
    3. 配置:
      • 方法: POST
      • URL: http://localhost:11434/api/chat
      • 请求体(JSON):
    {
      "model": "my-workflow-model",
      "messages": [
        {
          "role": "system",
          "content": "Your system prompt here"
        },
        {
          "role": "user",
          "content": "{{ $json.input_field }}"
        }
      ],
      "stream": false
    }
    1. 在 HTTP 请求后添加 Function 节点 来提取响应:
    const response = $input.first().json;
    return [{
      json: {
        result: response.message.content
      }
    }];

    选项 B:使用 Ollama 节点(如可用)

    n8n 的新版本在 AI 节点部分包含原生 Ollama 节点。配置:

    • Base URL: http://localhost:11434
    • Model: my-workflow-model

    这更简单但对参数的控制更少。

    彻底测试。 通过更新后的工作流运行 20-30 次真实执行,并将输出与 OpenAI 之前的输出进行比较。对于分类任务,检查类别是否匹配。对于提取任务,验证所有字段是否正确捕获。

    成本对比

    以下是运行多个 AI 工作流的代理机构的计算:

    月执行次数OpenAI API 成本本地微调成本节省
    10,000$270 - $990$44.5084-95%
    50,000$1,350 - $4,950$44.5097-99%
    100,000$2,700 - $9,900$44.5098-99.5%
    500,000$13,500 - $49,500$44.50*99.7%+

    *在 500K+ 月执行次数时,你可能需要更强的 VPS($60-100/月)来满足吞吐量。与 API 成本相比仍然是舍入误差。

    本地成本列是 Ertas $14.50/月 + VPS $30/月。就这些。没有每次执行费。没有每 Token 收费。月末没有意外账单。

    对于管理多个客户自动化的代理机构,这是变革性的。不再将 API 成本转嫁给客户(然后看着他们在费用攀升时流失),你提供固定费率服务,每次执行的边际成本接近零。

    此技术栈最适合的场景

    并非每个 AI 任务都应该微调。以下是 n8n + Ollama + 微调技术栈带来最大收益的场景:

    分类任务 — 邮件路由、工单分类、情感分析、潜客评分。这些是最佳场景。任务定义明确,输出格式受限,微调的 7B 模型通常匹配或超越 GPT-4 的准确率。

    数据提取 — 从发票、收据、表单、邮件中提取结构化数据。微调模型在这里表现出色,因为它们学习了你的特定 schema 和字段名称。

    模板化生成 — 从模板起草回复、根据规格生成产品描述、基于会议笔记撰写跟进邮件。输出遵循可预测的模式,小型模型可以快速学习。

    摘要 — 将文档、邮件或转录精简为关键要点。微调模型生成匹配你偏好风格和长度的摘要。

    仍应使用 API 的场景:

    • 跨多样化领域的复杂多步推理
    • 需要最新信息的任务(新闻、时事)
    • 一次性创意任务,一致性不重要
    • 月执行次数少于 100 的工作流(成本节省不足以证明设置的合理性)

    80/20 法则适用:你 80% 的 AI 自动化支出可能来自 20% 的工作流。首先瞄准那些高量、窄任务的工作流,你将立即获得大部分节省。

    扩展技术栈

    随着自动化量的增长,技术栈如何扩展:

    10K-50K 执行/月: 单 VPS 配一个模型轻松处理。4 vCPU / 16GB RAM VPS 上的 7B 模型可以为短任务每秒处理 15-20 个请求。

    50K-200K 执行/月: 你可能需要稍强的 VPS(8 vCPU / 32GB RAM,约 $50/月)或使用模型批处理优化。仍然远低于 API 成本。

    200K+ 执行/月: 考虑在简单负载均衡器后运行多个模型实例。两台 $30 VPS 实例提供冗余和双倍吞吐量。总基础设施成本 $75/月,相比 API 成本 $5,000+。

    不同任务的多个模型: 你可以在同一 Ollama 实例上运行多个微调模型。一个用于邮件分类,另一个用于数据提取,第三个用于摘要。每个模型在调用时加载到内存中,空闲时卸载。16GB RAM VPS 可以同时运行 2-3 个 7B 模型。

    今天就开始

    以下是第一个零成本 AI 工作流的最简路径:

    1. 选择最高量的 AI 工作流 — n8n 中执行最频繁的那个
    2. 导出 300+ 执行示例 作为输入/输出对
    3. 在 Ertas 上微调 — 上传数据,选择 Qwen 2.5 7B,训练,导出 GGUF
    4. 在 Ollama 上部署 — 在 VPS 上安装,加载模型,验证端点
    5. 替换节点 — 将 OpenAI 节点替换为指向 Ollama 的 HTTP 请求
    6. 监控一周 — 对比输出并确认质量匹配

    验证第一个工作流后,对 n8n 实例中的每个 AI 工作流重复此过程。大部分工作在第 2 步(收集数据)。微调和部署在你做过一次后就变成了例行公事。

    你的 n8n 自动化不应该有每次执行的税。构建一次技术栈,永远运行。


    Ship AI that runs on your users' devices.

    Ertas early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    延伸阅读

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    Keep reading