2026-10-08 · 原文发布日
给每个n8n AI工作流设日预算上限
给每个n8n AI工作流加日预算闸口:别的流程先以check传预估,命中Google Sheets预算表和模型价目后查Data Table台账,返回放行或拦截;调用后用record按实际token入账,跨阈值才发Slack提醒,并按天汇总。
原文要点
n8n模板库第20655号工作流(模板免费)给每个AI工作流加日预算闸口。其他流程通过Execute Workflow以action=check(调用前预估)或action=record(调用后按实际token入账)调用它;它从Google Sheets的Budgets页读预算规则和Slack频道映射(含default兜底行)、从Model Prices页读模型单价,按配置的UTC偏移确定预算日,在n8n Data Table台账(列:dayKey、date、workflow、usd、calls、warned、blocked)中查当日花费。check返回allowed/blocked;record按价目或兜底费率入账,仅在跨过告警或封顶阈值时发一次Slack提醒;另有定时任务每天汇总昨日各流程花费到Slack,无记录则不发。
这次做成什么
在自己实例上部署这个预算闸口,并让至少一个现有AI流程接入:调用前先check、命中分支拦截、调用后record入账、次日收到Slack汇总。全程用合成数据测试,不动真实生产流程。
准备什么
- 支持Data Table功能的n8n实例和至少一个已有的AI调用流程
- Google Sheets凭据(建Budgets与Model Prices两页)
- Slack凭据与一个测试频道
- 理解Execute Workflow节点的子流程调用方式
具体怎么做
建两张Sheets配置页
新建Google Sheets文档。Budgets页列:workflow、dailyCapUsd、warnThresholdPct、slackChannel、utcOffsetHours,必须含一行workflow=default的兜底预算;Model Prices页列:model、inputUsdPerMToken、outputUsdPerMToken。填入材料中的示例值。
建Data Table台账并导入模板
在n8n Data Tables中新建台账,列名严格为dayKey、date、workflow、usd、calls、warned、blocked。导入20655号工作流,把Sheets文档ID和Data Table ID填进对应节点,绑定Sheets与Slack凭据,设置默认汇总频道。
接入一个测试流程的check
打开一个用于测试的AI流程(不要动生产流程),在模型节点前插入Execute Workflow节点,调用本预算流程,传action=check、本流程名和预估token数。把后续模型调用放进decision=allowed的分支;blocked分支接一个Slack通知或直接结束。
接入record并端到端测试
在模型节点后再加一个Execute Workflow,传action=record、流程名和模型返回的实际usage对象。手动跑三次测试流程:第一次check应放行;把Budgets页该流程的dailyCapUsd临时改小(如0.001)再跑,check应返回blocked且模型节点不执行;恢复额度后确认record写入台账且usd累加。
验证阈值提醒与日汇总
把warnThresholdPct临时调低制造跨阈值,确认Slack只收到一次告警而不是每次调用都刷;手动执行每日汇总节点,确认收到一条按流程分列的花费汇总,台账为空的日期不发消息。
可直接复制的材料
Budgets页示例内容
金额为美元、按天累计;default行必填,未匹配的流程按它兜底;测试时可把测试练习流程的dailyCapUsd调到0.001制造拦截。
workflow,dailyCapUsd,warnThresholdPct,slackChannel,utcOffsetHours
default,0.50,80,#ai-budget,0
客服摘要助手,0.20,80,#ai-budget,0
测试练习流程,0.05,50,#ai-budget,0Model Prices页示例内容
价格为示例占位值,必须换成OpenAI官网当期价目;未列出的模型会走工作流的兜底费率,账单可能与实际不符。
model,inputUsdPerMToken,outputUsdPerMToken
gpt-4.1,2.00,8.00
gpt-4.1-mini,0.40,1.60
gpt-4.1-nano,0.10,0.40Execute Workflow调用载荷示例
字段名以模板中节点注释为准,此处按原文描述整理;usage对象请直接透传模型节点返回的usage,不要在中间改字段名。
【check,模型调用前发送】
{
"action": "check",
"workflow": "测试练习流程",
"estimate": {"model": "gpt-4.1-mini", "inputTokens": 2000, "outputTokens": 500}
}
【record,模型调用后发送】
{
"action": "record",
"workflow": "测试练习流程",
"usage": {"model": "gpt-4.1-mini", "inputTokens": 1843, "outputTokens": 512}
}输入与输出示例
本站虚构演示,数字按材料价目推算,非原作者运行结果;返回字段名以模板实际为准。
输入
Budgets页中测试练习流程dailyCapUsd=0.001、warnThresholdPct=50。先发check:预估gpt-4.1-mini输入2000、输出500 token(按0.40/1.60美元每百万token估算约0.0016美元)。对应输出
台账中该流程当日usd已为0.0009、剩余额度0.0001,预估0.0016超过剩余额度,返回{"decision":"blocked","workflow":"测试练习流程","remainingUsd":0.0001,"estimatedUsd":0.0016};模型节点不执行,测试流程走blocked分支结束,且因累计usd超过50%阈值,#ai-budget频道收到一条阈值告警。做完检查这些
- check返回blocked时模型节点确实不执行,流程走拦截分支
- record后台账的usd与calls按价目正确累加,同一流程同一天只占一行
- 跨过告警或封顶阈值时Slack只收到一次提醒,不随每次调用重复刷屏
- 手动执行汇总节点后收到按流程分列的昨日花费,台账为空日期不发消息
容易卡住的地方
- check只是预估闸口,真实拦截依赖你在调用方流程里把模型节点放进allowed分支,只调check不分支等于没拦截
- 预算日按配置的utcOffsetHours计算,偏移填错会导致跨天账记错日期
- 未在Model Prices页登记的模型走兜底费率,长期会失真,新增模型要同步价目
- 价格页填的是占位示例,上线前必须换成官网当期价格,否则预算金额没有意义
- 模板免费但模型调用照常计费;本站未实测,字段拼写请以原模板节点注释为准
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Cap daily AI model spend per workflow with Google Sheets and Slack
- 原作者
- isaWOW
- 原始发布日期
- 2026-10-08T05:40:25.429Z
- 来源
- https://n8n.io/workflows/20655