五项技术会产生叠加效果。每项技术都会削减账单的不同部分——实际叠加其中三项即可在不损失质量的情况下减少 70%;全部五项则可接近 85-90%。本指南涵盖完整方案、实测节省金额,以及每项技术的可运行代码。每项技术都在底部链接到专门的深度解析。
五项技术,按 ROI 排名
| # | 技术 | 削减内容 | 实际节省 |
|---|---|---|---|
| 1 | 提示缓存 | 重复提示词中的输入 token | 输入成本降低 60–90% |
| 2 | 模型分层 | 简单任务的单次调用费率 | 便宜约 10 倍 |
| 3 | 输出上限 | 输出 token,创意任务中的主要成本 | 输出成本是输入的 4–5 倍 |
| 4 | 并行处理 + 批处理 | 实际时间,而非每个 token 的成本 | 支持设置更严格的超时,减少重试 |
| 5 | 重试管理 | 失控重试支出 | 限制尾部成本,而非平均成本 |
1. 提示词缓存——迄今 ROI 最高的技术
如果您的系统提示词超过 1,000 个 token,并且在 5 分钟窗口内使用相同提示词超过两次,提示词缓存就是免费的收益。Anthropic 对缓存输入按输入费率的 10% 收费(在Claude Fable 5.1上的比例为2.5%,在Claude Opus 5.5上的比例为5%);OpenAI 会在 10% 自动应用等效机制。只需添加一个字段:
# Prompt caching: 1 extra field = 10% rate on cached input
resp = client.messages.create(
model="claude-sonnet-5",
max_tokens=600,
system=[{
"type": "text",
"text": LONG_SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"}, # cache this part
}],
messages=[{"role": "user", "content": question}],
)实际节省:如果系统提示词较大且稳定,输入成本可降低 60-90%。查看您的 /app/usage 仪表板——如果 cache_read_input_tokens 为 0,您还有 30 分钟的工作要完成,但这项投入会持续带来回报。深度解析。
2. 模型分层——使用足够胜任的最便宜模型
Claude Haiku 4.5 的成本约为 Claude Opus 4.7 的 10%。对于分类、格式化、路由决策和简单摘要,Haiku 绰绰有余。只有真正困难的推理调用才使用 Opus。
# Pick the cheapest model that's still good enough for the task.
# Escalate by difficulty: cheap (Haiku 4.5 / GPT-5.6 Terra) -> Sonnet 5 -> Opus 4.7
def pick_model(difficulty: int) -> str:
if difficulty <= 2: return "claude-haiku-4-5" # ~10x cheaper than Opus
if difficulty <= 4: return "gpt-5-6-terra" # a second family, cheap output
if difficulty <= 7: return "claude-sonnet-5"
return "claude-opus-4-7"构建分层决策的方法:先使用一个小型分类器(Haiku 自身可用 100 个输入 token 完成此任务),然后进行路由。使用留出评估测试衡量输出质量。不要凭直觉选择——进行基准测试。
- 第 0 层(Haiku 4.5):分类、提取、翻译、<2K 输入的摘要——单次调用成本为几美分
- 第 1 层(GPT-5.6 Terra):较长摘要、代码补全、简单工具调用——同样只需几美分,但长上下文能力更强
- 第 2 层(Sonnet 5):实际推理、多步骤代理、视觉任务——生产环境的主力模型
- 第 3 层(Opus 4.7):仅在确认 Sonnet 无法正确完成任务时使用
3. 输出上限——限制生成内容,而不仅是读取内容
输出 token 的成本通常是输入的 4-5 倍。宽松的 max_tokens=4096 默认值会让模型冗长输出。严格限制输出长度,并使用停止序列在正确的标记处截断:
# Two-layer caps: per-call max_tokens + per-key wallet cap
client.chat.completions.create(
model="claude-sonnet-5",
messages=[...],
max_tokens=800, # cap each call
stop=["</answer>"], # cut at terminator
)
# /app/keys → set "Spending limit" per key:
# Production: $50/day · Experiment: $5/day · CI: $1/day将单次调用的 max_tokens 与 /app/keys 中按密钥设置的 钱包支出上限 配对——失控循环或错误无法超过您的每日上限。两层限制都很重要。
4. 并行处理——适用于批处理型工作负载
如果您要处理 1,000 个相互独立的项目(对反馈分类、为潜在客户评分、生成描述),串行调用需要一小时。使用 AsyncOpenAI 的异步调用并设置并发限制,可在不到一分钟内完成——更严格的超时还可以让您快速终止响应缓慢的上游服务。并行处理不会降低每个 token 的成本,但它支持幂等处理、更严格的重试预算等架构模式,而这些模式确实可以降低成本。
5. 重试管理——不要为失控重试付费
朴素代码会针对每个错误重试,包括 400。这等于为失败付费(Kunavo 不会对 4xx 请求收费,但您仍会消耗速率限制额度和实际时间)。正确策略是:仅重试 408/429/5xx,使用带抖动的指数退避,最多 5 次尝试,总等待时间最多 30 秒。其他情况均应快速失败并返回错误。
实际节省情况
某个使用 Kunavo、每月支出 5,000 美元的 SaaS 的实际测量节省:
- 添加提示词缓存:节省 2,000 美元(−40%)
- 用于分类的 Haiku 分层:节省 800 美元(−16%)
- 更严格的
max_tokens:节省 400 美元(−8%) - 合计:每月节省 3,200 美元,支出 1,800 美元(总体减少 −64%)
这些技术会叠加——每项后续技术都在已经降低的基线上发挥作用。如果先应用缓存,其他技术的节省幅度会更小。顺序很重要:从第 1 项开始,然后是第 2 项,再然后是第 3 项。
宣传效果并不如实的方法
- “什么都使用 Embedding”——Embedding 可以节省文本搜索成本,但不能节省生成成本。它们价格低廉,却不会降低 LLM 调用成本
- “为了降低成本使用本地微调模型”——只有在针对狭窄任务每天处理 10M+ token 时才值得这样做。对大多数团队而言,提示词缓存 + Haiku 分层胜过自托管带来的运营复杂性
- “更便宜的聚合器”——Kunavo 对大多数模型的定价已经低于提供商官方费率。更便宜的聚合器通常通过静默地将您请求的模型替换为更便宜的模型来获胜
接下来
先应用缓存——它是每投入一小时所带来 ROI 最高的方式。然后按模型和层级查看 /app/usage 仪表板细分。接着进行分层。将每月每活跃用户成本作为北极星指标——如果用户参与度增长而该指标持平或下降,说明您做对了。
常见问题
提示词缓存可以将 LLM 账单降低多少?
Anthropic 对缓存输入按正常输入费率的 10% 收费(在Claude Fable 5.1上的比例为2.5%,在Claude Opus 5.5上的比例为5%),而 OpenAI 会在 10% 自动应用等效机制。对于系统提示词较大且稳定的工作负载,这可以使输入成本降低 60–90%。应首先应用这一方法——之后的每项技术都将在降低后的基线上发挥作用。有关确切的请求格式,请参阅 提示词缓存深度解析。
Claude Haiku 比 Claude Opus 便宜多少?
Claude Haiku 4.5 的成本约为 Claude Opus 4.7 的 10%——便宜约 10 倍。对于分类、提取、翻译和简短摘要,Haiku 已经足够;只有在确认 Claude Sonnet 5 无法正确完成的推理任务中才使用 Opus。当前各模型费率请参阅 Claude API 定价指南。
输出 token 比输入 token 更贵吗?
是的——输出 token 的成本通常是输入 token 的 4–5 倍。这就是宽松的 max_tokens=4096 默认值很昂贵的原因:它会让模型在账单中最昂贵的部分继续冗长输出。为每次调用设置 max_tokens 上限,并使用停止序列在正确的标记处截断。
总体上,实际可以将 LLM 账单降低多少?
实际叠加五项技术中的三项即可在不损失质量的情况下减少 70%,全部五项则可接近 85–90%。在每月 5,000 美元的实测工作负载中:提示词缓存节省 2,000 美元(−40%),用于分类的 Haiku 分层节省 800 美元(−16%),更严格的 max_tokens 节省 400 美元(−8%)——共节省 3,200 美元,支出 1,800 美元,总体减少 64%。
LLM API 调用的正确重试策略是什么?
仅重试 408、429 和 5xx 响应,使用带抖动的指数退避,最多 5 次尝试,总等待时间上限为 30 秒。其他情况均应快速失败。重试 400 永远不会成功——虽然 Kunavo 不会对失败的 4xx 请求收费,但它们仍会消耗速率限制额度和实际时间。