预算告警怎么设:把跑飞限制在一晚以内的 5 道闸

成本与用量

用五道闸门把失控调用限制在一晚以内:Key 上限、项目预算、单次输出上限、循环步数、异常告警与熔断,每道都给配置位置与验证方法。

最常见的翻车不是模型贵,而是没人设上限:夜里跑了个循环,早上起来额度见底。这篇不讨论单价,只讲怎么把「单次失控」的影响范围压到可接受的程度。五道闸按从外到内排列,每道都写清配置在哪一层、怎么验证它真的生效、没生效时用什么兜底。

最常见的翻车不是模型贵,而是没人设上限:夜里跑了个循环,早上起来额度见底。这篇不聊单价,只讲怎么把单次失控的影响范围压到可接受的程度。五道闸按从外到内排列,每道都写清配置在哪一层、怎么验证它真的生效、没生效时拿什么兜底。

判断标准一句话:一个会自己反复调用的任务,至少要跨两层设限,只靠单层等于没设。如果你不确定任务最长跑多久,别去猜,按「你能接受的最坏一晚」倒推步数和总超时,两个都写死。

先搞清五道闸分别拦在哪一层

闸门从外到内是:账号总预算、Key 级上限、单次请求输出上限、应用层步数上限、异常告警与自动停用。越靠外的闸越粗,管的是钱;越靠内的闸越早触发,管的是行为。粗闸拦不住细的失控,细闸也护不住整账号,所以是叠加关系,不是选一个。

账号总预算
平台侧的总闸,兜底用,触发时通常已经烧掉不少
Key 级上限
按 Key 隔离,生产 Key 和试验 Key 分开放,是性价比最高的一道
单次输出上限
请求体里写死 max_tokens,防的是单次回答跑满
步数上限
代码里给循环设最大轮数和总超时,防的是反复调用
告警与熔断
让系统半夜自己停下来,而不是靠人醒着盯
  • 交互式一问一答、每次都由人点一下才发请求的场景,重点放在 Key 上限和单次输出上限即可,不必强上熔断。
  • 定时批量任务、Agent 循环、多轮自动重试,必须跨两层以上设限。
  • 把每一层的当前值记在一张表里,改一次记一次;配置散落在平台后台、环境变量和代码三处,不记下来等于不清楚自己到底有没有闸。
  • 换过模型或渠道之后要重新核对一遍,别假设旧配置还适用。

五道闸怎么配:位置、验证、兜底

闸门配置位置验证方法
Key 级上限平台后台的 Key 管理页拿一个测试 Key 故意打满,看是否被拒
项目级预算子账号或项目隔离设置跑一次已知规模的批量任务,前后对账看预算是否同步下降
单次 max_tokens请求体参数发一个诱导长输出的提示词,确认被截断而不是跑满
循环步数上限调用方代码造一个不收敛的任务,看是否在预期步数内停下
告警与熔断监控 + 平台停用接口把阈值临时调低,跑一次,确认停用动作真的执行

Key 上限的要点是分离:把生产 Key 和试验 Key 分成两个,试验那个额度给小一点,跑飞了也只伤试验那一个。项目级预算按环境分,预算周期设成比账单周期更短的一档,这样你能更早看到异常。真正的消耗口径和计价项,到 /price-watch 核对当时的数字,别拿自己脑补的公式对账。

  1. 先定最坏一晚能接受多少拿一个具体数字当上限依据,别用「越少越好」;这个数字决定后面所有步数和超时的取值。
  2. 写死单次输出上限请求体里显式传 max_tokens,不要吃默认值;验证方式是发一个明显会诱导长输出的提示词,确认返回被截断。
  3. 给循环加两道刹车最大轮数和总超时同时设,取先到的那个。验证时故意造一个不收敛的任务,看它是否在预期步数停住。
  4. 算兜底计数器平台不支持 Key 上限时,在调用方本地累加每次调用的估算消耗,超过阈值直接抛错退出,宁可任务失败也别继续烧。

告警与熔断:让它在半夜自己停

告警只有提醒没有停用,人睡着了照样跑飞。所以要分两档:一档是「消耗速度异常」的提醒,一档是「已到硬阈值」必须停。硬阈值那档的触发条件建议用速率而不是绝对额度,单位时间内的请求数或 token 数超过基线若干倍就停,这样不会把正常高峰误杀。

  • 熔断动作要实测:把阈值临时调低到一定会触发,跑一次,确认 Key 被禁、进程退出、告警发出,三件事至少发生一件。
  • 自动化流水线里的关键任务不适合直接硬停,改成降级到更小批量或排队,否则会连带业务中断。
  • 触发后是等人工确认还是自动恢复,提前写进值班说明,避免凌晨起来乱改配置。
  • 把「谁被叫醒、怎么恢复」当成配置的一部分,不是附加文档。

上线前的核查清单

  • 每个 Key 是否设了独立上限,生产与试验是否分开。
  • 每个项目或环境是否有独立预算,周期是否短于账单周期。
  • 每个请求是否显式带 max_tokens,而不是靠默认值。
  • 每个循环是否有步数上限和总超时,两者是否取先到。
  • 是否有两档告警,其中一档会真的停用。
  • 熔断动作是否实测过,恢复流程是否写明。

模型、任务规模和渠道都会变,闸门的值要跟着调,别设一次就不管。每次改动用量结构之后重跑一遍上面的验证。想先搞清楚各家中转与官方的可信度和计费差异,到 /sites 看当时的检测记录,再决定手上这套配置该松还是该紧。

下一步把上面六条清单照着点一遍,再对着实际账单核对一次口径;花十分钟,换的是不用再担心一觉醒来额度没了。

常见问题

平台没有提供 Key 级额度上限怎么办?

退一步做两层替代:一是给高风险的自动化任务单独开一个账号或子账号,充值是分批的;二是在应用侧维护一个累计消耗计数器,每轮循环把估算值加上去,超过阈值就主动退出。代价是不实时,所以计数器的检查频率要高一些。

max_tokens 设小了会不会影响输出质量?

会。上限只是封顶不是目标值,设得太低会导致回答被硬截断,尤其是需要长推理或多步骤输出的任务。做法是按任务类型分几档,针对已知会长的任务单独放宽,同时给这类任务加上循环步数上限,用两层限制替代单次无限放任。

告警发了但没人看,等于没设吗?

基本等于没设。告警要落到会响的通道,并且要和熔断绑在一起:先自动停,再通知人。如果只能做到通知,至少把阈值定在你还能承受的范围内,别等触顶才发第一条消息。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。