返回 AICAP-180
B4 · Day 38reasoning/planning/multi-agent + 何时不用 agent

cost/latency 度量

Day37 我们用 accuracy Δ + token 倍数比了单 vs 多 agent,但 accuracy 只是可靠性的一个面。今天在 B1→B18 曲线上把「可靠性」从一维(准确率)扩成三维:

阶段: B4 · reasoning/planning/multi-agent + 何时不用 agent(Day 31-40) 标签: #reliability #p95-latency #unit-cost #variance

今日导引(由浅入深)

Day37 我们用 accuracy Δ + token 倍数比了单 vs 多 agent,但 accuracy 只是可靠性的一个面。今天在 B1→B18 曲线上把「可靠性」从一维(准确率)扩成三维

  • accuracy
  • 延迟(p50/p95)
  • 单位成本

原因是评审一定会追问「这套架构多快、多贵、抖不抖」——只报 accuracy 是 B4 明令禁止的单维偷懒。最小可判定产出:workflow / 单 agent / supervisor-worker × cost / p95 / variance 的 3×3 = 9 数字矩阵(依赖真实 model 跑的数字待 key)。

1. 机理精读

可靠性是三维,不是一维。一个 agent 方案能不能上生产,由三个正交维度共同决定:

① accuracy(Day33-37 已建口径):judge.label==='pass' 占比,配 bootstrap 95% CI。

② 延迟(latency)。关键是报 p95/p99 而非均值

  • LLM agent 延迟分布长尾很重:多数请求 2s,少数因重试 / 工具超时 / 长上下文飙到 20s。
  • 均值被长尾拖偏又掩盖长尾;p95(95% 请求快于此值)才暴露用户实际感知的「卡顿天花板」。
  • p50 给典型体验,p95 给最坏可接受边界,p99 给极端尾部。

③ 单位成本(unit cost)

  • 单位 token 成本 = (prompt + completion tokens) × 单价
  • 这是把 Day37 的 token 倍数换算成钱:多 agent token 翻 2× 直接意味着成本翻 2×。
  • AISA 选型论证里「为什么不上多 agent」最有说服力的就是这条单位成本。

variance 本身就是可靠性维度。同一任务多次跑,若 accuracy/延迟方差很大(一会儿对一会儿错、一会儿快一会儿卡),即便均值好看,生产里也不可用——用户要的是可预测。所以 variance(用 std 度量)要和均值并列报,这呼应 Day33《Don't Pass@k》对「只报均值不报方差」的批评。

参考 Anthropic《Demystifying evals》(2026-01)的多维度量主张:eval 不是单个准确率数字,而是 accuracy + 成本 + 延迟 + 校准的组合。

2. 推导 / 手算 / 代码走读

本仓 src/agent/eval/stats.ts 已实现今天三维度量需要的全部纯函数(无 key、确定性),逐条走读:

  • mean(xs)stats.ts:5)/ sd(xs)stats.ts:10):均值与样本标准差(分母 n-1n<2 返回 0)。sd 就是 variance 维度的度量函数。
  • percentile(sorted, p)stats.ts:17):线性插值分位数。p95 延迟 = 把 n-run 的延迟样本排序后取 percentile(sorted, 95)。注意输入须已排序
  • summarizeLatency(samplesMs)stats.ts:76):一步出 { n, p50, p95, p99, mean },内部先 [...samplesMs].sort() 再调 percentile。文件注释明示「p95/p99 surface the tail that the mean hides」——正是今天的机理。
  • pairedBootstrapstats.ts:36):算 accuracy Δ 的 95% CI(Day35 用过),三维里 accuracy 列的显著性背书。
  • 延迟/成本的真实采集点src/agent/eval/agentEval.ts
    • makeModelGenerateagentEval.ts:150)里 latencyMs: Date.now() - t0:163)记真实墙钟延迟;
    • costUsd 仅当 MODEL_PRICES[modelName] 命中且 token usage 存在时才由 estimateCost 算出,否则留 undefined 而非静默 0agentEval.ts:159-163,文件注释强调「never a silent 0」)——这保证成本数字不会被臆造。

最小手算(p95 取法,占位样本)

  1. 8 任务各跑 5 次得 40 个延迟样本 → 排序。
  2. idx = (95/100) × (40 − 1) = 0.95 × 39 = 37.05
  3. lo = 37, hi = 38, w = 0.05
  4. p95 = sorted[37] × (1 − 0.05) + sorted[38] × 0.05

