如何10分钟上手LLM-as-a-Verifier:3行代码跑通Best-of-N轨迹选择的快速教程
【免费下载链接】llm-as-a-verifierLLM-as-a-Verifier is a general-purpose framework that provides fine-grained feedback for any agent without requiring additional training. It achieves SOTA performance across coding, robotics, and medical agentic benchmarks.项目地址: https://gitcode.com/gh_mirrors/ll/llm-as-a-verifier
LLM-as-a-Verifier 是一个开源的通用 LLM 验证框架,无需额外训练就能为任意 Agent 提供细粒度反馈。只需 3 行 Python 代码,即可完成 Best-of-N 轨迹选择:把任务和 N 条候选轨迹交给它,它通过概率枢轴锦标赛(Probabilistic Pivot Tournament)算法挑出最优的那一条,并在 Terminal-Bench、SWE-Bench Verified 等 Agent 基准上取得了 SOTA 表现。这篇快速教程将带你在 10 分钟内完成从安装到第一次轨迹选择的全部流程。
🎯 什么是 LLM-as-a-Verifier?
与传统的 LLM-as-a-Judge(只给出一个离散分数)不同,LLM-as-a-Verifier 从四个维度提升验证信号质量:
- 细粒度(Granularity):对模型评分 token 的完整 logprob 分布取期望,把 1–20 的字符评分刻度变成 [0, 1] 之间的连续奖励;
- 不确定性(Uncertainty):利用模型 logit 分布表达判断的置信度;
- 重复(Repetition):每条准则重复验证 K 次并聚合,降低单次噪声;
- 分解(Decomposition):把评估拆解成多条独立、窄口径的准则。
由此得到的细粒度反馈可以支撑三大场景:测试时扩展(Best-of-N 选择)、Agent 进度跟踪、强化学习。
⏱️ 第 1 步:1 分钟安装 LLM-as-a-Verifier
官方包名是llm-verifier,一条命令装好:
pip install llm-verifier运行示例前还需要给验证模型配置凭证,三选一:
- 在
.env文件中写入DEEPSEEK_API_KEY或VERTEX_API_KEY; - 自部署返回 logprobs 的 OpenAI 兼容服务,例如
vllm serve Qwen/Qwen3.5-9B,并设置OPENAI_BASE_URL=http://localhost:8000/v1。
默认验证模型为gemini-2.5-flash,对后端的唯一硬性要求是:能暴露 token 级 logprobs。
🚀 第 2 步:3 行代码跑通 Best-of-N 轨迹选择
核心入口是llm_verifier.select:传入任务描述、候选轨迹列表和评估准则,返回最优候选索引与每条轨迹的得分。
import llm_verifier problem = "Write a function that reverses a string." candidates = [ "def rev(s): return s[::-1]", "def rev(s): return s", "def rev(s): return ''.join(sorted(s))", ] result = llm_verifier.select( problem=problem, candidates=candidates, criteria={"Correctness": "Does the code actually reverse the string?"}, ) print(result.index) # 0,最优候选的索引 print(result.scores) # [0.73104, 0.38446, 0.38446]关键参数一览(完整签名见 llm_verifier/init.py):
| 参数 | 默认值 | 含义 |
|---|---|---|
n_evaluations | 4 | 每条准则的重复验证次数 K |
pivots | 2 | 枢轴轨迹数 k,成本 O(Nk),越大越准 |
model | gemini-2.5-flash | 验证模型 |
seed | 0 | 随机种子,同输入 + 同种子可复现同一场锦标赛 |
cache | None | 分数缓存路径,重跑时只补算新比较 |
返回值VerifierResult还提供.best(胜出轨迹原文)、.ranking(全部候选排名)、.n_comparisons(实际比较次数)。
🔍 第 3 步:看懂原理(可选,2 分钟)
Best-of-N 选择的成本痛点在于:N 个候选做全量循环赛需要 O(N²) 次成对验证。LLM-as-a-Verifier 用概率枢轴锦标赛(PPT)把比较预算压缩到 O(Nk):
- 候选:N 条轨迹进入候选池;
- 环形赛:随机汉密尔顿环让每条轨迹各出现一次 A 槽和一次 B 槽,抵消模型的位置偏差;
- 选枢轴:按环形赛得分取前 k 名作为枢轴;
- 枢轴赛:只评"非枢轴 vs 枢轴"和"枢轴 vs 枢轴"的配对,把预算集中在不确定的头部候选上;
- 选优:汇总比较结果,归一化胜率最高者胜出。
核心实现在 llm_verifier/pivot_tournament.py,细粒度奖励计算在 llm_verifier/fine_grained_reward.py。
🧩 三个额外的实用入口
同一套细粒度奖励还有三种用法:
compare——直接给两条候选打分,返回单次方向性比较的细粒度奖励 R_A、R_B(均在 [0, 1]),是select的底层积木:
reward_a, reward_b = llm_verifier.compare( problem, candidates[0], candidates[1], criteria={"Overall": "Does the code solve the problem?"})track——离线进度曲线,给已完成轨迹的每个检查点打分,输出 [0, 1] 进度曲线:
result = llm_verifier.track(problem, steps, checkpoint_steps=[1, 2, 3, 4, 5]) print(result.scores) # [0.001, 0.024, 0.031, 0.620, 0.999]ProgressTracker——在线实时跟踪,在 Agent 运行时每喂入一步就得到当前进度分,适合提前放弃明显失败的 rollout。实现见 llm_verifier/progress.py。
官方示例:跟踪 Terminal-Bench 任务pytorch-model-cli的两次运行——成功轨迹分数从 0 稳步爬到 1,失败轨迹则全程滞留在低位:
📊 复现官方 SOTA 结果
仓库自带三大基准的 Agent 轨迹(data/),克隆后即可一条命令复现:
git clone https://gitcode.com/gh_mirrors/ll/llm-as-a-verifier cd llm-as-a-verifier python scripts/run.py terminal_bench # 或 swe_bench / medagentbench预期结果(验证模型统一为 gemini-2.5-flash):
| 基准 | Pass@1 | LLM-as-a-Verifier | Oracle 上界 |
|---|---|---|---|
| Terminal-Bench V2 | 83.1% | 86.5% | 92.1% |
| SWE-Bench Verified | 76.1% | 78.2% | 84.4% |
| MedAgentBench | 70.2% | 73.3% | 75.0% |
锦标赛参数可在命令行覆盖:
python scripts/run.py swe_bench --pivots 2 --n-evaluations 8 --seed 0 --max-workers 50自验证实验(模型用自己的轨迹当验证器)另有独立脚本 scripts/run_bo3.py 与 scripts/run_bo5.py,Best-of-5 达 88.0%,接近 96.6% 的 Oracle 上界;进度跟踪演示可运行python scripts/terminal_bench_progress.py。
🛠️ 三步接入你自己的任务
官方推荐路径(详见 add_new_benchmark.md):
- 加数据:把 Agent 轨迹放入
data/task_name_trajs/; - 写准则:复制 criteria/TEMPLATE.md,写 2–4 条可独立评分、窄口径的准则;
- 调
select:把准则文件名传给criteria="task_name"即可开跑。
小技巧:调用 API 前用python -m llm_verifier task_name预览验证器最终看到的 prompt,不消耗 API 配额。
📦 小结
- 3 行选择:
llm_verifier.select(problem, candidates, criteria=...),是 Best-of-N 轨迹选择的最快上手路径; - O(Nk) 成本:概率枢轴锦标赛让大规模候选池排序变得可负担;
- 连续奖励:logprob 细粒度评分 + 重复验证,反馈比单一离散分数更稳定;
- 开箱即用:三大基准的轨迹、准则与复现脚本全部随仓库提供。
最新版本的特性(前缀缓存优化、token 用量统计等)见 CHANGELOG.md。
【免费下载链接】llm-as-a-verifierLLM-as-a-Verifier is a general-purpose framework that provides fine-grained feedback for any agent without requiring additional training. It achieves SOTA performance across coding, robotics, and medical agentic benchmarks.项目地址: https://gitcode.com/gh_mirrors/ll/llm-as-a-verifier
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考