LLM API 成本优化实战:Prompt Caching、模型路由与 Token 压缩指南

大模型 API 调用成本占 AI 应用运营费用的 60%-80%。本文深入解析 Prompt Caching、模型路由、Token 压缩三大成本优化策略,附完整代码实现与性能对比数据,助你将 LLM API 成本降低 50%-90%。

开发者效率 2026-05-29 12 分钟

根据 a16z 2026 年 Q1 的调研报告,LLM API 调用成本已占 AI 应用总运营成本的 60%-80%。一个日活 10 万的 RAG 应用,如果未做成本优化,每月 OpenAI API 账单轻松突破 $15,000。但做得好的团队能把同样的业务跑在 $2,000 以内——差距不在模型选择,而在工程化的成本优化策略。本文直接给你三种经过生产验证的优化手段,每种都有完整的代码实现和真实成本对比数据。

💰 一、Prompt Caching:降低 90% 重复计算

1.1 缓存机制对比

在典型的 RAG 应用中,System Prompt + 工具定义通常占总 Token 的 60%-80%,且在绝大多数请求中完全相同。Prompt Caching 机制可以复用这部分计算:

提供商 缓存折扣 最小缓存长度 生效延迟
Anthropic (Claude) 输入价降至 10% 1024 tokens 即时
OpenAI (GPT-4o) 输入价降至 50% 1024 tokens 即时
DeepSeek Cache Hit 降至 10% 64 tokens 约 30 秒
Google (Gemini) 手动缓存,约 25% 32768 tokens 约 5 分钟

⚠️ 警告:缓存命中的关键是前缀一致性。如果在 System Prompt 中动态插入时间或用户 ID,缓存会失效。务必把动态内容放在请求末尾。

1.2 优化 Prompt 结构

❌ **错误写法:**动态内容放在 System Prompt 开头

// ❌ 每次时间不同,缓存永远不命中
const systemPrompt = `当前时间:${new Date().toISOString()}
你是客服助手。请根据知识库回答问题。`;

✅ **正确写法:**静态前缀 + 动态后置

// ✅ 静态部分在前,缓存命中率极高
const staticPrompt = '你是客服助手。请根据知识库回答问题。';
const response = await anthropic.messages.create({
  model: 'claude-sonnet-4-20250514',
  system: staticPrompt,  // 稳定前缀
  messages: [{ role: 'user', content: `[时间:${new Date()}] ${query}` }]
});

1.3 Gemini Context Caching

Gemini 的缓存需要显式创建,适合 System Prompt 超长的场景:

// 创建缓存(一次创建,多次复用)
const cache = await genAI.caching.create({
  model: 'models/gemini-1.5-pro',
  contents: [{ role: 'user', parts: [{ text: longKnowledgeBase }] }],
  ttlSeconds: 3600
});
// 用缓存 ID 发起请求
const cachedModel = genAI.getGenerativeModel({
  model: 'gemini-1.5-pro',
  cachedContent: cache.name
});

💡 **提示:**当 System Prompt 包含数万字产品文档时,Gemini Context Caching 可将成本降低 75% 以上。

1.4 成本实测

以 System Prompt 4000 Token、问题 200 Token、Claude Sonnet 为例,日 10 万次调用:

场景 单次成本 月成本 节省
无缓存 $0.0126 $37,800
Anthropic 缓存命中 $0.0044 $13,200 65%
Gemini 缓存命中 $0.0032 $9,600 75%

⚡ **关键结论:**仅优化 Prompt 结构,月成本从 $37,800 降至 $9,600,投入产出比最高的优化手段。

🔀 二、模型路由:小模型做小事,省 80% 成本

2.1 请求复杂度分布

实际应用中 60%-80% 的请求是简单的提取、翻译、格式化任务,不需要最强模型:

请求类型 占比 推荐模型 成本 vs GPT-4o
简单提取/格式化 40% GPT-4o-mini / Haiku 1/20
中等推理/总结 35% GPT-4o / Sonnet 1x
复杂推理/代码 25% Sonnet / o3 5-10x

2.2 基于规则的快速路由

高 QPS 场景下,分类器本身也有成本。用规则覆盖明确场景,零额外开销:

// 基于规则的模型路由(零额外成本)
const COMPLEXITY_RULES = {
  simple: [/^(翻译|convert|format|格式化|提取)/i, /^.{0,50}$/],
  complex: [/(分析|analyze|架构|实现|优化)/i, /^.{300,}$/]
};

