AI PLAY玩法更新持续收录
← 回到更新流

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节点的子流程调用方式

具体怎么做

  1. 建两张Sheets配置页

    新建Google Sheets文档。Budgets页列:workflow、dailyCapUsd、warnThresholdPct、slackChannel、utcOffsetHours,必须含一行workflow=default的兜底预算;Model Prices页列:model、inputUsdPerMToken、outputUsdPerMToken。填入材料中的示例值。

  2. 建Data Table台账并导入模板

    在n8n Data Tables中新建台账,列名严格为dayKey、date、workflow、usd、calls、warned、blocked。导入20655号工作流,把Sheets文档ID和Data Table ID填进对应节点,绑定Sheets与Slack凭据,设置默认汇总频道。

  3. 接入一个测试流程的check

    打开一个用于测试的AI流程(不要动生产流程),在模型节点前插入Execute Workflow节点,调用本预算流程,传action=check、本流程名和预估token数。把后续模型调用放进decision=allowed的分支;blocked分支接一个Slack通知或直接结束。

  4. 接入record并端到端测试

    在模型节点后再加一个Execute Workflow,传action=record、流程名和模型返回的实际usage对象。手动跑三次测试流程:第一次check应放行;把Budgets页该流程的dailyCapUsd临时改小(如0.001)再跑,check应返回blocked且模型节点不执行;恢复额度后确认record写入台账且usd累加。

  5. 验证阈值提醒与日汇总

    把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,0

Model 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.40

Execute 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