成本控制清单
大模型 API 接入较快,但如果缺少成本控制机制,业务上线后可能出现费用增长过快、单个功能消耗异常或批量任务费用超出预期等问题。AI 助手、Agent、知识库问答、代码生成和批量处理场景尤其需要在上线前建立成本控制机制。
为不同业务创建独立 API Key
不建议所有环境和业务共用同一个 API Key。建议按以下维度拆分:
| Key 类型 | 用途 |
|---|---|
| 开发环境 Key | 本地开发、调试和联调 |
| 测试环境 Key | QA、预发布和自动化测试 |
| 生产环境 Key | 线上真实用户调用 |
| 业务线 Key | 区分不同产品、功能或团队 |
| 批处理 Key | 单独管理离线任务和批量任务 |
拆分后,可以在用量统计中清楚看到不同来源的 Token 消耗,也方便异常时快速定位和处理。Key 拆分不是权限控制的替代品,仍应为每个 Key 设置最小权限、来源限制和轮换流程。
给调用链路增加限制
成本控制也是系统稳定性控制。上线前建议增加:
- 单用户调用频率限制
- 单任务最大调用轮次限制
- 单次请求最大输入长度限制
- 单次输出 Token 上限
- 失败重试次数限制
- 批量任务总量限制
- 图片数量、尺寸和质量限制
- 视频最大时长、FPS、分辨率和并发限制
- 音频时长、文件大小和单任务处理时长限制
- 异常消耗告警
Agent 场景尤其需要同时控制自动循环次数、工具调用次数和模型请求总数,避免任务无法完成时反复消耗 Token。一次用户操作可能触发多次规划、工具结果总结和重试请求,不能只按用户点击次数做预算。
明确不同任务使用什么模型
很多成本浪费来自所有任务都使用高性能模型。更合理的方式是做模型分层:
| 任务类型 | 建议模型策略 |
|---|---|
| 文本分类、标签判断 | 低成本模型 |
| 内容摘要、格式改写 | 通用模型 |
| 复杂推理、代码生成 | 高性能模型 |
| 长文档分析 | 支持长上下文的模型,并控制输入范围 |
| 多轮 Agent | 先用低成本模型规划,关键步骤再调用高性能模型 |
如果业务对效果要求较高,可以先建立评测集,用实际样本比较不同模型的质量、延迟和完整调用成本,再决定默认模型。多模态场景还要确认模型是否支持目标输入类型,以及输入媒体的计费规则,不要只比较文本 Token 单价。
控制上下文
大模型上下文越长,输入 Token 越多,成本通常也越高。上线前检查:
- 是否每次都传入完整历史对话?
- 是否把整篇文档传给模型,而不是相关片段?
- 是否携带过多系统说明、工具描述和示例?
- 是否存在重复字段、无用 JSON 或过长日志?
- 是否可以通过检索、摘要或缓存减少输入?
- 是否把时间戳、用户问题和实时数据误放进缓存前缀?
知识库问答应优先传入命中的片段,而不是整篇文档;多轮对话则应定期压缩历史上下文。稳定且会被短时间内重复使用的长上下文可以测试缓存,但要用缓存读取 Token 和实际费用验证收益,不能只因为设置了 cache_control 就认为成本会下降。
控制输出长度
输出费用取决于具体模型的计费项。无论输出单价高低,限制无用输出都能减少延迟、上下文膨胀和后续轮次的输入成本。建议在提示词或 API 参数中设置:
- 最大输出 Token 数
- 固定输出结构
- 字数或条数限制
- 不需要解释过程时直接给结论
例如,将“请详细分析”改成“请用 5 条要点总结,每条不超过 50 字”。
上线后持续监控
| 指标 | 用途 |
|---|---|
| 总 Token 消耗 | 判断整体成本趋势 |
| 按模型消耗 | 找出主要成本来源 |
| 按 API Key 消耗 | 定位业务线或环境 |
| 输入 / 输出占比 | 判断是上下文过长还是生成过长 |
| 缓存读取占比 | 判断稳定长上下文是否真正命中缓存 |
| 单次操作模型请求数 | 识别 Agent 循环、工具调用和重试放大的成本 |
| 图片 / 视频媒体参数 | 解释媒体输入或生成成本的变化 |
| 请求失败率 | 避免失败重试带来额外消耗 |
| 账户余额 | 避免余额不足导致服务中断 |
建立预算和告警
不要只设置一个月度总预算。至少按模型、API Key、租户或业务线拆分预算,并为以下指标设置日、周或月阈值:
- 单位时间 Token 或媒体任务用量较过去基线的增长比例。
- 单次用户操作的平均模型请求数和 P95 请求数。
- 单个 API Key 的消费占比和异常增量。
- 图片、视频任务的提交数、终态失败数和平均生成参数。
- 缓存命中率、缓存写入量和单位任务成本。
告警触发后先暂停批处理或降低并发,再通过请求 ID、任务 ID 和 API Key 定位来源;不要直接通过无限重试来“恢复”业务。
小结
大模型成本控制应在上线前完成设计,而不是等账单异常后再处理。通过 Key 与权限拆分、请求和媒体参数限制、模型评测、上下文压缩、缓存验证、幂等重试和持续监控,团队才能解释每一笔费用从哪里产生。