Skip to content
预计 1 分钟右侧目录可快速定位

如何量化运行质量:Cost、Latency、Task Success 与 Component Metrics ​

前置:如何把一次 Run 串成完整链路:Correlation、Distributed Trace 与 Redaction
核心问题:总成本或总延迟变坏时,怎样判断问题来自 Model、Tool、Retrieval 还是 Retry,并用什么事实定义 Task Success?

成本突然上涨时可分辨是 prompt 变长、检索 chunk 变多,还是 retry 增加,而不是只看到日账单。代码任务以测试通过+期望文件变更为成功,而不是 final answer 包含“已修复”。

Mental Model ​

先让 Runtime 的真实事件形成 trace/log/metrics,再让 deterministic test 验软件 contract,最后用版本化 Eval 衡量模型/Agent 语义质量。

Token / Cost / Latency Metrics ​

这些指标的价值在于把“这个 Agent 又慢又贵”拆成可定位的成本来源。

至少区分:

text
Model: input/output/cache/reasoning tokens、TTFT、generation time
Tool/Retrieval: latency、timeout、retry
Runtime: queue wait、turn/node count、total wall time
Outcome: task success / failure / degraded

例如总 latency 上升并不一定是模型变慢:可能是 Queue wait 从 50ms 变成 8s。只有把组件指标和同一个 run_id/trace_id 关联,优化才不会找错对象。

Task Success Rate ​

Success 需要基于任务 completion criteria,而不是“模型返回了 final text”。对可确定任务优先程序化判定;开放任务才使用 rubric/human/model judge。

Task Success Rate 必须有可重复的完成定义;不同任务类型可用 deterministic validator、human label 或 rubric。不能把“模型说完成了”当成功。

Component Evaluation ​

Component eval 定位 retriever/tool/planner/context 子系统;end-to-end eval 看真实任务是否完成。只做后者很难定位回归来源。

它与端到端成功率同时存在。

把一次 18 秒 Run 拆开 ​

假设端到端耗时 18 秒:

text
queue wait           2.0s
context assembly     0.4s
model call #1        5.1s
search tool          3.0s
model call #2        6.2s
serialization/etc    1.3s

只记录 run_latency=18s 几乎不能指导优化。拆成 component metrics 后才知道:把 Python 代码优化 30% 可能只省几十毫秒,而减少第二次模型调用或 Tool latency 才是主矛盾。

成本同样要能聚合到 Run:input/output token、cached token、模型单价、Tool 费用、重试次数。然后再看 cost_per_successful_run,而不是只看平均 token。一个便宜但成功率很低、经常 retry 的 routing policy,最终可能更贵。

Failure Modes ​

Trace/Eval 看不到 MCP/Tool 轨迹 ​

症状: 外部协议调用没有统一 span/domain event。

为什么危险: 失败时不知道是 model、adapter、server 还是 policy。

处理: MCP/Tool/Model/Retrieval 映射统一 trace hierarchy,Eval 关联 run_id/trajectory。

如何验证 ​

Case断言
Trace/Eval 看不到 MCP/Tool 轨迹MCP Tool 失败 Run 可从 eval case 下钻 request/span/error。

自测 ​

  1. Task success 不变但成本翻倍。仅看总 token 无法定位原因时,应拆哪些 component metrics?
  2. p95 latency 上升可能来自 model、queue 或 tool。怎样用分段指标避免把所有慢都归因到 LLM?

Sources ​

AI Engineering · Agent · Harness · Backend Systems