真实数字待 key 后由 summarizeLatency 产出;这里只走通插值口径。

为什么 variance 用样本 std(n-1)而非总体 std(n)

  • 我们只有 8 任务的样本,不是全体任务总体;用 n-1(贝塞尔修正)让样本方差对总体方差无偏,避免低估抖动。
  • stats.ts:13xs.reduce(... ) / (xs.length - 1) 正是这个修正;n<2sd() 返回 0(stats.ts:11),避免除零。
  • 这一选择与 Day35 的 requiredNForDeltastats.ts:59,用样本 sd 估所需 N)一致,统计口径全仓统一。

三维如何喂给 Day40 的 gate

  • accuracy 列 → pairedBootstrap 出 95% CI,判 agent 是否显著更准;
  • p95 列 → summarizeLatency().p95,判延迟是否在可接受边界内;
  • variance 列 → sd(),判方案是否可预测;
  • cost 列 → estimateCost 累加,判单位成本。
  • 四列任一让 workflow 占优、且 accuracy CI 跨 0,gate 即倾向「不用 agent」。这就是把「多维度量」从一张报表变成一条可执行判据。

三维矩阵的形状(9 个数字,真实数字待 key):

方案 \ 指标costp95variance
workflow
单 agent
supervisor-worker

3. 今日实战

  1. 对三方案(workflow / 单 agent / supervisor-worker)各在 8 任务上采集三列:cost、p95 延迟、variance。
  2. cost:从 agentEval.tsmakeModelGenerate 返回的 costUsd 累加(未定价模型保持 undefined,不算 0)。
  3. p95:把 n-run 各次 latencyMs 收集成数组,调 summarizeLatency().p95
  4. variance:把各次 accuracy/延迟样本调 sd()
  5. 填进 3×3 矩阵(行 = 三方案,列 = cost / p95 / variance),写进对比文档。

4. 今日实测 / 产出

  • stats.tsmean / sd 已实现测试绿
  • 矩阵 9 个数字含真实 model 跑的成本/延迟,故「待跑(需 key)」。
  • p95/variance 计算管线离线可验
  • 产出:3 方案 × 3 指标 = 9 个数字矩阵

5. 常见误区 / 陷阱

  • 只看 accuracy 单维:评审必问成本/延迟,单维选型会被当场问倒。
  • 用均值代替 p95:均值被长尾拖偏又掩盖长尾,生产卡顿全藏在 p95-p99 区间。
  • 未定价模型把成本当 0costUsd 必须保持 undefined,silent 0 会让多 agent「看起来免费」误导选型。
  • 忽略 variance:均值好看但方差大 = 不可预测 = 不可上生产。

6. 学习资源(每条带 YYYY-MM)

  • Anthropic《Demystifying evals》(2026-01)——多维度量(accuracy + 成本 + 延迟 + 校准)主引用。
  • 本仓 src/agent/eval/stats.tsmean / sd / percentile / summarizeLatency 纯函数,离线可验)。
  • 本仓 src/agent/eval/agentEval.tsmakeModelGenerate 真实采集 latencyMs / costUsd,never silent 0)。
  • 本仓 src/agent/shared/cost.tsMODEL_PRICES + estimateCost,单位成本来源)。

SOTA检查 (2026-06 更新)

《Demystifying evals》(2026-01) 是当前 eval 方法论主引用,多维度量(accuracy / 延迟 / 成本 / 校准)现行有效。

  • 避免:只看 accuracy 单维——评审会问成本/延迟;用均值掩盖长尾(必报 p95/p99);未定价模型把成本算成 0。
  • 下次复查点:Anthropic 是否在 2026 后续更新 eval 方法论(关注是否新增校准/红队维度);模型单价(MODEL_PRICES)执行当周复验。

衔接

  • 昨天:Day 37 — 单 agent vs 多 agent(accuracy Δ + token 倍数)。
  • 今天:把可靠性扩成 accuracy + p95 延迟 + 单位成本 + variance 三维,产出 3×3 矩阵。
  • 明天:Day 39 — pass@k + pass^k 实测(用可靠性的「全过」口径找脆弱任务)。