n8n 的典型用法是把“触发—处理—输出”串成一条自动化流程:新邮件进来做摘要,表单提交后分类线索,表格新增一行就生成文案。把 OpenAI 接进来之后,这些流程可以多一步自然语言处理,但也会带来新的问题:Key 怎么管、Base URL 怎么填、批量跑起来为什么费用突然变高。
本文按实际搭建顺序讲:先选接入方式,再配凭证,跑通第一条工作流,最后处理错误和成本。节点名称与字段以你当前使用的 n8n 版本为准。
说明:n8n、OpenAI 分别为其权利人的商标,本文与相关厂商无隶属关系;模型名称与价格以站内 模型价格 为准。
一、两种接入方式怎么选
n8n 里接 OpenAI 常见两条路:
| 方式 | 适合场景 | 优点 | 限制 |
|---|---|---|---|
| OpenAI 节点 | 对话、摘要、分类、图像、转写等标准操作 | 参数可视化,凭证统一管理 | 受节点已实现的操作范围限制 |
| HTTP Request 节点 | 需要自定义参数、批量请求或特殊字段 | 灵活,可直接调 /v1/chat/completions |
请求体、鉴权、错误处理都要自己写 |
先用 OpenAI 节点跑通,再按需换成 HTTP Request 节点。不要一上来就手写请求,除非你确实需要节点没暴露的参数。
二、配置凭证与 Base URL
在 n8n 的凭证管理里新建 OpenAI 类型凭证,填入 API Key。需要走自定义网关时,在同一凭证里填写 Base URL,通常到 /v1 为止。字段名称和是否提供 Base URL 输入框,以当前版本为准。
几条实践建议:
- Key 只放在凭证里,不要写进 Code 节点或工作流 JSON。
- 生产和测试用不同 Key,便于分别限额和停用。
- 自部署时保管好
N8N_ENCRYPTION_KEY,更换后已有凭证会无法解密。 - Base URL 不要带
/chat/completions,节点会自己拼接路径。 - 团队共用实例时,按项目拆分凭证或使用网关的虚拟 Key。
配置完先用一个最小请求验证:
curl https://你的网关地址/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"你的模型名","messages":[{"role":"user","content":"只回复 OK"}]}'
三、跑通第一条工作流
以“表单提交后生成回复草稿”为例:
- 添加 Form Trigger 或 Webhook 节点,接收表单内容。
- 添加 OpenAI 节点,操作选择发送消息(Message a Model)。
- 选择凭证和模型,把表单字段用表达式传入提示词,例如
{{ $json.message }}。 - 添加 Set 节点,整理模型返回的字段,只保留后续要用的内容。
- 添加 Gmail、Slack 或表格节点,把结果写到目标位置。
- 手动执行一次,逐节点检查输入输出,再启用工作流。
如果使用 HTTP Request 节点,请求体可以这样写:
{
"model": "你的模型名",
"messages": [
{"role": "system", "content": "你是客服助手,只根据给定信息回答。"},
{"role": "user", "content": "{{ $json.message }}"}
],
"temperature": 0.3,
"max_tokens": 500
}
注意两点:表达式里的字段名要和上一步实际输出一致;请求头用 Authorization: Bearer <key>,不要在 JSON 里传 Key。
四、适合自动化的四类任务
不是所有任务都值得接模型。以下几类收益比较直接:
- 文本处理:邮件摘要、评论归类、工单打标签、多语言翻译。
- 结构化抽取:从询盘、简历、发票文本里抽姓名、金额、日期,输出 JSON。
- 内容生成:根据表格行生成标题、卖点、回复草稿,再交人工审核。
- 判断与分流:按内容紧急程度路由到不同负责人。
结构化抽取要明确输出格式,并在后面加一个校验节点。模型偶尔会多写解释文字,导致 JSON 解析失败;用“只输出 JSON、不要 Markdown 代码块”的提示词,并准备一次重试。
五、错误处理:自动化最容易被忽略的部分
无人值守的工作流,失败是常态。建议在节点设置里逐项配置:
- Retry On Fail:对 429、5xx 和网络超时重试,次数控制在 2–3 次。
- 重试间隔:使用指数退避,避免限流时继续加压。
- On Error:区分“停止工作流”和“继续执行并记录”,不要让一条坏数据拖垮整批。
- 超时:为 HTTP 请求设置合理超时,长文本生成可以放宽,但不能无限等待。
- 错误工作流:把失败信息汇总到 Slack 或邮件,附上执行 ID 和输入摘要。
- 幂等:重试前检查是否已经写入目标系统,避免重复发消息、重复记账。
常见报错可以按这个顺序排查:
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 401 | Key 错误或未选中凭证 | 重新选择凭证,检查是否多了空格 |
| 404 | Base URL 路径不对 | 确认填到 /v1,不要带完整接口路径 |
| 429 | 并发过高或超出配额 | 降低并发,开启退避重试 |
| 400 | 参数不被上游支持 | 去掉不兼容字段,核对模型名 |
| 返回空内容 | 输出被截断或触发内容过滤 | 提高输出上限,检查提示词与过滤策略 |
| JSON 解析失败 | 模型输出了额外文字 | 限定只输出 JSON,失败时重试一次 |
六、成本控制:别让循环放大账单
n8n 的批处理很容易把一次调用变成几百次。控制成本要从工作流结构入手:
| 措施 | 具体做法 | 效果 |
|---|---|---|
| 模型分级 | 分类、清洗用小模型,生成用强模型 | 降低单次平均成本 |
| 限制输出 | 设置最大输出 Token,提示词要求简短 | 避免长回答拖高费用 |
| 合并请求 | 能批量处理的文本合并成一次请求 | 减少请求数与重复上下文 |
| 先去重 | 用数据库或缓存跳过已处理记录 | 避免重复调用 |
| 截断上下文 | 只传必要字段,长文先摘要或分段 | 减少输入 Token |
| 记录用量 | 保存响应中的 usage 字段,按工作流统计 | 发现异常消耗 |
还有两个细节:循环节点里每次调用都会单独计费,能合并就先合并;调试时不要直接对全量数据执行,先用一条样本跑通。具体单价以 模型价格 为准。
七、数据与权限
自动化流程经常接触客户信息,接入前要明确:
- 哪些字段可以发给模型,哪些必须脱敏或本地处理。
- 模型服务是否保留请求数据、是否用于训练。
- 工作流执行历史会保存输入输出,保留期限要设置。
- 凭证和工作流 JSON 的导出权限要收紧。
- 涉及合同、身份信息的流程,增加人工复核节点。
自部署 n8n 能更好地控制数据路径,但并不自动等于合规;上游模型的数据条款仍要单独确认。
常见问题
n8n 的 OpenAI 节点支持自定义 Base URL 吗?
多数版本在 OpenAI 凭证里提供 Base URL 输入框,用于兼容代理或自建网关。若你的版本没有该字段,可以改用 HTTP Request 节点直接请求 /v1/chat/completions。
为什么工作流在编辑器里能跑,定时触发却失败?
常见原因是凭证作用域、环境变量或网络出口不同。先看执行记录里的具体节点和错误码,再确认定时执行所在实例能否访问目标地址。
批量处理几百条数据要注意什么?
控制并发和重试次数,给每条记录打上唯一标识,失败时记录原始输入。最好分批执行,并在每批之间留出间隔,避免触发限流。
如何估算一条工作流的成本?
用响应里的 usage 字段记录输入、输出 Token,乘以对应模型单价,再加上重试和失败请求。先跑 20–50 条真实样本取平均值,比拍脑袋估算可靠。
模型返回的 JSON 不稳定怎么办?
在提示词里限定字段和类型,关闭多余解释;下游加 JSON 校验节点,解析失败时重试一次,仍失败就转人工或记录到异常队列。
下一步
n8n 接入 OpenAI 的关键,不是节点拖得多漂亮,而是凭证安全、错误处理和成本边界。建议先用一条真实业务流程做小流量验证,再逐步放开。需要统一的 OpenAI 兼容入口和用量管理,可以先 注册中商起航 AI 网关,模型与价格以 模型价格 为准。
相关阅读:
