迪图
发布于 2026-10-20 / 11 阅读
0
0

大模型 API 成本优化:把账单压到十分之一的六个杠杆

大模型 API 成本优化:把账单压到十分之一的六个杠杆

团队通常发现省钱的空间从来不在单价上,而在请求本身里。这篇给出实测有效的六个杠杆。

开篇:账单是怎么涨起来的

一个功能在 Beta 阶段花 200 美元,规模化部署后变成每月 5 万美元——这不是段子,是常态。

成本通常从四个缝隙漏掉:

漏洞

表现

模型错配

简单的分类、抽取、格式转换也调最贵的旗舰

上下文膨胀

多轮对话把历史全量带上,输入 token 随轮次滚雪球

重复调用

相同或相近的请求一遍遍打,没有任何缓存

多头订阅

GPT、Claude、Gemini 分别注册绑卡,汇率手续费再剥一层

一个公式抓住本质

LLM API 成本 = (输入 token + 输出 token) × 单价

每一个优化杠杆,要么减少 token,要么降低单价。 这就是全部。

杠杆

减少什么

按任务路由到最小够用的模型

单价

精简 prompt 与上下文

输入 token

缓存重复响应 / 前缀缓存

重复 token

限制输出长度

输出 token

批量处理

单价(有折扣时)

杠杆一:模型分层路由(收益最大)

不是每个 prompt 都需要最强模型。

这是多数项目能省下 60% 以上 的单项操作。

                  [ 用户请求 ]
                        │
                        ▼
                ┌───────────────┐
                │  语义意图路由  │
                └───────┬───────┘
        ┌───────────────┼───────────────┐
        ▼               ▼               ▼
   简单任务         分类抽取         复杂逻辑
        │               │               │
        ▼               ▼               ▼
   小模型          中档模型         旗舰模型
  (微调 SLM)      (mini/haiku)   (sonnet/gpt-4o)

层级

任务类型

推荐模型

Tier 1

分类、抽取、基础格式化

微调小模型、Llama 8B 级

Tier 2

标准逻辑、摘要

GPT-4o-mini、Claude Haiku

Tier 3

复杂推理、长文、硬核编码

Claude Sonnet、GPT-4o

小模型在窄而明确的任务上可以匹敌旗舰(分类、抽取)。它们在长程推理和复杂代码生成上才会落后。

所以按任务路由,不要一刀切降级。 保留旗舰作为低置信度场景的 fallback,而不是全部切换。

杠杆二:管好上下文

这是纯工程手段,收益不依赖换模型。

做法

说明

丢弃无关历史

只留最近几轮和关键事实

滚动摘要

超长对话把旧内容压成摘要再喂回

精简 system prompt

精简的自然语言指令 → 结构化的 Markdown/JSON schema 约束

动态截断

滑动窗口或语义压缩,而不是全量重发原始历史

RAG 只注入相关切片

别把整篇文档塞进上下文

一个具体的数字感受:把 system prompt 缩短 150 token,在百万次请求下就是省下 1.5 亿 token。

审查你的 prompt,要像审查任何热点代码路径一样。

杠杆三:设置输出硬上限

输出 token 的单价通常是输入的数倍。

这意味着限制回复长度往往比缩短 prompt 更省。而不设上限的 max_tokens 是你能上线的最贵的默认值之一。

做法

说明

max_tokens 硬限制

每次调用都设合理上限

JSON Schema 约束

把输出框住,不让模型自由发挥

要求最小答案

不需要全文散文时就明确要结构化输出

一个模型在你不允许它发挥的时候是无法发挥的。硬上限是最简单的杠杆。

澄清一个常见误解:流式输出不省钱。 流式改变的是响应送达方式,不改变模型生成多少 token,计费完全一样。流式用于改善感知延迟,降本要靠限制输出长度。

杠杆四:多级缓存

精确缓存

确定性请求走精确缓存。用完整的规范化请求做 key,TTL 与答案需要的新鲜度匹配,可缓存任务用低温度以确保相同输入产出相同输出。

不要缓存按用户个性化的内容,除非 user ID 是 key 的一部分。

语义缓存

自然语言变化太大,纯字符串匹配失效:

  • "如何重置我的密码?"

  • "在哪改密码?"

语义缓存的做法:把用户 prompt 向量化,查询向量库看是否存在超过相似度阈值(如 0.95)的语义等价查询,命中则直接返回。

