在质量、时延与预算之间选择配置
用明确质量门槛比较时延与成本,区分缺失指标、预算超限和真实费用上限。
在质量、时延与预算之间选择配置
把更便宜的模型接上后,单次用量下降了,但失败和重试增加,整个任务可能反而更贵。选择配置时,应先定义可接受质量,再比较同条件任务的时延与全部尝试消耗。
这篇不重复搭建计时器,使用前面评测记录的运行结果。计时与用量的采集细节见调试模块,这里关注这些数值能否支持选择。
独立示例位于仓库 columns/coding-agent/examples/evaluation-optimization/,固定 Pi 相关依赖为 1.5.0。先在该目录执行 npm install,下文命令也从此处运行。离线样本不需要密钥;真实模型入口另行配置,不会由测试自动触发。
用门槛表达约束,而非随意加权
src/budget.ts 先检查覆盖率,再检查质量、时延与成本。缺失预算时返回 review,不能因为没有数据就认为免费。
export interface DecisionInput {
passRate: number | null
scored: number
planned: number
meanMs?: number
costKnownTotal: number | null
costAvailable: number
}
export function decide(
row: DecisionInput,
policy: { minimumPassRate: number; maxMeanMs: number; maxCost: number },
) {
if (
!Number.isSafeInteger(row.planned) ||
row.planned < 1 ||
row.scored !== row.planned ||
row.passRate === null ||
row.meanMs === undefined ||
row.costKnownTotal === null ||
row.costAvailable !== row.planned
) {
return { decision: "review", reason: "样本或预算指标不完整" } as const
}
const numbers = [
row.passRate,
row.meanMs,
row.costKnownTotal,
policy.minimumPassRate,
policy.maxMeanMs,
policy.maxCost,
]
if (
numbers.some((value) => !Number.isFinite(value) || value < 0) ||
row.passRate > 1 ||
policy.minimumPassRate > 1
) {
throw new Error("质量或预算数据无效")
}
return row.passRate >= policy.minimumPassRate &&
row.meanMs <= policy.maxMeanMs &&
row.costKnownTotal <= policy.maxCost
? ({ decision: "eligible", reason: "符合当前教学门槛" } as const)
: ({ decision: "reject", reason: "未满足质量或预算约束" } as const)
}调用方给出的 minimumPassRate、maxMeanMs、maxCost 都是当前实验策略,没有通用最佳值。四个任务上的平均时延也不足以表达尾部体验;更成熟的评估需要样本量、分位数与按任务分类的分布。
eligible 只表示符合这组教学门槛,不代表自动批准发布或对所有用户都最优。若某个关键任务不允许退步,应另设逐任务硬约束,而不能靠总体平均分掩盖。
先说明每一笔费用对应什么
真实服务未返回用量时要标缺失。价格由模型目录估算也不等于账单,还可能受缓存、分层价、服务端计价和协议支持影响。本例 live 报告未填 estimatedCost,因此默认不能通过需要完整费用的预算筛选。
模型与思考配置需要同条件比较
当前 live 比较固定同一个模型并使用 thinkingLevel=off,主要观察 prompt/tool/context。若要比较模型或思考等级,应作为新的实验因素,记录各自支持范围和实际生效值,不能把旧实验的模型标识偷偷替换后继续沿用协议。
不应只选一组简单任务证明更小配置够用。针对长上下文、错误恢复和多步操作保留代表任务,比较质量门槛是否仍满足,再决定是否路由或设置备用模型。
本地预算是软停止
运行器默认每任务等待三十秒、观察最多四回合与六次工具调用。达到条件后取消,并在下一次模型请求边界再检查,避免不遵守信号的模拟流无限继续。
工具开始事件发生时,相关调用可能已经进入执行链;已发出的请求也可能继续计费。AbortSignal 是协作机制,不提供精确金额硬上限。真硬约束需要服务端额度、独立进程超时等可执行边界,且仍应说明外部副作用不能自动回滚。
预算超限应怎样进入报告
预先声明的预算被耗尽,可以作为任务约束失败记录为 state=scored、passed=false,保留在分母中;连接异常或评测适配器坏掉则可能无法判定,应阻止 headline。
这两种状态分开后,才知道是配置效率不够,还是评测环境不能支持结论。不要靠延长所有超时、跳过异常样本或反复重跑到成功,让预算比较失去原本含义。
依据与版本
官方本地快照为 8efd314fa,evals 包标记 1.3.0;本系列示例另按发布包 1.5.0 核验。官方 evals 是 private 工作区包,教程使用自定义教学协议,不冒充稳定公共评测 SDK。