成本控制
核对日期:2026-05-09。模型价格、批处理折扣、缓存计费和速率限制变化较快,实际数值必须以上游官方价格页和控制台为准。
1. 定义与边界
成本控制是对 Agent 运行中产生的模型 token、工具调用、检索、队列、存储、观测和人工审批成本进行预算、测量、优化和限制。它不是简单选择最便宜模型;错误模型路由可能降低任务成功率,反而增加重试和人工处理成本。
2. 为什么重要
Agent 的成本具有放大效应:多轮推理、工具失败重试、长上下文、RAG 返回过多文档、评测批处理和 trace 存储都会叠加。生产系统需要在质量、延迟和成本之间建立可解释策略。
3. 核心机制
每次 run 记录成本账本:
{
"run_id": "run_01",
"tenant_id": "tenant_a",
"model_calls": [
{"model": "gpt-x", "input_tokens": 8000, "output_tokens": 500, "cached_tokens": 3000}
],
"tool_calls": [{"name": "search", "count": 2, "estimated_cost_usd": 0.01}],
"queue_seconds": 5,
"trace_bytes": 42000,
"budget_policy": "support_standard",
"estimated_total_usd": 0.08
}
预算控制链路:
4. 架构模式
| 模式 | 适用场景 | 风险 |
|---|---|---|
| 固定模型 | 场景单一、质量优先 | 成本无法随任务难度变化。 |
| 模型路由 | 任务难度差异大 | 路由器错误会影响质量。 |
| 上下文预算 | 长会话、RAG | 裁剪错误会丢关键事实。 |
| 批处理 | 离线评测、非实时任务 | 延迟增加,不适合交互链路。 |
| 成本配额 | 多租户或内部平台 | 配额策略要避免误伤关键业务。 |
5. 工程实现
成本预算器:
def enforce_budget(ctx, planned_calls):
estimate = cost_estimator.estimate(planned_calls, ctx.model_policy)
remaining = budget_store.remaining(ctx.tenant_id, ctx.period)
if estimate > remaining.hard_limit:
raise BudgetExceeded()
if estimate > remaining.soft_limit:
return downgrade_plan(planned_calls)
return planned_calls
可控杠杆:
- 限制最大轮数、最大工具调用次数、最大上下文 token。
- 对低风险分类、摘要、抽取使用小模型或批处理。
- 使用 prompt caching、检索缓存、工具结果缓存。
- 对失败重试设置预算上限。
- 对 trace 原文设置采样和保留策略。
6. 生产实践
- 成本按
tenant_id、agent_id、feature、model、run_id聚合。 - 每个 Agent 定义单次 run 的软/硬预算。
- 高成本操作在用户或业务系统确认后执行。
- 评测环境与生产环境分账,避免离线评测挤占线上预算。
- 成本优化必须同时看任务成功率,不能只降 token。
7. 常见反模式
- 无限制把完整历史、完整文档和完整工具结果塞给模型。
- 对所有任务使用最强模型。
- 工具失败后无限重试模型推理。
- 只按总账单分析,不知道哪个 Agent 或 Prompt 版本放大成本。
- 关闭 trace 省成本,导致故障不可诊断。
8. 评测方法
- 单任务成本:按成功任务计算平均成本,而不是按请求。
- 成本质量曲线:比较不同模型、上下文预算、缓存策略的成功率与成本。
- 预算压力测试:模拟租户达到配额后的降级路径。
- 异常检测:模型调用量、token、重试次数突然上升时告警。
9. 安全与治理
- 防止攻击者通过超长输入、循环任务或工具诱导放大成本。
- 对匿名或低信任用户设置更严格预算。
- 成本日志不应暴露完整 Prompt 和敏感数据。
- 预算绕过需要审批和审计。
10. 权威资料
- OpenAI Pricing: https://openai.com/api/pricing/
- OpenAI Batch API: https://developers.openai.com/api/docs/guides/batch
- OpenAI Prompt caching: https://developers.openai.com/api/docs/guides/prompt-caching
- OpenAI Rate limits: https://developers.openai.com/api/docs/guides/rate-limits
- Anthropic Prompt caching: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
- Google Cloud FinOps hub: https://cloud.google.com/billing/docs/how-to/finops-hub
11. 二次精修:Agent 成本模型
Agent 成本要按一次任务而不是一次模型调用核算。建议在 trace 中记录每个 run 的成本分解。
unit_success_cost =
(model_input_cost
+ model_output_cost
+ tool_api_cost
+ vector_db_cost
+ queue_worker_cost
+ human_review_cost
+ replay_eval_cost)
/ successful_tasks
| 成本项 | 来源 | 控制手段 |
|---|---|---|
| 输入 token | prompt、历史上下文、RAG 文档 | 上下文裁剪、摘要、缓存 |
| 输出 token | 推理过程和最终答案 | max output、结构化输出 |
| 工具调用 | 搜索、浏览器、数据库、第三方 API | tool budget、结果缓存 |
| 重试成本 | 模型重试、工具重试、整单重跑 | 错误分类、幂等、checkpoint |
| 人工审核 | 高危操作审批、质检 | 风险分层、抽样策略 |
| 评测成本 | CI、回放、judge 模型 | 分层 eval、样本抽样 |
12. 成本预算流程
{
"budget_event": {
"run_id": "run_123",
"model": "gpt-5",
"input_tokens": 4200,
"output_tokens": 900,
"tool_calls": 3,
"estimated_cost_usd": 0.18,
"budget_remaining_usd": 0.32,
"cost_center": "support_agent"
}
}
13. 成本治理与告警
- 按租户、用户、Agent、工具、模型、版本六个维度聚合成本。
- 对单 run 设置硬上限,对日预算设置软告警和熔断。
- 成本优化必须同时看成功率,不能只把模型换小导致返工率上升。
- 异常成本要能回溯到 trace:是哪一步、哪个工具、哪个 prompt 版本导致。
- 安全上要防 prompt injection 诱导 Agent 无限调用工具、读取超大文档或生成超长输出。
14. 补充权威资料
- OpenAI API pricing: https://openai.com/api/pricing/ (核对日期:2026-05-09)
- OpenAI usage and limits: https://platform.openai.com/docs/guides/rate-limits (核对日期:2026-05-09)
- AWS Cost Optimization Pillar: https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/ (核对日期:2026-05-09)