第 14 章

接入大语言模型

第 14 章:接入大语言模型

n8n 从 1.0 版本开始内置了完整的 AI 节点体系,支持 OpenAI、Anthropic Claude、Google Gemini、Mistral 等主流大模型,以及通过 Ollama 接入的本地私有模型。这些节点经过精心封装,不仅能发起单次对话,还能维护对话历史、处理流式输出、统计 Token 用量。本章从凭证配置入手,逐一讲解各模型的接入方式,重点分析参数调优策略、成本控制技巧,最后用一个批量文章摘要生成工作流做完整实战演示。

n8n AI 节点体系概览

n8n 的 AI 功能分为两层:

这种分层架构的优势:切换模型只需替换 Language Model 子节点,上层编排逻辑无需改动。例如先用 OpenAI 调试好工作流,再换成 Ollama 本地部署,只需换一个节点配置。

配置 OpenAI 凭证:API Key 安全存储

在 n8n Credentials 中新建"OpenAI API"凭证,填写从 platform.openai.com/api-keys 生成的 API Key。注意:

OpenAI Chat Model 节点参数

参数 说明 推荐值
Model 模型版本 gpt-4o(综合)/ gpt-4o-mini(低成本)
Temperature 输出随机性,0–2 生成摘要用 0.3;创意写作用 0.8
Max Tokens 最大输出长度 按需设置,避免浪费,摘要任务用 512
Top P 核采样概率 通常保持默认 1
Frequency Penalty 重复词惩罚 0.3 可有效减少重复

接入 Claude (Anthropic):模型选择与参数调优

在 n8n Credentials 中新建"Anthropic API"凭证,填写从 console.anthropic.com 获取的 API Key。选择"Anthropic Chat Model"节点,主要参数与 OpenAI 类似,但有几个特点:

Claude 的 XML 输出技巧: 在 Prompt 中要求 Claude 将结构化内容包裹在 XML 标签中输出(如 <summary>...</summary>),然后在 Code 节点中用正则表达式提取标签内容,比要求输出 JSON 更稳定、更不容易出现格式错误。

Google Gemini:多模态支持

n8n 提供"Google Gemini Chat Model"节点,使用 Google Cloud API Key 认证(在 Google Cloud Console 中启用 Generative Language API 后创建)。Gemini 1.5 Pro 支持超长上下文窗口(1M tokens),适合需要处理大量文本的摘要、分析任务;Gemini 1.5 Flash 是高速低成本版本。Gemini 的多模态能力(图文混合输入)目前需要通过 HTTP Request 直接调用 API 实现,n8n 专用节点暂不支持图片输入。

本地模型 Ollama:私有化部署 + n8n 对接

Ollama 是目前最流行的本地 LLM 运行框架,支持 Llama 3、Qwen2.5、Mistral、DeepSeek 等数百个开源模型。与 n8n 对接的优势:数据不出内网、无 API 费用、无速率限制。

安装与启动 Ollama

# macOS/Linux 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 拉取模型(以 Qwen2.5 7B 为例)
ollama pull qwen2.5:7b

# 启动服务(默认监听 http://localhost:11434)
ollama serve

# 若 n8n 运行在 Docker 中,需允许外部访问
export OLLAMA_HOST=0.0.0.0:11434

n8n 对接配置

在 n8n Credentials 中新建"Ollama API"凭证,Base URL 填写 http://localhost:11434(若 n8n 在 Docker 中,改为宿主机 IP)。在"Ollama Chat Model"节点中选择已拉取的模型名称,其余参数与其他 LLM 节点完全一致。

流式输出处理(Streaming)

n8n 的 AI 节点默认等待模型完整响应后再传递数据(非流式)。若工作流需要将 LLM 输出实时显示给用户(如聊天机器人场景),需要:

  1. 在 AI 节点开启"Stream"选项
  2. 后续通过 n8n 的 Respond to Webhook 节点配合 SSE(Server-Sent Events)格式向前端推送
  3. 前端使用 EventSource API 接收实时数据流

注意:流式模式下 Token 用量统计数据不在每个 chunk 中携带,而是在流结束时的最后一个 chunk 中返回。

Token 用量统计与成本控制

每次 AI 节点执行后,响应数据中包含 Token 用量信息。对于 OpenAI,位于 $json.usage.prompt_tokens(输入)和 $json.usage.completion_tokens(输出)。在工作流中加入成本追踪节点:

// Code 节点:计算本次调用成本(以 GPT-4o 为例)
const PRICE_INPUT = 2.5 / 1_000_000;  // $2.5 per 1M input tokens
const PRICE_OUTPUT = 10 / 1_000_000; // $10 per 1M output tokens

const { prompt_tokens, completion_tokens } = $json.usage;
const cost = prompt_tokens * PRICE_INPUT + completion_tokens * PRICE_OUTPUT;

return [{
  json: {
    ...$json,
    _cost_usd: cost.toFixed(6),
    _prompt_tokens: prompt_tokens,
    _completion_tokens: completion_tokens
  }
}];

将成本数据写入 Google Sheets 或数据库,即可生成每日/每月的 LLM 费用报表,及时发现异常用量。

实战:批量文章摘要生成工作流

场景:运营团队每天需要为 10–50 篇行业文章生成中文摘要,并分类标注话题标签,最终汇总到 Notion 数据库。

工作流节点链

  1. Cron 触发器:每天早 6 点运行
  2. HTTP Request 节点:从内容聚合 API 或 RSS 源获取当日新文章列表
  3. IF 节点:过滤出未处理的文章(通过检查 Notion 数据库中是否已存在对应 URL)
  4. Loop Over Items 节点:逐篇处理(Batch Size = 1,避免并发触发速率限制)
  5. HTTP Request 节点:抓取文章全文(若 RSS 只含摘要)
  6. Basic LLM Chain 节点:调用 Claude claude-3-5-sonnet,System Prompt 如下:
// System Prompt(Basic LLM Chain 节点)
你是一名专业的科技媒体编辑。请对以下英文文章完成三项任务:
1. 用中文写一段 150 字以内的摘要,保留核心观点和数据
2. 从以下话题中选出最匹配的 1–3 个标签:AI、大模型、云计算、芯片、出海、电商、企业软件、融资、政策
3. 给出 1–5 的综合重要性评分(5 分=行业重大突破,1 分=一般资讯)

请以如下 JSON 格式输出,不要包含任何其他内容:
{
  "summary": "...",
  "tags": ["...", "..."],
  "score": 4
}
  1. Code 节点:解析 LLM 返回的 JSON 字符串,处理可能的格式异常
  2. Notion 节点(Create Database Page):将摘要、标签、评分、原文链接写入 Notion"资讯数据库"
  3. Wait 节点(Time Interval:2 秒):限速保护,避免触发 Claude API 速率限制

成本估算: 每篇 2000 词的文章约消耗 2500 input tokens + 200 output tokens。以 Claude 3.5 Sonnet 定价计算,每篇约 $0.0009。处理 50 篇文章的日运营成本不超过 $0.05——比人工处理效率提升 50 倍,成本降低 99%。

本章评分
4.6  / 5  (18 评分)

💬 留言讨论