根据 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 天:**优化 Prompt 结构,静态内容在前——立即获得 65%+ 缓存命中率
- **第 3 天:**实现基于规则的模型路由——覆盖 70% 明确场景
- **第 2 周:**接入 Re-ranking 和 Token 压缩——减少 RAG 输入浪费
- **按需:**离线任务用批处理 API,高重复场景接语义缓存
📌 **记住:**不要一次性实现所有优化。从 Prompt Caching 开始——实施最简单、效果最显著、风险最低。逐步叠加其他策略,每次用 A/B 测试验证质量没有下降。
相关工具推荐:
- ✅ LangSmith — LLM 可观测平台,追踪 Token 用量和成本
- ✅ Helicone — 开源 LLM 代理,内置成本分析和缓存
- ✅ Portkey — LLM API Gateway,多模型路由和成本监控
- ✅ Anthropic Console — 官方仪表盘,查看缓存命中率