如何控制AI调用成本
当你看到用户增长 300% 的同时利润腰斩,多半问题出在 AI 调用成本上。Token 费用在规模化之后会迅速吞噬毛利,很多团队在产品上线初期忽略这一点,等到账单数字变得刺眼才开始认真对待。
这篇文章系统梳理 AI 调用成本的构成、模型选择、缓存策略、Prompt 优化和监控告警五个维度,目标是把 LLM 支出从「不可控的隐性成本」变成「可衡量、可干预的产品指标」。
成本构成分析
LLM API 的计费逻辑并不复杂:按 Token 数量收费,输入和输出分开计价。但实际成本由多个因素叠加,远比「每百万 Token 多少钱」复杂。
Token 成本的构成
一次 API 调用的成本 = 输入 Token × 输入单价 + 输出 Token × 输出单价。看起来简单,但几个细节容易忽略:
- 输出 Token 通常比输入 Token 贵 3~5 倍。生成内容的计算成本远高于理解内容,这意味着「让模型说多少话」比「给模型看多少内容」对成本影响更大。
- 不同模型的价格差异可达 100 倍以上。以 2025~2026 年的市场行情为例,GPT-4.1 Nano 的输入价格约 $0.10/MTok,而 Claude Opus 4 的输入价格约 $15/MTok,差距显著。
- 系统 Prompt 也计入输入 Token。很多人只看用户消息的长度,忽略了每轮都发送的系统指令、Few-shot 示例和上下文窗口里累积的历史消息。
成本放大的常见原因
| 成本因素 | 典型表现 | 影响程度 |
|---|---|---|
| 模型选择不当 | 简单任务使用旗舰模型 | 成本可高出 10~100 倍 |
| Prompt 臃肿 | 系统指令重复、上下文过长 | 每次调用多花 30%~50% |
| 缺乏缓存 | 相同或相似问题反复调用 | 无效调用占总量 40%~60% |
| 输出过长 | 模型生成大量冗余内容 | 输出 Token 成本放大 3~5 倍 |
| 调用频率失控 | 无速率限制、无预算上限 | 突发流量导致成本飙升 |
| 缺少降级策略 | 高端模型不可用时直接报错重试 | 重复调用叠加 |
理解成本构成是控制成本的第一步。接下来的核心思路是:在正确的时间、用正确的模型、处理正确的请求,并避免不必要的调用。
模型选择策略
模型选择是成本控制杠杆最大的一环。选错模型,后面所有优化都事倍功半。
按场景分级
不是所有任务都需要最强的模型。一个经验法则:把任务分成三档,分别匹配不同能力层级的模型。
| 任务类型 | 示例 | 推荐模型层级 | 典型模型 |
|---|---|---|---|
| 简单任务 | 分类、实体提取、格式转换、关键词匹配 | 轻量模型 | GPT-4.1 Nano、Claude Haiku、Gemini Flash |
| 中等任务 | 摘要、翻译、常规问答、数据提取 | 中等模型 | GPT-4.1 Mini、Claude Sonnet、Gemini Pro |
| 复杂任务 | 深度推理、创意写作、多步骤规划 | 旗舰模型 | GPT-4.1、Claude Opus、o3 |
模型路由的实现
模型路由的核心逻辑是根据请求特征自动选择模型。一个典型的实现思路:
// 根据任务复杂度路由到不同模型
function selectModel(task: { type: string; complexity: 'low' | 'medium' | 'high' }) {
const routeMap = {
low: 'gpt-4.1-nano', // $0.10/MTok 输入
medium: 'gpt-4.1-mini', // $0.40/MTok 输入
high: 'gpt-4.1', // $2.00/MTok 输入
}
return routeMap[task.complexity]
}更精细的路由可以结合以下信号:
- 输入长度:短 Prompt(< 500 Token)大概率是简单任务,用轻量模型即可。
- 用户意图分类:先用一次低成本调用做意图判断,再路由到合适的模型。
- 历史成功率:如果某类任务在轻量模型上的成功率低于阈值,自动升级到更高级模型。
据行业实践,合理的模型路由可以降低整体成本 60% 以上,同时在绝大多数任务上保持相近的输出质量。
降级策略
当高端模型不可用(限流、故障、超时)时,降级策略能避免请求直接失败:
- 主备模型:主模型超时后自动切换到能力接近的备用模型。
- 版本降级:旗舰模型不可用时降级到上一代版本。
- 本地兜底:极端情况下用本地小模型或规则引擎返回基础结果,而不是报错。
降级策略的关键是提前定义好降级矩阵,而不是在故障发生时临时决策。
缓存策略
缓存是降低 AI 调用成本最直接的武器。核心原则:能不调 API 就不调。
精确缓存(Exact Cache)
最简单的缓存方式:对完全相同的 Prompt 返回缓存结果。适用于系统 Prompt 固定、用户输入模式重复度高的场景。
- 优点:实现简单,命中率高。
- 局限:只能匹配完全一致的输入,对语义相似但措辞不同的请求无效。
- 适用场景:FAQ 问答、固定格式的数据提取、重复性高的客服场景。
语义缓存(Semantic Cache)
语义缓存通过比较 Prompt 的含义而非文本来实现缓存命中。具体流程:
- 将用户输入通过 Embedding 模型转换为向量。
- 计算与已缓存向量的余弦相似度。
- 如果相似度超过阈值(通常 0.85~0.90),直接返回缓存结果。
语义缓存的效果相当显著:
- 成本降低 40%~80%,具体取决于业务的重复度。
- 响应延迟从数秒降至毫秒级,速度提升可达 250 倍。
- FAQ 类场景的缓存命中率通常在 40%~60%。
需要注意的是,语义缓存有两个关键参数需要调优:
- 相似度阈值:设得太低会返回不准确的缓存结果,设得太高则命中率不足。建议从 0.90 开始,根据实际效果逐步下调。
- 缓存过期时间:根据业务数据的时效性设定。事实性内容(如产品价格)需要短过期,通用知识可以长一些。
Prompt 缓存(Provider-level Caching)
部分模型提供商支持 Prompt 级别的缓存。Anthropic 的 Prompt Caching 对缓存命中的输入 Token 给予 90% 的折扣。OpenAI 也推出了类似机制。
实现要点:
- 将不变的内容(系统指令、Few-shot 示例)放在 Prompt 前面,标记为可缓存。
- 将动态内容(用户消息、上下文变量)放在后面。
- 保持 Prompt 前缀的稳定性,避免频繁变动导致缓存失效。
缓存策略对比
| 缓存类型 | 匹配方式 | 成本节省 | 实现复杂度 | 适用场景 |
|---|---|---|---|---|
| 精确缓存 | 字符串完全匹配 | 高(100% 命中时) | 低 | 固定问答、重复请求 |
| 语义缓存 | 向量相似度匹配 | 中高(40%~80%) | 中高 | 开放式问答、客服 |
| Prompt 缓存 | 提供商前缀缓存 | 中(50%~90%) | 低 | 所有使用固定系统指令的场景 |
| 结果缓存 | 业务逻辑层缓存 | 取决于命中率 | 中 | 数据提取、翻译 |
Prompt 优化
Prompt 优化是投入产出比最高的成本控制手段。精简 Prompt 不仅能直接减少 Token 消耗,还能降低模型的理解偏差,减少因质量不佳导致的重试调用。
减少 Token 消耗的核心方法
1. 精简系统指令
很多团队在迭代过程中不断往系统 Prompt 里添加指令,却很少回头清理。一个常见的情况是,系统指令长达数千 Token,其中包含大量重复或过时的约束。
- 定期审计系统 Prompt,删除冗余和矛盾指令。
- 用简洁的表述替代冗长的描述。例如「请用中文回答,不要使用英文」可以简化为「回答语言:中文」。
- 将重复出现的指令抽取为模板变量,避免在每次调用中重复发送。
2. 控制输出长度
输出 Token 比输入贵 3~5 倍,控制输出长度的优先级应该高于控制输入长度。
- 在 Prompt 中明确要求简洁回答,例如「用 3 句话回答」。
- 设置
max_tokens参数限制最大输出长度。 - 优先要求结构化输出(如 JSON),结构化输出天然更简洁。
3. 管理上下文窗口
多轮对话中,历史消息会累积成大量输入 Token。
- 不要无脑传递全部历史,只保留最近 N 轮或经过摘要压缩的上下文。
- 对于长文档处理,使用 RAG(Retrieval-Augmented Generation)只检索相关片段,而不是把整篇文档塞进 Prompt。
- 定期评估上下文窗口的大小与任务质量的关系,找到平衡点。
4. 使用结构化输出
要求模型返回 JSON 格式而不是自由文本,有两个好处:Token 更少、解析更可靠。结构化输出还能减少因格式错误导致的重试,间接节省成本。
Prompt 优化的效果参考
通过提示工程的度量标准进行优化,通常可以实现 35%~55% 的 LLM 调用成本降低。关键指标包括:
- 单次调用的平均 Token 数
- 系统 Prompt 的 Token 长度
- 输出 Token 与输入 Token 的比值
- 每次成功交互的成本(而非单纯的每次调用成本)
监控和告警
没有监控就没有优化。如果你看不到钱花在哪里,就无法控制它。
成本仪表盘
一个好的成本仪表盘应该覆盖以下维度:
- 总体趋势:日/周/月的总成本变化曲线。
- 按模型拆分:各模型的调用量和成本占比,识别哪个模型是成本大头。
- 按功能拆分:不同产品功能(如聊天、翻译、摘要)各自消耗了多少成本。
- 按用户拆分:哪些用户或租户的调用量异常高,帮助识别滥用或低效使用。
- Token 分布:输入 Token 和输出 Token 的比例,识别输出过长的功能模块。
常用工具包括 Helicone、LangSmith、OpenLlama、Portkey 等,它们提供开箱即用的 LLM 可观测性面板。也可以基于 Prometheus + Grafana 自建,灵活性更高。
阈值告警
设置多层告警阈值,在成本失控的早期就收到通知:
| 告警级别 | 触发条件示例 | 响应动作 |
|---|---|---|
| 警告(Warning) | 单日成本超过日均值的 150% | 通知到 Slack / 邮件,记录日志 |
| 严重(Critical) | 单日成本超过日均值的 300% | 通知到负责人 + 自动限流 |
| 紧急(P0) | 小时成本超过小时均值的 500% | 自动熔断 + 电话通知 |
告警的关键是阈值要基于历史数据动态计算,而不是固定的绝对值。业务量增长后,告警阈值应该同步上调。
异常检测
除了阈值告警,还需要关注以下异常模式:
- 调用量突增:可能是爬虫、自动化脚本或产品 bug 导致。
- Token 消耗突增:可能是 Prompt 变更加入了大量上下文,或者模型输出变得异常冗长。
- 缓存命中率骤降:可能是缓存配置失效或 Prompt 结构发生了意外变更。
- 单次调用成本飙升:可能是误用了更贵的模型,或者输出 Token 限制被移除。
成本归因
精细化的成本归因能帮助团队做出更明智的决策:
- 给每次 API 调用打上标签(用户 ID、功能模块、模型名称、环境),让成本可追溯。
- 建立「每次成功交互成本」指标,而不是只看总支出。如果花了更多钱但成功率也更高,这笔支出可能是值得的。
- 定期复盘成本趋势,识别持续优化的机会。
实战案例
案例一:SaaS 客服平台的成本优化
一个 B2B SaaS 客服平台,接入 GPT-4 系列模型处理用户咨询。上线初期月均 AI 调用成本约 $12,000,随着客户数增长到 500 家,成本飙升到 $45,000/月,严重压缩利润。
优化措施:
- 模型路由:将 70% 的简单 FAQ 查询路由到 GPT-4.1 Nano,只有复杂问题使用 GPT-4.1。
- 语义缓存:对客服知识库建立语义缓存,相似度阈值设为 0.88。缓存命中率达到 52%。
- Prompt 精简:审计系统 Prompt,从 1,800 Token 压缩到 600 Token,删除冗余指令和过时的 Few-shot 示例。
- 输出控制:将客服回复的
max_tokens从 2,000 降到 500,并在 Prompt 中要求简洁回答。
优化后月均成本降至 $14,000,降幅约 69%,客服满意度评分仅下降 2%(在可接受范围内)。
案例二:内容生成平台的分级策略
一个 AI 写作工具,允许用户生成博客文章、营销文案和社交媒体帖子。初期统一使用 Claude Sonnet,每月 Token 费用约 $8,000。
优化措施:
- 任务分级:社交媒体帖子(短内容)路由到 Claude Haiku,博客摘要路由到 GPT-4.1 Mini,长篇创作保留 Claude Sonnet。
- 批量处理:将非实时的批量摘要生成任务切换为 Batch API,获得 50% 折扣。
- Prompt 缓存:将通用的写作指南和格式要求放在 Prompt 前缀,利用 Anthropic 的 Prompt Caching 节省 90% 的输入 Token 费用。
- 成本仪表盘:搭建 Grafana 面板,按用户、功能模块、模型分别展示成本,设置日成本告警。
优化后月均成本降至 $3,200,降幅约 60%。同时因为引入了 Prompt 缓存,平均响应延迟降低了 35%。
AI 成本控制流程
成本控制检查清单
在上线或优化 AI 功能时,逐项检查以下内容:
- 是否按任务复杂度进行了模型分级路由
- 是否为简单任务选择了轻量模型(Nano / Haiku / Flash 级别)
- 是否实现了语义缓存或精确缓存
- 是否利用了提供商的 Prompt 缓存机制
- 系统 Prompt 是否经过精简审计,无冗余指令
- 是否设置了
max_tokens限制输出长度 - 多轮对话是否只传递必要的上下文,而非全部历史
- 是否搭建了成本仪表盘,按模型/功能/用户维度展示
- 是否设置了成本告警阈值(至少包含警告和严重两级)
- 是否实现了降级策略(主模型不可用时的备用方案)
- 是否对非实时任务使用了 Batch API 获取折扣
- 是否为每次 API 调用打上了归因标签(用户、功能、模型)
- 是否定期(至少每月)复盘成本趋势和优化机会
- 是否测试过 Prompt 压缩工具对 Token 数量的影响
参考资料
- 10 Ways To Reduce Your LLM API Costs — DEV Community, 2026
- The Technical Guide to Managing LLM Costs — Maxim AI, 2025
- Semantic Caching for LLM Apps: Reduce Costs by 40-80% — Percona, 2026
- 8 Ways to Reduce LLM API Costs by 80% — TECHSY, 2026
- LLM 成本控制:预算即产品功能 — 腾讯云, 2026
- AI 成本可视化与控制手册 — 知乎专栏, 2025
- How to Monitor Your LLM API Costs and Cut Spending by 90% — Helicone, 2025
- AI 应用省钱攻略——降低模型成本的七大策略 — 火山引擎, 2024
- Reducing LLM Costs and Latency via Semantic Embedding Caching — arXiv, 2024
- Prompt Caching vs Semantic Caching: How to Make AI Agents Faster — Redis, 2025