在典型客服或搜索密集型应用中,语义缓存可以减少 20-35% 的总请求量,延迟降到 50ms 以内、接近零 token 成本。

前缀缓存

这是最被忽略但最容易用的一种。

很多 API 提供 prompt caching:当系统提示、few-shot 示例、稳定上下文被反复发送时,服务端识别相同或可复用的稳定前缀,按折扣价计费。

服务

缓存命中价对比

Gemini

$0.3125 vs $1.25 每百万 token(约 1/4)

DeepSeek

约为未命中价的 1/10

工程要求很简单:把稳定前缀放最前面,变化的部分往后放。

一个团队可以做到的前提是:system prompt 保持不变、前缀稳定、把变化的部分往后放。 当成本差距主要来自缓存命中与否时,优化目标会从"怎么写 prompt"转移到"怎么让上下文可缓存"。

杠杆五:批量处理

独立的调用打包成更少的请求。很多 API 对批量请求提供折扣。

适用:离线处理、索引构建、预计算。不适用:需要低延迟的交互式场景。

杠杆六:微调让调用变便宜

微调的成本结构和其他杠杆不同:

RAG / 提示词

微调

前期投入

低

高(数据 + 训练)

单次调用成本

高

低

适合

知识更新

固定高频任务

判断标准:这是一个固定、高频、模式明确的任务吗?如果是,把它微调到小模型上,长期成本会低得多。

自托管开源权重模型还有一个结构性优势:成本是可预测的固定月费,而不是随 token 用量线性增长的 API 计费。

成本驱动的排查顺序

驱动因素

为什么贵

修法

用了大模型

每次调用都是溢价 token

简单任务路由到小模型

长 prompt

上下文每次都计费

缓存稳定前缀、精简内容

大输出

输出 token 按溢价计费

设 max_tokens、要求最小答案

重复调用

同样的结果又算一遍

应用层缓存

微调

训练 + 托管成本

仅在固定任务值得时做

这五个快速打分,能让多数团队立刻看出该从哪里下手。

预算与护栏

保护账单不被滥用和失控消耗。

措施

说明

按用户和按 key 限流

防止单个调用方打爆预算

日/月硬预算

达到上限自动降级或阻断

异常告警

token 消耗意外飙升时告警(通常源于死循环或递归 prompt)

按功能追踪 token

看清成本集中在哪里

生产环境的 AI 功能不是跑完就放的脚本。 它需要和栈里其他部分一样的运营管控。

质量与成本必须一起测

省下的钱如果伴随质量崩塌,一分都不值。

做法

说明

保留期望输出测试集

你的 ground truth

每次优化前后打分

质量指标

回滚伤害用户结果的改动

保住核心体验

按"每个完成的任务成本"计费

不是按请求

"每个完成的任务成本"才是最早暴露浪费的指标。 按请求计费会让你误判——一次昂贵的长对话可能只完成了一个任务。

上线前的成本预算方法

按任务估算成本,不是按请求。

1. 跑 100 个有代表性的请求
2. 取平均 token 数
3. 乘以预期的月任务量
4. 加 20-30% 的余量(重试、边界情况、增长)

一个具体的降本案例

一个团队的完整改造路径:

阶段

动作

成本变化

起点

全部请求走旗舰模型

100%

1

加输出长度硬限制

-25%

2

系统提示精简 150 token

-18%

3

按任务路由到小模型

-55%

4

上语义缓存

-28%

5

启用前缀缓存

-12%

结果

约十分之一

效果几乎没打折。 关键是前三步都只是工程手段,不需要换模型、不需要改架构。

什么时候值得为更大的模型付钱

成本是一方面。有时候更大的模型就是正确的支出。

条件

该升级

任务需要长链多步推理

✅

小模型在你的测试集上低于质量线

✅

你已证明需求,且精度差距值得溢价

✅

只是"听说新模型更强"

❌

基于证据升级,而不是基于炒作。 承诺之前先测量质量收益与成本。

参考资料

  • OpenAI Prompt Caching 文档 — https://platform.openai.com/docs/guides/prompt-caching

  • Google Gemini 缓存定价 — https://ai.google.dev/pricing

  • LiteLLM 路由与预算管理 — https://docs.litellm.ai/

  • Portkey AI 网关 — https://portkey.ai/

  • OpenAI Batch API — https://platform.openai.com/docs/guides/batch


评论