Statgate:为 LLM 评测提供统计校准的 CI 门禁工具
开发者推出 Statgate,用 bootstrap 与序贯检验替代 LLM 评测中的简单阈值对比,减少误判并支持早期停…
在 LLM 应用团队中,CI 流水线里常见的「评测门」往往设置得很粗糙:候选模型在新版评测集上分数下降一两个点,就直接判定为回归并阻断合并。Statgate 项目作者指出,这种做法在样本量较小的评测集上几乎等同于抛硬币,真正可复现的信号远少于肉眼所见;更糟糕的是,团队要么对噪声过度敏感,要么干脆忽略红色叉号。Statgate 试图在评测执行器与合并按钮之间加入一层统计学判断,给出更可靠的 ship / block 结论。
核心思路:配对 bootstrap 与可配置容差
Statgate 不调用任何大模型,也不发起网络请求,仅依赖 numpy、click、rich 和 pydantic。它读取两套评测结果(基线与候选),按 case_id 配对后做自助法(bootstrap)差值分布估计,并产出三类结论:
- SHIP:候选与基线在统计意义上非劣,可以合并;
- BLOCK:回归真实存在,并非噪声;
- INCONCLUSIVE:样本不足以判断,并给出达到目标检验力所需的用例数建议。
运行通过退出码 0/1/2 表达上述结论,工具自身故障(如文件缺失)则返回 3,便于流水线区分「门禁已决策」与「门禁异常」。
关键能力:序贯检验与极简集成
工具提供几类常用命令。其一是 compare,对两个结果文件执行配对分析并给出置信区间;其二是 power,回答「当前评测集能否检出指定幅度的回归」这一容易被回避的问题;其三是 sequential 模式,应用 always-valid 停止边界,一旦累计证据足够即可在远未用完全部用例时就结束,从而节省 75% 左右的评测开销,官方示例在 80 条用例中仅用 20 条即发现回归。
Statgate 同时提供 GitHub Action,可在 PR 上以置顶评论形式张贴 verdict 与误差线,并在每次推送时原地更新;只在 BLOCK 时失败检查,若设置 fail-on-inconclusive: true 则在样本不足时也阻断。
输入输出与可扩展性
输入文件默认采用 JSON Lines,每行一条记录,包含 case_id、score 与(或)passed 字段;同 case 的多次重复运行会以 run_index 标识并按 case 取均值,避免被错误视为独立样本。文件类型自动检测,也可用 --adapter 强制指定为 promptfoo、CSV 或 JSON 数组格式;缺失的评测框架可通过约 50 行适配器接入。CLI 之外还提供类型化的 Python API,报告中包含置信区间、p 值、两侧汇总与建议样本量,便于在 pytest 等场景自定义策略。
配置文件 statgate.toml 支持常用参数:显著性水平 alpha、可容忍回归幅度 margin(默认 0.02,代表「只在确信候选差超过 2 分时阻断」)、目标检验力 power、自助重抽样数与排列检验迭代数等。
适用边界
对于评测集仅几十条、且对分数波动极为敏感的小团队,Statgate 提供了一条比「拍脑袋阈值」更可解释的路径。其价值取决于团队是否愿意为统计正确性增加少量额外配置成本——对于一周跑不到几次评测的场景,引入该工具的收益相对有限。
