OpenRouter 教程:如何在 CI 中用 LLM eval 门禁拦截 Pull Request

📌 One-Sentence Summary
OpenRouter 的教程展示了如何在 CI 中通过固定的 LLM eval 集设置 PR 门禁,当通过率低于既定阈值时阻止合并。
📝 Summary
OpenRouter 发布了一份分步教程,介绍如何使用固定且版本化的 eval 集在 CI 中拦截 pull request,方式类似于失败的单元测试会阻断合并。指南分四步展开:仅在可能影响 agent 的变更时触发 eval、将 eval 集与对应 prompt 一起存入仓库、编写一个在通过率低于阈值时退出非零状态的 Node 脚本,以及在对未变更分支多次运行的基础上测量该阈值。文中指出几个关键陷阱:路径过滤器必须设置在 job 级别,因为被路径过滤器跳过的 workflow 会让必需检查处于 pending 状态并阻止合并,而被跳过的 job 本身会被视为通过。脚本将所有请求路由到单一 provider,并对重复样本进行多数投票,因为 temperature 和 seed 仅在模型将其列入 supported_parameters 时才生效。当 eval 无法运行时以代码 2 退出,避免将 provider 超时误判为质量退化。针对工具调用型 agent,指南引入了 Ori Eval,用于断言 agent 调用了哪些工具,并演示了如何在 CI 中以固定版本和已验证 checksum 的方式安装它。
💡 Main Points
固定 eval 集将 LLM 行为转化为合并门禁,如同单元测试
测试用例与所测试的 prompt 一并提交至仓库,仅通过经审阅的 pull request 进行修改。当通过率跌破阈值时,eval 脚本以非零状态退出,进而使 CI 作业失败并阻止合并。
路径过滤必须在 job 级别,而非 workflow 级别
GitHub 会将因 if 条件跳过的 job 报告为通过检查,但若 workflow 被 on.pull_request.paths 跳过,所需的检查会保持 pending 状态并阻断合并。解决方案是创建一个始终运行的 changes job,输出 true 或 false,eval job 仅在返回 true 时才启动。
阈值应通过测量得出,而非凭感觉设定
在未变更的 main 分支上对 eval 集运行六次,取最低观测通过率作为下限。若仅有三个用例,单次间歇性失败即可得到 0.67 的通过率,此时 0.9 的阈值会误拦不存在实质退化的 pull request。
确定性设置仅对支持它们的模型有效
temperature 和 seed 仅在模型将其列入 supported_parameters 时才生效;Claude Sonnet 5 未列出这两项。通过重复采样并结合多数投票,可在所有模型上获得稳定性并吸收残余方差。
工具调用型 agent 需要对行为本身进行断言,而非仅检查输出字符串
字符串匹配无法判断 agent 是否调用了正确的工具或避开了昂贵操作。Ori Eval 会运行 agent 并记录其行为,进而支持诸如 run.tool('lookup_order').toBeCalled() 与 run.tool('issue_refund').toNotBeCalled() 这样的断言。
💬 Key Quotes
Use a fixed eval set to gate pull requests the same way a failing unit test gates one.
Filter at the job level, not the workflow level.
When the pass rate is below the threshold, the eval script exits with a non-zero status, and that exit code is what fails the job.
Measure the threshold from repeated runs on an unchanged branch rather than picking a strict number.
A provider timeout is not a quality regression.
📊 Article Meta
AI Screening: 86
Source: AIHOT — 精选
Author: noreply@aihot.news (OpenRouter:Announcements(RSS))
Category: 人工智能
Language: 英文
Read Time: 36 min
Word Count: 8945
Tags:
AI 与智能应用 , AI Agent , AI 编程 , AI 工程 , 测试与质量
有没有更详细的教程,期待后续。