用途
align-human 用于衡量自动评判器(judge/grader)与人工判断的一致程度,找出双方分歧所在及原因,并据此制定逐步减少人工复核的路线图。适用于已有可工作的评判器和 50 条以上人工标注样本,想确认评判器是否可信到可以替代人工复核、发现评判结论被人推翻,或准备把评测作为生产门控上线的场景。
主要能力
技能按清单顺序执行七项任务:
- 加载配对数据:把评判器结论与人工标签按 id 配对,报告配对与未匹配数量;当人类标签通过率高于 80% 或低于 20% 时提示类别不平衡风险。
- 测量 TPR/TNR:构建混淆矩阵,计算 TPR、TNR、F1,并按难度等分层输出指标,避免总体指标掩盖边界样本上的失败。
- 计算一致性:计算 Cohen's kappa、Gwet's AC1 以及方向性偏差,判断评判器偏严还是偏宽。
- 偏差检测:检查位置偏差、冗长偏差、自我增强、进度错觉、标签漂移五项系统性偏差。
- 分歧分析:提取评判与人工不一致的样本并归类根因,例如评判提示歧义、人工标注不一致、任务本身主观、标签错误、评判过严或过宽,并给出每类前三个示例。
- 人工减少路线图:给出四阶段过渡计划(Advisory、Assisted、Auto-gate、Autonomous)及进入下一阶段的条件。
- 确认与记录:展示对齐仪表盘(TPR/TNR/F1、kappa、AC1、偏差、置信区间、分层指标、偏差检查结果、当前阶段、分歧模式和最终建议),确认后写出结果。
使用方式
技能提供附带脚本 scripts/calibration.py(仅用标准库,无 OpenJudge 依赖),推荐直接运行而非手写统计:
python scripts/calibration.py --pairs pairs.jsonl
python scripts/calibration.py --verdicts verdicts.jsonl --labels labels.jsonl --stratum-key difficulty
配对数据行格式为 {"id","judge":"pass|fail","human":"pass|fail","stratum"?},judge/human 也可用 1/0。脚本输出混淆矩阵、带 bootstrap 95% 置信区间的 TPR/TNR/F1、Cohen's kappa、Gwet's AC1(自动标注 kappa 悖论)、方向性偏差、分层 TPR/TNR 以及校准门控结论(calibrated / not_calibrated / insufficient_evidence,仅 calibrated 时退出码为 0)。支持 --json 机器输出和 --self-test 自检。
人工标签存放在 labels/<grader_name>.jsonl,每行包含 id、label(pass/fail 或 1/0)、annotator、rationale、timestamp、schema_version 等字段,与数据集分开保存以便与任意评判运行重新配对。正文章节还给出了使用 OpenJudge 分析器(AccuracyAnalyzer、F1ScoreAnalyzer、FalsePositiveAnalyzer、FalseNegativeAnalyzer)度量 TPR/TNR 的参考代码,以及 bootstrap 置信区间函数示例。技能要求始终报告并解释脚本返回的实际数值,而不是只声称已运行;若缺少配对数据,应明确说明缺什么。
适用场景
- 验证评判器能否作为生产环境评测门控。
- 定位评判器在边界或困难样本上的不可靠之处。
- 诊断评判与人工分歧的系统性来源。
- 制定从全人工审核到自动门控再到自主运行的分阶段演进计划。
限制与注意事项
- 需要已有可工作的评判器和至少 50 条人工标注样本;资料未提供少于该数量时的处理方式。
- 原始准确率不能替代 TPR/TNR;kcapa 在类别高度不平衡时可能悖论性偏低,应同时报告 Gwet's AC1。
- 必须进行分层分析,总体指标可能掩盖边界样本的失败(进度错觉)。
- 评判模型与目标模型应为不同模型,自我评估会使 TPR 虚高。
- 评判提示迭代存在收益递减,连续 3 次迭代 kappa 提升不超过 0.03 时应停止并补充标注数据。
- 资料未说明该技能的收费、平台限制或运行环境要求。