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
何であるか – AIエージェントの出力を検証するための大規模言語モデル(LLM)を変換するPythonライブラリ。候補となるエージェントの経路(コード、コマンド、ロボット動作など)に対して、細粒度かつ確率的な報酬をスコアリングし、N個の中から最良のものを選択、ステップバイステップで進捗を追跡、または大規模なベンチマーク評価を実行可能。
主なアイデア
- 細粒度報酬 – 単一の二値判断ではなく、スコアトークン(1–20 または A–T)の全対数確率分布に対する期待値を計算。これにより、信頼度を反映する連続的な報酬([0,1])が得られる。
- 繰り返し評価と基準の分解 – 同じ経路を複数のユーザー提供基準(例:正しさ、根本原因分析)に基づいて何度も評価可能。結果を平均することで分散を低減。
- 確率的ピボットトーナメント(PPT) – O(N k) のアルゴリズム。N個の候補経路を、小さな「ピボット」候補とのみ比較することで順位付け。完全なペアワイズラウンドロビンと比べてLLM呼び出し回数を大幅に削減。
- プレフィックスキャッシュ最適化 – 評価プロンプトを構造化し、大規模で共通するプレフィックス(タスク説明 + 2つの経路)を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 | オラクル |
|---|---|---|---|
| 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)を作成。評価基準を記述。problem、candidates、criteria=your_criteria_fileを指定してllm_verifier.selectを実行。または、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、およびClaude Code統合用のTurboAgentリポジトリ。
引用 研究でこのフレームワークを使用する場合、READMEに記載されたarXiv論文を引用してください。
これを取り上げた記事
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト