Running the Agentic Benchmarks#
The repository ships three agentic benchmarks with their agent trajectories included under data/, so you can reproduce the results end-to-end.
Expected results#
All benchmark results use Gemini 2.5 Flash (gemini-2.5-flash, the default model) as the verifier.
Benchmark |
Base Model |
Harness |
Pass@1 |
LLM-as-a-Verifier |
Oracle |
|---|---|---|---|---|---|
Terminal-Bench 2.0 |
GPT-5.5 (×5) |
Capy |
83.1% |
86.5% |
92.1% |
SWE-bench Verified |
Opus 4.5 / Opus 4.6 / Gemini 3 Flash |
mini-swe-agent |
76.1% |
78.2% |
84.4% |
MedAgentBench |
Claude Opus 4.8 (×5) |
AgentBench |
70.2% |
73.3% |
75.0% |
Setup#
pip install google-genai tqdm
Create a .env file with your Vertex AI API key (required for logprob extraction):
echo "VERTEX_API_KEY=your_key_here" > .env
Run a benchmark#
Run a benchmark by name (python scripts/run.py with no argument lists them):
python scripts/run.py terminal_bench
python scripts/run.py swe_bench
python scripts/run.py medagentbench
The tournament defaults can be overridden on the command line:
python scripts/run.py swe_bench --pivots 2 --n-evaluations 8 --seed 0 --max-workers 50
What the launcher does#
For each benchmark, scripts/run.py loads the trajectories and criteria, splits tasks into all-pass / all-fail / swing (only swing tasks — where the N trials disagree — need verification), runs a Probabilistic Pivot Tournament per swing task, and reports Pass@1 vs. LLM-as-a-Verifier vs. Oracle.
Verifier scores are cached under cache/ (re-runs are incremental) and result tables are written under results/.
The benchmark registry#
Benchmarks are typed Benchmark dataclasses in llm_verifier/benchmarks.py — add or tweak one there:
@dataclass
class Benchmark:
name: str # human-readable title shown in the report
loader: str # key into llm_verifier.loaders.LOADERS
prompts: str # criteria name (criteria/<name>.md) or a path
data: dict # loader-specific data locations
cache: str # path to the verifier-score cache (JSON)
results: str # path to write the result table
criteria: list # criterion ids, in order
n_evaluations: int = 8 # repeated verifications K per criterion
pivots: int = 2 # number of pivots k in the tournament
seed: int = 0 # seed for the random ring pass
CLI flags (--pivots, --n-evaluations, --seed) override the registry values at launch time.
To stand up a verifier for a new task, see Adding a New Benchmark.