跳转到主要内容

LLM 成本预测:多数团队在上线前都会忽略的估算难题

阅读需 2 分钟Tian PanTian Pan

一个团队发布了一款支持聊天机器人。在测试阶段,每月账单看起来还在可控范围内——工程团队演示期间仅花费了几百美元。上线三周后,发票寄到了:4.7 万美元。没人虚报 Token 数量,也没人算错账。生产环境的工作负载与他们模拟的完全不是一回事。

这种模式在不断重复。团队估算 LLM 成本的方式就像估算数据库查询成本一样——通过测量一个典型的请求并乘以预期访问量。这种思维模型在 LLM 上彻底失效了,因为两个最大的成本驱动因素(输出 Token 长度和工具调用开销)是在推理阶段决定的,其行为在设计阶段无法完全预测。

本文讨论的是如何在发布前进行更好的预测,而不是在账单到期后如何优化。

为什么设计阶段的估算会失败

天真的成本公式是这样的:估算平均 Prompt 大小,乘以每日请求数,再乘以模型的每 Token 单价。对于大多数生产系统来说,这会导致数量级上的错误。

问题首先出在输出 Token 上。每个模型对输出的计费都比输入贵——通常每 Token 贵 4 到 8 倍——因为自回归生成对每个 Token 进行一次顺序推理,而输入处理是在单次并行前向传递中完成的。一个输入 1,000 Token、生成 50 Token 的 Prompt,其成本与生成 500 Token 的 Prompt 截然不同。输出长度取决于用户意图、任务复杂性和模型 Temperature。在设计阶段,这些都不是固定的。

第二个失效模式是工具调用(Tool-call)开销。在 Agent 系统中,工具输出会被重新注入 Context(上下文),用于后续的推理步骤。用户消息可能只贡献 50 个 Token,但它触发的工具响应可能轻易达到 5,000 个。当你以直接提示(Direct Prompting)为基准进行测试时,这种 100 倍的放大效应是不可见的,但在执行真实查询、API 调用或代码执行的生产环境 Agent 中,它会立即显现。

第三:对话历史的累积。每一轮都发送完整对话上下文的系统,随着会话变长,成本会呈现超线性增长。第二轮花费 0.01 美元的会话,在第十轮可能花费 0.08 美元——这不是因为用户行为发生了变化,而是因为在架构决策时没有考虑到历史记录的增长。

演示流量不会暴露这些问题。工程师运行的是简短、受控的 Prompt。他们不会模拟一个粘贴了 2,000 字文档并提出后续问题的用户,也不会模拟一个重试三次失败工具调用的 Agent。

在发布前分解成本差异

在进行准确预测之前,你需要根据驱动因素分解你的 Token 预算。这三类行为各不相同,需要不同的缓解策略。

输入 Token 是最可预测的。你可以控制系统 Prompt 的长度。你可以测量同类产品中用户消息长度的分布。如果你使用的是检索增强(RAG),你可以测量每次查询注入了多少个 Chunk。输入 Token 是成本模型中真正可以被设计的部分。

输出 Token 是差异存在的地方。同一个查询发送十次,返回的答案可能从两句话到十段话不等。在生产系统中,输出与输入 Token 的比例通常在 0.1 到 2.0 之间,具体取决于任务类型。摘要生成的输出相对于输入较短,而开放式生成可能会反转这一比例。如果你没有特定任务类型的经验数据,请假设输出 Token 会出乎意料地偏高。

工具调用 Token 是 Agent 系统中的变数。每次工具调用都会将其响应注入上下文,并且 Agent 在产生最终响应之前可能会多次调用工具。在开发过程中跟踪工具调用深度和平均工具响应长度。一个平均每个用户请求进行三次工具调用、且工具响应平均为 800 Token 的系统,每个请求在开销上花费了 2,400 Token,而这根本不会出现在你的初始成本估算中。

