成本优化
问题
AI 应用上线后 Token 费用超出预算,如何优化成本?
答案
一、成本构成分析
| 消耗点 | 说明 | 优化空间 |
|---|---|---|
| 输入 Token | Prompt + 上下文 + 历史消息 | 大 — 压缩 Context |
| 输出 Token | 生成内容 | 中 — 限制长度 |
| 调用次数 | 请求量 | 大 — 缓存去重 |
| 模型选择 | 不同模型单价差异 10~100 倍 | 大 — 分级路由 |
二、优化策略全景
三、核心优化手段
1. 模型路由 — 按任务复杂度选模型
function selectModel(task: { complexity: string; latencyReq: string }) {
// 简单任务用小模型,复杂任务用大模型
if (task.complexity === 'simple') {
return 'gpt-4o-mini' // $0.15/1M input
}
if (task.complexity === 'complex') {
return 'gpt-4o' // $2.50/1M input
}
return 'gpt-4o-mini' // 默认走低成本
}
模型路由效果
实际项目中,70~80% 的请求可以用小模型处理,成本可降低 5~10 倍。
2. 语义缓存 — 相似问题复用
async function cachedQuery(query: string) {
// 1. 计算 query embedding
const embedding = await embed(query)
// 2. 在缓存中搜索相似问题(余弦相似度 > 0.95)
const cached = await cache.search(embedding, { threshold: 0.95 })
if (cached) return cached.answer // 命中缓存,0 Token 消耗
// 3. 未命中,调用 LLM
const answer = await llm.generate(query)
await cache.set(embedding, answer, { ttl: '24h' })
return answer
}
3. 上下文压缩
| 方法 | 做法 | 节省 |
|---|---|---|
| 历史摘要 | 旧对话压缩为摘要 | 60~80% |
| RAG 结果精简 | 只取最相关段落 | 30~50% |
| Prompt 模板优化 | 去除冗余指令 | 10~30% |
| 结构化输出 | JSON 替代自然语言 | 20~40% |
常见面试问题
Q1: GPT-4o 和 GPT-4o-mini 成本差多少?
答案:
| 模型 | 输入 ($/1M tokens) | 输出 ($/1M tokens) | 差距 |
|---|---|---|---|
| GPT-4o | $2.50 | $10.00 | 基准 |
| GPT-4o-mini | $0.15 | $0.60 | ~17 倍 |
Q2: 如何估算月度 Token 消耗?
答案:
例:1000 DAU × 5 轮 × (1000+500) × 30 × 33.75/月**(GPT-4o-mini)
Q3: 语义缓存的命中率一般多少?
答案:
取决于业务场景:
- 客服问答:命中率 40~60%(大量重复问题)
- 通用对话:命中率 10~20%
- 代码生成:命中率 5~10%(每次输入差异大)
适合高重复度场景,低重复场景收益有限。