一个**指标(metric)**一次给一条 item 打分,并定义其逐项分数如何聚合。指标与套件解耦:
一次运行可在同一批 items 上应用多个(套件的客观分在其 evaluator 里;附加项——answered-rate、
成本效率、LLM 判定 rubric——无需 fork evaluator 即可接入)。
需要套件发出逐项 items(Evaluator.items(raw)),因为指标是对 items 打分。内置的
mmlu / gsm8k / human-eval 套件都有。
运行一个指标
在 evaluator 上绑定,或按运行 opt-in:
指标在 <suite_id>.<metric_id> 下发出测量,并给每条 item 追加一个逐项 ItemScore
(4 态:ok / fail / skip / error)。指标是隔离的:一个指标在某条 item 上抛异常
会被记为 status="error" 且运行继续——绝不作废整次运行或另一个指标。
参考指标:answered-rate
确定性、无判定:被测系统实际作答的 item 比例(output 非空)。answered-rate 是它的
入口点名称;它的指标 id 是 answered_rate——写进 extra_metrics 和测量键里的是
这个 id。开箱绑定到 mmlu / gsm8k
→ 它们也发出 mmlu.answered_rate / gsm8k.answered_rate。一个模型可以在它作答的部分很准,
却答得很少。
写你自己的
注册并绑定或 opt-in:
required_inputs 按 item 校验:缺必需字段的 item 记为 skip(不计入聚合),绝不崩溃。
从 score_item 返回 None 表示该指标不给这条 item 打分。
默认 aggregate() 用 core.aggregate——ratio/mean(带 Wilson 或正态置信区间)、
geomean、百分位——作用于该指标的 ok/fail 分数;skip/error 不计入分母。覆写
aggregate() 做自定义形状,或发出按 group 的切片(如 MMLU 按学科)。