AI 功能刚上线时,调用量不大,成本还不明显。随着用户增长、功能增多,很多团队会突然发现每月的 API 账单已经成为一笔不小的开支。大模型成本优化的空间往往比想象中大,而且很多优化并不会牺牲效果。 关键是先看清钱花在了哪里,再有针对性地采取措施。

第一步:分析成本构成

在优化之前,先建立成本的可观测性:

  • 按功能、按模型统计调用次数和 Token 用量;
  • 区分输入 Token 和输出 Token,大多数服务的输出单价高于输入;
  • 找出成本最高的功能和请求类型;
  • 分析单次请求的输入构成:系统提示、对话历史、检索内容、工具定义各占多少。

很多团队分析后会发现,相当一部分成本来自少数几个功能,或者来自每次都重复发送的冗长系统提示。Token 的计算方式可参考 Token 与分词器。

优化方法

1. 利用提示缓存

许多服务商对重复出现的输入前缀提供缓存折扣,缓存命中部分的价格明显低于正常输入。要充分利用这一点:

  • 把固定不变的内容(系统提示、工具定义、参考文档)放在请求的最前面;
  • 把变化的内容(用户问题、动态数据)放在后面;
  • 保持固定部分的内容完全一致,即使微小的改动也会导致缓存失效。

原理见 KV Cache 详解。

2. 模型路由

不是每个请求都需要最强的模型:

  • 简单的分类、抽取、格式转换任务使用小模型;
  • 复杂推理、重要输出才使用大模型;
  • 可以先用小模型尝试,判断结果置信度不足时再升级到大模型;
  • 用一个轻量的分类器或规则判断请求的复杂度,自动分配模型。

模型价格可能相差一个数量级以上,合理的路由能大幅降低平均成本。前提是用评测集验证小模型在对应任务上的效果是否达标,参见如何构建评测集。

3. 精简提示词

  • 删除系统提示中重复、冗余、过时的说明;
  • 用简洁的结构化格式代替冗长的自然语言描述;
  • 少样本示例只保留最有代表性的几个;
  • 只提供当前任务需要的工具定义,而不是全部工具。

4. 控制上下文增长

  • 对话历史定期摘要压缩;
  • 检索内容控制数量和长度,通过重排序选出最相关的少量片段,参见重排序模型指南;
  • 工具返回结果只保留必要字段。

5. 控制输出长度

输出 Token 通常更贵。明确要求简洁回答,设置合理的最大输出长度,结构化输出时避免冗长的字段名和不必要的解释文字。对于推理模型,根据任务难度设置合适的思考预算。

6. 批量处理

对于不需要实时响应的任务,如数据标注、内容审核、批量摘要,使用服务商提供的批处理接口,通常能获得明显的价格折扣。

7. 结果缓存

对于完全相同或高度相似的请求,直接返回缓存的结果。适用于常见问题、固定内容的生成等场景。注意设置合理的过期时间,避免返回过时信息,也不要在不同用户之间错误复用个性化内容。

8. 减少不必要的调用

  • 能用规则、正则表达式或传统算法解决的问题,不调用大模型;
  • 避免 Agent 陷入循环调用,设置最大步数;
  • 检查是否存在重复调用,例如同一内容被多个模块分别处理。

9. 考虑自建或混合部署

当某类任务调用量很大且稳定时,使用自建的开源小模型处理可能更划算,测算方法见自建大模型推理还是调用 API。

建立成本治理机制

  • 设置预算和告警:为每个功能设定成本预算,超出时及时告警;
  • 成本纳入评测:比较不同方案时,同时考虑效果和每次请求的成本;
  • 定期复查:模型价格和能力在持续变化,定期重新评估模型选择;
  • 防止滥用:对单个用户设置调用频率和用量上限,防止恶意刷量导致成本失控。

小结

大模型成本优化的核心是:先看清成本构成,再从缓存、路由、精简、控制、批量和缓存结果等多个方向入手。很多优化在降低成本的同时还能减少延迟。把成本纳入日常评测和监控,才能让 AI 功能在规模化过程中保持经济可行。