推理 Token 是一个新兴的第四类目。具有内置思维链处理功能的模型——o 系列模型、带有思维模式的 Gemini、带有扩展思维的 Claude——会为隐藏在应用程序输出之外的内部推理步骤计费。这种溢价通常是基础费率的 2 到 4 倍。如果你正在使用这些模型,你看到的可见 Token 数量可能会使实际成本被低估三倍。

在金丝雀流量之前的模拟

发布前模拟的目标是获得每个请求的成本分布,而不仅仅是一个平均值。平均值掩盖了长尾效应——而在 LLM 系统中,长尾成本非常昂贵。

首先建立一个反映预期生产输入的 Prompt 语料库。这意味着:

  • 从现有产品(论坛、支持单、类似产品)中采样真实的用户查询
  • 如果没有,则根据复杂度等级创建合成 Prompt
  • 包括对抗性案例:最大长度输入、触发多次工具调用的模糊查询、导致冗长输出的请求

在你的实际系统架构上运行这个语料库,而不是简化的桩程序(Stub)。使用真实模型、真实工具集成、真实检索管道。捕获分解为输入、输出和工具调用开销的单次请求 Token 计数。建立一个直方图。

该直方图的 P50 是你的规划估算,P95 是你的预算上限。它们之间的比例告诉你的长尾有多厚。P95/P50 比例超过 5 意味着一小部分用户产生的成本将使平均用户相形见绌——你应该在发布前在产品层面限制这些会话,而不是在发布后。

对于 Agent 系统,运行不同 Agent 深度的模拟。在测试中两步完成的任务,在生产环境中当用户查询含义模糊时可能需要六步。建模每个步骤深度的成本,并提前决定你允许的最大 Agent 深度。在发布前为架构建立硬性限制成本很低,但在发生账单事故后再进行补救则不然。

金丝雀部署作为成本控制手段

一旦你有了模拟估算,金丝雀流量可以在全面铺开之前,根据真实用户数据对这些估算进行验证。

标准的金丝雀方法是将一小部分生产流量路由到新系统,而其余流量继续走旧路径。为了进行成本预测,在金丝雀发布期间需要追踪的关键指标包括:

  • 每会话平均成本(不是每请求成本——会话级聚合能捕获多轮对话的开销)
  • P95 每会话成本
  • 智能体步骤深度的分布(针对智能体功能)
  • 如果你实施了语义缓存,则需关注缓存命中率

将这些指标与你的模拟估算进行对比。如果生产环境的 P95 超过模拟 P95 的两倍,说明你的语料库未能捕获足够的极端情况(hard cases)。在扩大发布范围之前,深入研究高成本会话并识别其模式。

一种未被充分利用的技术是会话受限的金丝雀部署 (session-capped canary deployment)。与其无限期地将一定比例的用户路由到新系统,不如在金丝雀发布期间设置每个会话的 Token 预算,并在会话达到上限时进行平滑降级。这为你提供了验证期间的成本上限,并能揭示用户是否经常触及会话上限——这会在你投入正式生产预算之前,告诉你需求的弹性如何。

生产环境中的动态预算执行

模拟和金丝雀部署会减少意外,但无法消除意外。用户总能找到你意想不到的系统使用方式,你需要执行逻辑来防止最坏的情况演变成灾难。

框架级的预算执行比供应商级的速率限制(rate limits)更可靠。供应商的速率限制是为了保护供应商,而不是为了保护你的账单。一个执行完毕但消耗了 50,000 个 Token 的请求通常不会被供应商的速率限制拦截,但它会击穿你在应用代码中执行的每会话预算。

有效的执行机制分为三个层级:

每会话上限 (Per-session caps) 为单次对话设置最大 Token 预算。当会话接近上限时,显示平滑降级消息,而不是静默截断上下文或报错。经常触及会话上限的用户是一个信号,表明你的上限设置过低,或者你的使用场景与设计初衷有所偏差。

