大模型调用怎么控制成本?当请求量上来,问题不只是怎样少用 token,而是怎样让系统在调用前知道“这次能不能花”,调用后知道“实际花了多少”,预算不足时还能有可预期的行为。此前的成本拆解文章已经讨论计费、缓存、输出与模型路由;这篇聚焦线上请求链路中的预算控制。

先明确预算管什么

只设一个“每月总额”太粗。至少按业务场景、租户或项目区分预算,再给单次请求设置上限。例如客服检索问答和内部离线摘要可以共享总账,但各自有不同的单请求上限与优先级。预算用最小货币单位保存,并固定币种、价格版本和统计周期;跨币种换算与税费要单独记账,不能把模型报价直接当成最终财务账单。

边界 解决的问题 超过时的动作
单次请求上限 防止异常长上下文或失控输出 限制输出、缩短输入或拒绝
场景 / 租户日额度 防止某条业务线挤占全部资源 限流、排队或暂停低优先级任务
项目月额度 控制整体支出 告警、降级并阻止新的非关键调用
并发与重试上限 防止故障时费用和流量一起放大 退避、熔断或转人工

这些阈值需要业务负责人确认。关键在线请求和可延迟的批处理,不应被同一条简单的“余额不足即失败”规则处理。

请求发出前:估算并预留

一个业务请求可能先检索、再调用模型、最后做格式修复。准入时要估算整个工作流的最大可接受花费,或在每个付费步骤前分别预留并共享同一工作流上限。估算通常包含预计输入 token、设置的最大输出 token、预期工具费用与允许的重试次数。输入 token 最好用与模型相符的计数方法;字符数只能做粗略保护。对于无法确定的计费项,留出缓冲并设置独立上限。

关键是原子预留。假设某租户只剩 10 元,两个并发请求都先读到“余额 10 元”,各自花 8 元,就会超支。预算检查与预留必须在同一数据库事务或具备原子操作的存储中完成。可用余额按“额度-已结算费用-在途预留”计算;预留记录绑定请求 ID,同一请求重试时只创建一次。数据库只是示意,实际还要处理锁竞争、过期预留和跨区域一致性。

一个简化的流程如下:

接收请求 → 验证身份与场景 → 估算最大费用
       → 原子检查额度并预留 → 执行模型调用
       → 获取用量并按价格版本结算 → 释放剩余预留
       → 返回结果与内部成本记录

预留并不等于实际扣费。若模型最终只用了预留的一半,就结算真实用量并释放差额;若供应商还有异步费用或账单延迟,则要保留待核对状态,不要过早宣称金额准确。

调用结束后:按真实用量结算

能拿到供应商 usage 明细时,按模型、价格版本、普通输入、缓存输入、输出及其他计费项逐项计算,并把账本记录关联到业务请求 ID。不同供应商对缓存、工具、推理 token 和失败请求的计费规则不同,最终仍要与账单对账。记录金额的同时保留原始用量字段,方便价格变动后追查差异。

超时和客户端取消最容易产生错账:客户端没收到完整响应,不代表供应商没有处理或计费。确认没有产生用量后才能释放全部预留;状态不明时标记为“待结算”,通过供应商请求 ID、后续账单或人工核对处理。若实际费用超过预留,差额仍应入账并触发告警,随后收紧估算或暂停新的调用,不能把超出部分丢掉。

重试也是新成本。对限流和暂时性服务错误可以有限重试并退避;格式错误是否值得重试,要看任务价值。重试共享业务请求的总预算,且写操作使用幂等键,避免同一任务重复触发外部动作。模型调用本身的幂等支持依供应商而异,不能假定“网络超时后重试”一定不会产生两笔费用。

预算不够时,系统应该怎么做?

预算控制不是一句“返回 429”就结束。根据场景预设降级顺序:先复用经过权限与时效检查的缓存,再考虑经过质量测试的低成本模型、减少非必要步骤、把离线任务排队,最后才拒绝并给出可理解的状态。价格、库存、个人数据这类内容不能为了省钱错误地复用缓存;高风险决策也不能悄悄换到未经验证的模型。

把硬限制和软提醒分开。达到 70% 和 90% 可通知负责人检查增长来源;达到硬额度后阻止新调用。预留给关键业务的额度应独立配置,避免一批低优先级任务先把月预算花完。配置变更要留审计记录,预算或权限不能由模型输出自行修改。

用什么指标判断控制是否有效?

看板至少展示按场景、租户、模型和日期拆分的已结算费用、在途预留、请求数、平均与 P95 单请求成本、重试率、失败率、缓存命中率和降级次数。另看“每个合格结果的成本”:便宜模型如果需要大量返工,账面单价下降未必是业务成本下降。

上线前用真实请求样本回放估算器,检查预留是否覆盖高分位费用;压测并发预留,验证不会因竞态透支;模拟超时、重复请求、迟到的 usage 和月度周期切换。上线后每天对账,发现差异就标记并追查,而不是靠月底才发现费用异常。

大模型成本控制可以概括成四步:先估算、原子预留、按实结算、明确降级。缓存与模型选择帮助降低平均成本,预算账本和异常处理则负责在高并发及故障时守住边界。两者配合,才能既控制支出,也保住可用答案的质量。