function selectModel(query: string): string {
  if (COMPLEXITY_RULES.simple.some(p => p.test(query)))
    return 'claude-haiku-4-20250414';
  if (COMPLEXITY_RULES.complex.some(p => p.test(query)))
    return 'claude-sonnet-4-20250514';
  return 'claude-sonnet-4-20250514';  // 默认
}

2.3 分类器路由(模糊场景)

规则无法覆盖的 30% 模糊场景,用小模型做分类:

async function classifyComplexity(query: string): Promise<string> {
  const res = await client.messages.create({
    model: 'claude-haiku-4-20250414',  // 最便宜的模型做分类
    max_tokens: 10,
    messages: [{ role: 'user', content: `分类为 simple/medium/complex:${query}` }]
  });
  return res.content[0].text.trim();
}

💡 **提示:**建议规则覆盖 70% 明确场景,分类器处理 30% 模糊场景。分类器调用量只有总量的 30%,成本几乎可忽略。

2.4 路由 + 缓存组合成本

日 10 万次请求(简单 40%、中等 35%、复杂 25%):

方案 月成本 节省
全部 GPT-4o $30,000 基准
智能路由 $7,500 75%
路由 + Prompt 缓存 $3,000 90%

⚡ **关键结论:**模型路由 + Prompt Caching 组合,月成本从 $30,000 降至 $3,000,降幅 90%

📦 三、Token 压缩:从输入端减少浪费

3.1 Re-ranking:只保留最相关的 Top-K

RAG 检索到 5-10 个文档片段,但通常只有 2-3 个对回答有帮助。用重排序过滤掉无关内容:

// 使用 Cohere Rerank API 过滤低相关文档
async function rerank(query: string, docs: string[], topK = 3) {
  const res = await fetch('https://api.cohere.ai/v1/rerank', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${COHERE_API_KEY}` },
    body: JSON.stringify({
      model: 'rerank-v3.5', query, documents: docs, top_n: topK
    })
  });
  return (await res.json()).results;
}

3.2 Map-Reduce 摘要压缩

对长文档做并行压缩,只保留与问题相关的关键信息:

// 用小模型并行压缩每个文档
const summaries = await Promise.all(
  documents.map(doc => client.messages.create({
    model: 'claude-haiku-4-20250414',
    max_tokens: 200,
    messages: [{ role: 'user', content: `提取与"${query}"相关的关键信息:\n${doc}` }]
  }))
);

3.3 压缩效果对比

策略 原始 Token 压缩后 压缩率 质量损失
Re-ranking (Top-5→3) 5000 3000 40% < 2%
Map-Reduce 摘要 5000 800 84% 5-10%
结构化输出 800 300 62% < 1%

⚠️ **警告:**Map-Reduce 摘要压缩率最高,但有信息损失风险。精确问答场景(法律、医疗)建议只用 Re-ranking。

📊 四、四大策略总览

策略 难度 节省 适用场景 质量影响
Prompt Caching ⭐ 低 65-75% 所有场景
模型路由 ⭐⭐ 中 50-80% 多种请求类型 极小
Token 压缩 ⭐⭐ 中 40-60% RAG、长文档 5-10%
批处理 API ⭐ 低 50% 离线/异步任务

🎯 总结

实施路线图:

  1. **第 1 天:**优化 Prompt 结构,静态内容在前——立即获得 65%+ 缓存命中率
  2. **第 3 天:**实现基于规则的模型路由——覆盖 70% 明确场景
  3. **第 2 周:**接入 Re-ranking 和 Token 压缩——减少 RAG 输入浪费
  4. **按需:**离线任务用批处理 API,高重复场景接语义缓存

📌 **记住:**不要一次性实现所有优化。从 Prompt Caching 开始——实施最简单、效果最显著、风险最低。逐步叠加其他策略,每次用 A/B 测试验证质量没有下降。

相关工具推荐:

  • LangSmith — LLM 可观测平台,追踪 Token 用量和成本
  • Helicone — 开源 LLM 代理,内置成本分析和缓存
  • Portkey — LLM API Gateway,多模型路由和成本监控
  • Anthropic Console — 官方仪表盘,查看缓存命中率

📚 相关文章