每用户每日预算 (Per-user daily budgets) 防止个人用户通过反复的长会话产生失控成本。这对于内部工具(工程师会压力测试你的系统)比对消费级产品更重要,但两者都能从中受益。

智能体循环的熔断机制 (Circuit breakers for agent loops) 对智能体系统尤为重要。一个陷入循环的智能体——例如不断重试失败的工具调用,或反复搜索找不到的信息——其消耗 Token 的速度会比人类交互高出几个数量级。通过追踪没有最终响应的连续工具调用来检测循环模式,并以错误形式终止,而不是让循环继续。对于没有构建这种保护机制的团队,无限制的智能体循环曾导致过每周五位数的账单。

渐进式节流在触及硬限制之前实现平滑降级。当一个会话达到其预算的 80% 时,为剩余轮次切换到更便宜的模型。当达到 95% 时,返回更短的响应。100% 时的硬切断是必要的,但不应是主要的机制。

不可或缺的估算

使成本预测发挥作用的纪律是在开发过程中测量组件级的 Token 计数,而不仅仅是 API 响应级别。了解你的系统提示词(system prompt)贡献了多少 Token。了解你的检索步骤平均以及在 P95 水平下注入了多少 Token。了解目标数据集中典型用户消息的长度。了解你的工具响应平均包含多少 Token。

这些数据让你建立一个能够解释偏差(variance)而不仅仅是报告偏差的成本模型。当生产成本偏离估算时,组件级模型会告诉你哪个驱动因素发生了变化——是用户行为的转变、系统提示词的膨胀,还是工具响应变得出乎意料地冗长。

跳过这一步的团队往往会陷入一种常见的境地:收到一份意外的账单却无法明确归因——这是最糟糕的结果,因为你无法修复你无法解释的问题。

预测 LLM 成本与预测数据库或计算成本有本质区别,因为很大一部分成本是由动态行为决定的,而不是由你决定的。面对这种不确定性,反应不应该是放弃估算,而是构建能够约束不确定性的系统,在发布前根据经验测量偏差,并执行防止尾部风险主导预算的限制。

那些没有被 LLM 账单吓到的团队,并不是因为他们估算得更准确,而是因为他们构建了执行逻辑,并在上线生产环境前验证了该逻辑确实能约束成本。

参考资料

保持联系,关注我获取更多内容

阅读需 9 分钟

推理模型经济学:思维链何时物有所值

深度思考模型的单次查询成本高出 10–50 倍。本文提供了一套任务分类法,告诉你何时这笔溢价是值得的,以及如何构建自动应用该策略的路由架构。

insider
llm
阅读需 11 分钟

生产环境中的多模态大模型:没人会预先计算的成本账

视觉、音频和视频输入如何改变你的大模型 Token 预算 —— 本文详细分析了各模态的成本公式、那些悄悄增加生产账单的乘数,以及团队用于控制成本的架构模式。

multimodal
llm
阅读需 10 分钟

生产级 LLM 应用的 Token 预算策略

一份关于在生产级 LLM 系统中管理 Token 预算的实用指南 —— 涵盖了上下文腐烂、分级分配、摘要处理、KV 缓存利用以及防止 Agent 静默失败的中间层。

llm
production
阅读需 10 分钟

LLM 路由:如何停止为简单查询支付顶级模型的昂贵价格

将每个查询都发送给你最昂贵的模型,所花费的成本比实际需要的高出 27 倍。本指南提供了一份实用的 LLM 路由策略指南——包括基于规则、分类器和级联路由——并附带真实的基准测试数据以及可能遇到的故障模式。

llm
cost-optimization
阅读需 9 分钟

隐形算力税:为何你的 AI 推理账单远超用户实际所需

主动生成、后台摘要以及提前的上下文准备会消耗推理预算,而用户却从未看到这些输出。本文将介绍如何衡量这些浪费并停止为此买单。

insider
ai-engineering