Token与成本监控
1. 定义与边界
Token 与成本监控跟踪 Agent 在模型调用、上下文构造、检索、工具调用、重试和人工接管中的资源消耗。它关注单位任务成本和异常增长,而不是只看总账单。
2. 为什么重要
Agent 的成本可能被长上下文、重复检索、循环调用、失败重试、工具超时和注入攻击放大。没有成本监控,团队往往到月底账单或用户投诉时才发现问题。
3. 核心机制
成本需要按 trace 聚合:
4. 工程实现
成本字段:
{
"trace_id": "tr_001",
"task_type": "support_refund",
"model": "example-model",
"input_tokens": 6400,
"output_tokens": 820,
"cached_tokens": 1200,
"model_cost_usd": 0.031,
"tool_cost_usd": 0.004,
"retry_count": 2,
"unit_success_cost_usd": 0.035
}
预算策略:
budgets:
support_refund:
max_trace_cost_usd: 0.08
max_model_calls: 8
max_tool_calls: 12
max_context_tokens: 32000
on_exceed: "handoff_or_summarize"
5. 生产实践
- 按任务类型、租户、渠道、Agent 版本和模型版本切分成本。
- 对成本突增设置告警,尤其关注重试和长上下文。
- 对高频任务优化 prompt、上下文裁剪、缓存和工具批处理。
- 把成本和成功率一起看,避免“省钱但成功率崩掉”。
6. 常见反模式
- 只在账单系统看总费用。
- 不记录失败任务成本,低估问题严重性。
- 没有 per-trace 预算,单个异常任务无限消耗。
- 上下文拼接没有裁剪策略。
7. 评测方法
| 指标 | 用途 |
|---|---|
| Cost per Task | 单任务平均成本 |
| Cost per Successful Task | 单成功任务成本 |
| Token per Task | 上下文和输出规模 |
| Retry Cost Ratio | 重试成本占比 |
| Cost Outlier Rate | 超预算任务比例 |
| Cache Hit Savings | 缓存节省估算 |
8. 安全与治理
异常成本可能是滥用、注入或死循环信号。预算超限时应优先停止危险动作,给用户透明说明并转人工或降级。
9. 权威资料
- OpenAI production best practices: https://platform.openai.com/docs/guides/production-best-practices (核对日期:2026-05-09)
- OpenTelemetry metrics: https://opentelemetry.io/docs/concepts/signals/metrics/ (核对日期:2026-05-09)
- Google SRE Book - Monitoring Distributed Systems: https://sre.google/sre-book/monitoring-distributed-systems/ (核对日期:2026-05-09)
15. 主控验收清单
- 是否能计算单次 run、单任务成功、单租户、单版本成本。
- 是否区分 input、output、cached input token。
- 是否把工具、向量库、队列 worker 和人工审核纳入成本。
- 是否有单 run 硬预算和日预算软告警。
- 是否能定位成本突增对应的 prompt_version。
- 是否能识别重试和循环造成的成本放大。
- 是否将 cost per success 作为主指标。
- 是否对失败任务单独报告浪费成本。
- 是否在降级后继续监控成功率。
- 是否定期校准价格表和供应商账单。
- 是否限制成本明细中的敏感字段。
- 是否把超预算样本加入回归评测。
10. 二次精修:成本指标模型
Token 与成本监控必须从“模型调用”提升到“成功任务”层面,否则看不出重试、工具、人工审核带来的真实成本。
{
"event_name": "agent.cost_recorded",
"run_id": "run_123",
"agent_id": "refund_agent",
"model": "gpt-5",
"prompt_version": "refund.system@2026-05-09.3",
"input_tokens": 5200,
"output_tokens": 850,
"cached_input_tokens": 3000,
"tool_cost_usd": 0.04,
"model_cost_usd": 0.12,
"total_cost_usd": 0.16,
"task_success": true
}
| 维度 | 必看原因 |
|---|---|
| Agent/version | 发现某版本成本异常 |
| Tenant/user tier | 控制租户预算 |
| Model | 比较模型路由效果 |
| Prompt version | 发现 prompt 膨胀 |
| Tool combo | 识别高成本工具路径 |
| Success/failure | 计算有效成本 |
11. 成本仪表盘
| 面板 | 指标 |
|---|---|
| 总览 | 今日成本、预算使用率、cost per success |
| 模型 | input/output/cached tokens、模型成本 |
| 工具 | 工具调用成本、失败重试成本 |
| 版本 | prompt/model/tool version 成本差异 |
| 异常 | 单 run 超预算、租户突增、循环调用 |
12. 告警规则示例
alerts:
- name: "AgentDailyBudgetBurn"
expr: "daily_cost_usd / daily_budget_usd > 0.8"
severity: "warning"
- name: "CostPerSuccessSpike"
expr: "cost_per_success_usd > baseline * 1.5"
severity: "page"
- name: "RunCostHardLimit"
expr: "run_cost_usd > run_budget_usd"
severity: "critical"
13. 安全联动与治理
- prompt injection 导致长输出、循环工具、批量检索时,成本告警要联动安全事件。
- 预算熔断要保留用户可解释结果,不应静默失败。
- 成本明细不能包含完整 prompt 或隐私输入。
- 模型价格和缓存规则会变化,成本计算器要版本化并定期校准。
- 指标:Cost Per Success、Retry Cost Ratio、Budget Breach Count、Token Waste Rate、Cost Attribution Coverage。
14. 补充权威资料
- OpenAI API pricing: https://openai.com/api/pricing/ (核对日期:2026-05-09)
- OpenTelemetry metrics: https://opentelemetry.io/docs/concepts/signals/metrics/ (核对日期:2026-05-09)