博客

LLM API 成本控制实战指南:从账单爆炸到精细运营

「上个月 API 账单 $1,200,这个月怎么 $3,600 了?」

这是 AI 应用开发者最常见的噩梦。LLM API 成本的增长往往不是线性的——一次未优化的循环调用、一个缺失的缓存策略、一个选错的模型,就能让你的账单翻几倍。

本文从账单构成开始讲起,逐步深入到每一个成本控制策略,并提供可操作的方案和工具推荐。

LLM API 账单构成

要控制成本,首先要理解钱花在了哪里。LLM API 的成本主要由以下几个部分构成:

1. Token 成本

这是最核心的部分,包括:

  • 输入 Token: 你发给 API 的 prompt 内容
  • 输出 Token: API 返回的响应内容
  • 缓存读取 Token: 命中了缓存,只需要支付缓存价格(通常为全价的 10%)

2. 请求数量

即使每个请求的 token 量不大,但请求数量本身也会显著影响总成本。特别是在 Agent 工作流中,一个任务可能涉及数十次 API 调用。

3. 模型选择

不同的模型价格差异巨大:

模型 输入价格/1M 输出价格/1M 相对成本
Claude Haiku 4.5 $0.80 $4.00 1x
Claude Sonnet 4.7 $3.00 $15.00 ~3.8x
Claude Opus 4.8 $15.00 $75.00 ~18.8x

4. 失败重试

API 调用失败后的重试会产生额外的成本。如果重试逻辑不合理,一次失败可能导致多次重试,成倍增加成本。

成本爆炸的 5 个常见原因

1. 循环调用无缓存

场景: Agent 在循环中反复发送相同的上下文,每次都是全价支付。 影响: 额外消耗 5-10 倍 token。 解决方案: 使用带缓存的网关(如 TeamoRouter)。

2. 简单任务用了大模型

场景: 简单的文本分类、数据提取等任务也用了 Opus。 影响: 成本为使用 Haiku 的 10-20 倍。 解决方案: 基于任务复杂度自动路由。

3. 过度重试

场景: API 调用失败后,未经指数退避直接重试 5 次。 影响: 在系统不稳定时,成本暴增 5 倍。 解决方案: 合理设置重试策略(指数退避 + 最大重试次数)。

4. 缺乏监控告警

场景: 没有设置预算告警,等到月底收到账单才发现超支。 影响: 无法及时干预异常消耗。 解决方案: 设置多级预算告警(50%、80%、100%)。

5. 未优化 prompt 长度

场景: prompt 中包含大量无用信息、历史记录、系统提示。 影响: 每请求 ta 多消耗 2-10 倍输入 token。 解决方案: 优化 prompt 长度,精简上下文。

缓存策略实战

缓存是降低 LLM API 成本最有效的手段之一。

Semantic Cache vs Exact Match Cache

缓存类型 工作原理 适用场景 TeamoRouter 实现
Exact Match 请求完全一致时返回缓存 固定 prompt 模板 基础层缓存
Semantic(语义) 语义相似的请求返回缓存 Agent 工作流(同内容不同表达) 核心能力,99.3% 命中率

为什么语义缓存对 Agent 场景特别有效

Agent 工作流的特点是:

  1. 同一上下文中,80%+ 的内容是重复的(系统提示、对话历史等)
  2. 虽然是重复的内容,但每次请求的格式可能略有不同(追加了新的轮次)

语义缓存能识别出这些「实质相同、格式略异」的请求,大幅提高缓存命中率。

TeamoRouter 如何做到 99.3% 缓存命中率

TeamoRouter 的缓存技术针对 Agent 场景做了以下优化:

  1. 智能分段缓存: 将 prompt 分为动态和静态部分,只缓存静态部分
  2. 语义相似度匹配: 不要求请求完全一致,语义相似即可命中
  3. 预热机制: 对常见请求模式进行预缓存
  4. 缓存隔离: 不同用户的缓存隔离,避免缓存污染

模型路由策略

不是所有任务都需要最强模型。基于任务复杂度自动路由到合适的模型可以显著降低成本。

路由策略示例

任务类型 推荐模型 价格相对 Opus 节省比例
简单问答、数据提取 Claude Haiku ~5% 95%
代码生成、调试 Claude Sonnet ~20% 80%
复杂推理、长文写作 Claude Opus 100% 0%

TeamoRouter 的自动路由

TeamoRouter 支持基于任务特征自动选择模型,无需手动配置。

请求优化

Batch 请求

将多个独立请求合并为 batch 一次性发送,可以降低总请求数,且部分模型/提供商对 batch 请求有折扣。

Streaming

启用 streaming 可以降低首字延迟,虽然对总 token 成本没有直接影响,但能提升用户体验,减少因等待超时导致的重试。

压缩 Prompt

  • 缩短历史记录:只保留最近几轮的上下文
  • 精简系统提示:去除不必要的指令
  • 结构化 prompt:使用结构化模板替代自然语言描述

成本监控与预警

设置预算告警

级别 告警阈值 动作
提醒 预算 50% 邮件/消息通知
警告 预算 80% 通知 + 限制非关键请求
上限 预算 100% 暂停 API 访问

用量报表分析

定期查看以下指标:

  • 每日/每周 Token 消耗趋势
  • 缓存命中率变化
  • Top 模型消耗分布
  • 单用户/单 Key 消耗排行

真实案例:月账单从 $1,200 降至 $180

背景

某 indie hacker 的 AI 写作助手使用了 Claude API,月均 $1,200-1,500。

优化措施

  1. 改用 TeamoRouter 网关(缓存 + 路由)
  2. 配置语义缓存(80% 以上的重复请求命中缓存)
  3. 设置模型路由(简单任务走 Sonnet,复杂任务走 Opus)
  4. 优化 prompt(精简系统提示 + 压缩历史记录)

优化结果

指标 优化前 优化后 降幅
月 API 成本 $1,200 $180 -85%
缓存命中率 0%(无缓存) 85% -
平均每次请求成本 $0.12 $0.018 -85%
用户响应时间 1.2s 0.8s -33%

常见问题(FAQ)

缓存会过期吗?

TeamoRouter 的缓存有合理的 TTL(生存时间)设置。对于频繁请求的缓存项,TTL 会自动延长;不常请求的缓存项会被定期清理。

缓存会导致响应内容过时吗?

API 的响应内容在短时间内不会变化。TeamoRouter 的缓存有基于模型版本的版本控制,模型更新后缓存自动失效。

我需要修改代码才能使用网关缓存吗?

不需要。TeamoRouter 的缓存对调用方完全透明,你只需要将 API URL 指向 TeamoRouter,缓存自动生效。

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。
LLM API 成本控制实战指南:从账单爆炸到精细运营 · TeamoRouter