llm-as-a-verifier/llm-as-a-verifier
LLM-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.
llm-as-a-verifier
是什麼 – 一個將大型語言模型(LLM)轉換為 AI 代理輸出驗證器的 Python 庫。它對候選代理軌跡(程式碼、指令、機器人動作等)進行細粒度、機率性獎勵評分,可選擇 best-of-N 候選者,逐步追蹤進度,或執行大規模基準測試評估。
核心概念
- 細粒度獎勵 – 不是單一的二元判斷,而是對一組評分令牌(1–20 或 A–T)的完整對數機率分佈進行期望計算。這產生一個 [0,1] 區間內的連續獎勵,反映置信度。
- 重複評估與標準分解 – 同一軌跡可在多個使用者提供的標準下(如正確性、根本原因分析)多次評估。結果取平均以降低變異。
- 機率性樞軸錦標賽(PPT) – 一種 O(N k) 算法,僅將每個候選者與少量「樞軸」候選者比較,即可對 N 個候選軌跡排序,相比完整成對循環賽,大幅減少 LLM 呼叫次數。
- 前綴快取優化 – 驗證提示被結構化,使得大而通用的前綴(任務描述 + 兩個軌跡)可由 LLM 後端快取,將未快取輸入令牌減少約 3.4 倍。
- 多模態支援 – 可在任意驗證呼叫中附加影像輸入,支援視覺機器人執行或前後截圖的驗證。
安裝
pip install llm-verifier # 從 PyPI 取得穩定版本
# 或從原始碼安裝最新程式碼
pip install -e .
需要一個能回傳對數機率的模型 API 金鑰(例如 DeepSeek‑V4‑Flash、Gemini 2.5‑Flash,或本地 vLLM 伺服器)。
快速入門範例
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) # 各候選者得分
其他入口點:
llm_verifier.compare– 回傳成對比較的原始細粒度獎勵。llm_verifier.track– 在每一步對已完成的軌跡進行評分,生成進度曲線。ProgressTracker– 一種線上版本,可在執行過程中逐步輸入。
基準測試與結果 該庫附帶多個代理基準測試(Terminal‑Bench、SWE‑Bench Verified、MedAgentBench、RoboRewardBench)的可重現腳本。使用 Gemini 2.5‑Flash 作為驗證器時,報告的 Pass@1 分數超過原始基線:
| 基準測試 | 基線模型 | LLM‑as‑Verifier | Oracle |
|---|---|---|---|
| Terminal‑Bench V2 (best‑of‑5) | GPT‑5.5 | 86.5 % | 92.1 % |
| SWE‑Bench Verified (best‑of‑3) | Opus 4.5/4.6 | 78.2 % | 84.4 % |
| MedAgentBench (best‑of‑5) | Claude Opus 4.8 | 73.3 % | 75.0 % |
自我驗證(同一模型同時生成與驗證)在 Terminal‑Bench 2.1 上也優於原始 Pass@1 分數。
內部運作原理
fine_grained_reward.py實作對數機率的期望。pivot_tournament.py包含 PPT 算法。progress.py提供每步評分工具。benchmarks.py註冊每個基準測試,並從data/加載對應的代理軌跡。- 快取儲存在
cache/;結果儲存在results/。
擴展至自訂任務
- 將代理軌跡放在
data/<task_name>_trajs/下。 - 複製
criteria/TEMPLATE.md到新檔案(如criteria/mytask.md),撰寫你關心的評估標準。 - 使用
llm_verifier.select並傳入problem、candidates和criteria=your_criteria_file;或使用 Claude Code 插件(TurboAgent)讓 Claude 自動產生標準並自動呼叫驗證器。
Claude Code 插件(TurboAgent) 一個即插即用的代理,可讓 Claude Code 自動呼叫驗證器,並行生成多個候選補全,再使用 PPT 選擇最佳者。安裝方式:
pip install git+https://github.com/llm-as-a-verifier/TurboAgent
然後啟動代理(turbo-agent),並將 Claude Code 指向 http://localhost:8888。
資源
- 文件: https://llm-as-a-verifier.com/docs/
- 網站: https://llm-as-a-verifier.com
- 論文(arXiv): https://arxiv.org/abs/2607.05391
- Slack 社群、Twitter/X,以及 TurboAgent 倉儲(用於 Claude Code 集成)。
引用 若在研究中使用此框架,請引用 README 中提供的 arXiv 論文。
寫過它的文章
相關
- 專案
- 專案
- 專案
- 專案
- 專案