接入大语言模型
第 14 章:接入大语言模型
n8n 从 1.0 版本开始内置了完整的 AI 节点体系,支持 OpenAI、Anthropic Claude、Google Gemini、Mistral 等主流大模型,以及通过 Ollama 接入的本地私有模型。这些节点经过精心封装,不仅能发起单次对话,还能维护对话历史、处理流式输出、统计 Token 用量。本章从凭证配置入手,逐一讲解各模型的接入方式,重点分析参数调优策略、成本控制技巧,最后用一个批量文章摘要生成工作流做完整实战演示。
n8n AI 节点体系概览
n8n 的 AI 功能分为两层:
- Language Model 节点(模型节点):负责与具体 LLM 服务通信,如"OpenAI Chat Model"、"Anthropic Chat Model"、"Google Gemini Chat Model"、"Ollama Chat Model"。这些节点本身不会独立执行,而是作为其他 AI 节点的"子组件"被引用。
- AI Chain / Agent 节点(编排节点):包括 Basic LLM Chain(单次问答)、Conversational Chain(多轮对话)、AI Agent(工具调用 Agent)、Summarization Chain(长文摘要)等。这些节点在内部调用 Language Model 节点完成实际推理。
这种分层架构的优势:切换模型只需替换 Language Model 子节点,上层编排逻辑无需改动。例如先用 OpenAI 调试好工作流,再换成 Ollama 本地部署,只需换一个节点配置。
配置 OpenAI 凭证:API Key 安全存储
在 n8n Credentials 中新建"OpenAI API"凭证,填写从 platform.openai.com/api-keys 生成的 API Key。注意:
- 不要直接在节点参数中硬编码 API Key,始终通过凭证管理存储,n8n 会对凭证加密保存
- 为不同用途(测试、生产)创建不同的 API Key,便于按用途追踪费用和吊销
- 在 OpenAI 后台为 API Key 设置每月用量上限(Usage Limits),防止异常消耗
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 类似,但有几个特点:
- Model 选择:Claude 3.5 Sonnet(claude-3-5-sonnet-20241022)是性价比最高的选择,在速度、质量和成本上取得最佳平衡;Claude 3 Opus 适合最高质量要求的任务;Claude 3 Haiku 是最快最便宜的选项,适合高频简单任务
- System Prompt:Claude 对 System Prompt 的遵循度极高,建议在 System 中详细定义角色、输出格式和约束条件
- Max Tokens to Sample:Claude 的输出限制参数,与 OpenAI 的 Max Tokens 等价
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 输出实时显示给用户(如聊天机器人场景),需要:
- 在 AI 节点开启"Stream"选项
- 后续通过 n8n 的 Respond to Webhook 节点配合 SSE(Server-Sent Events)格式向前端推送
- 前端使用 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 数据库。
工作流节点链
- Cron 触发器:每天早 6 点运行
- HTTP Request 节点:从内容聚合 API 或 RSS 源获取当日新文章列表
- IF 节点:过滤出未处理的文章(通过检查 Notion 数据库中是否已存在对应 URL)
- Loop Over Items 节点:逐篇处理(Batch Size = 1,避免并发触发速率限制)
- HTTP Request 节点:抓取文章全文(若 RSS 只含摘要)
- 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
}
- Code 节点:解析 LLM 返回的 JSON 字符串,处理可能的格式异常
- Notion 节点(Create Database Page):将摘要、标签、评分、原文链接写入 Notion"资讯数据库"
- Wait 节点(Time Interval:2 秒):限速保护,避免触发 Claude API 速率限制
成本估算: 每篇 2000 词的文章约消耗 2500 input tokens + 200 output tokens。以 Claude 3.5 Sonnet 定价计算,每篇约 $0.0009。处理 50 篇文章的日运营成本不超过 $0.05——比人工处理效率提升 50 倍,成本降低 99%。