Skip to main content

benchprobe

DOI

Install: pip install benchprobe

A Python psychometrics library for AI benchmark scores. Give it a model × benchmark matrix and it answers four questions the evaluation literature keeps asking by hand:

Layer Question Functions
trust Are these scores reliable, and does the grader agree with gold? KR-20/KR-21, beta-binomial fit, Livingston–Lewis classification accuracy, Φ(λ), Krippendorff's α, Cohen's κ, two-way G-study
measure Do the benchmarks measure one thing or several — and does that survive controlling for release date? KMO, Horn's parallel analysis, ML factor analysis with oblimin rotation, Thurstone factor scores, date residualisation and date-R²
predict Does the battery predict a held-out criterion better than a single index? Leave-one-benchmark-out with in-fold factor re-estimation, a rung ladder from date-only to k-factor + covariates, pooled ΔMSE with bootstrap intervals
irt Where does each model sit on a common scale, with a standard error, and which benchmarks discriminate? Samejima continuous response model on logit scores, two-stage fixed-parameter anchor linking, Hessian-based convergence diagnostics

What makes it different from writing these yourself: every estimator is validated by reproducing the published numbers of three studies from hash-pinned data — 44 acceptance tests, tolerances declared before the code was written and never loosened, a reproducibility ledger stating for each number whether it is recomputed, statistically reproduced or regenerated, and a review by a model from a different family on record. The studies are the library's validation suite, not its purpose; your data is.

NumPy, SciPy, pandas, scikit-learn, factor_analyzer. No GPU, no service, no UI. Python ≥ 3.12.

Install

pip install benchprobe            # from PyPI, once v0.1 is tagged
pip install git+https://github.com/louisyzhu/benchprobe   # or from the repository

For development: uv sync && uv run pytest -m smoke (locked environment; the smoke set runs in about 30 s).

Ten lines on your own data

import pandas as pd
import benchprobe.irt as irt
import benchprobe.measure as measure
import benchprobe.predict as predict
from benchprobe.scores import ScoreMatrix

long = pd.read_csv("scores.csv")  # columns: model, item, score (0–1), release_date
sm = ScoreMatrix.from_long(long, release_date="release_date")

z = sm.complete()  # rows scored on every benchmark
z = (z - z.mean()) / z.std(ddof=0)
print(measure.kmo(z), measure.parallel_analysis(z).k_retained)
print(measure.first_factor_share(z, k=3))  # share of common variance on the first of k factors
print(measure.date_r2(measure.efa(z, k=1).scores, sm.grid().days, form="logistic"))

res = predict.lobo(sm.grid(), targets=["your_criterion"], k=3, learners=["ridge"])
print(res.metrics[["target", "rung", "learner", "test_rmse", "test_r2"]])

fit = irt.fit_single_stage(irt.panel_from_long(sm.long()))
print(
    irt.ability_table(fit, panel=irt.panel_from_long(sm.long()))[["model_id", "theta", "se_theta"]]
)

examples/quickstart.py is that script on simulated data, end to end, in about a second: uv run python examples/quickstart.py.

Conventions: scores are proportions in [0, 1] (scale="percent" divides by 100); a missing cell is NaN wide and an absent row long; a repeated (model, item) cell is an error unless you say what it means (aggregate="mean"). ScoreMatrix does bookkeeping only — every number comes from the four layers.

The three studies it reproduces

benchprobe.studies holds one function per study; nothing outside that package knows a benchmark by name.

Study Entry point What reproduces How well
One Capability or Many? (arXiv:2608.29420) studies.one_capability(out_dir) — or python -m benchprobe.report one-capability --out DIR the twelve archived result tables, each with a reproducibility tier in its caption; KMO 0.933, first-factor share 74.5 %, logistic date-R² 0.505, pooled LOBO ΔMSE +0.037 [+0.019, +0.055], the four-learner ladder recomputed to the archive's printed precision; two bootstrap tables statistically reproduced (their random stream is unrecorded); lobo_rung_summary.csv byte-identical with --full-ladder
Three Ways Classical Test Theory Misleads for LLM Judges studies.judge() KR-20 0.5223/0.5231, per-element error 4.72 %, judge–gold r 0.921, beta-binomial χ² 5.31 (p 0.504); the simulation sweeps real bank exact; sweeps reproduce the archive's script to 1e-9; the published grid within 1.72 standard errors
The Price of Intelligence (Zenodo 10.5281/zenodo.22177190) studies.price_of_intelligence() 64 item parameters, 782 abilities with standard errors, both stage objectives and residual scales, the Hessian convergence diagnostics item parameters to 8e-5, abilities to 3e-4 (the archive's own stopping distance), objectives to 1e-5; the archive's recorded gradient and Newton decrement reproduced at its published point

docs/reproducibility.md is the ledger: one row per number, with archive value, recomputed value, tolerance and tier. docs/decisions.md records every design decision and every finding about the archives — including the ones that are corrections to the archives themselves. Full acceptance run: uv run pytest -m golden (46 min; the One Capability ladder is most of it).

What it is not

Not a leaderboard, a scraper, a model runner, a dashboard or an "audit in an afternoon". It computes statistics on tables you already have, and it carries no claim its validation studies do not carry. If you need a general benchmark-auditing product, see tinyBenchmarks, MetaBench or PSN-IRT; if you need the specific estimators those papers use, validated against their numbers, this is it.

Rules the repository runs by

CLAUDE.md — ten rules, checked by a smoke test. The ones a user should know: a golden number, tolerance or seed is never changed to make a test pass (a failing golden test is a finding and is reported); every reported number has a test; every output states its reproducibility tier; the environment is pinned; nothing is published by an agent.

Data

Three snapshots are vendored under benchprobe/data/, each with a MANIFEST.json whose entries load_snapshot verifies on every load and whose own hash the golden tests pin: the One Capability analysis table (frontier-ai-economic-validity, CC BY 4.0; figures originate with Artificial Analysis and Epoch AI), the JUDGe item bank (llm-judge-reliability, CC BY 4.0), and the Price of Intelligence panel with three Phase-2 output files (Zenodo, hash-identical to the archive's own manifest). BENCHPROBE_DATA_DIR points at alternative snapshot folders. Nothing here performs inference or needs credentials.

Licence and citation

MIT for the code; the vendored data keeps its CC BY 4.0 terms. Cite the release (CITATION.cff) and the study whose numbers you rely on.

Metadata

Release files for benchprobe 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for benchprobe 0.1.1
File Size Uploaded Provenance
benchprobe-0.1.1.tar.gz 341.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for benchprobe 0.1.1
File Interpreter ABI Platform
benchprobe-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 564.7 kB

Release files / benchprobe-0.1.1.tar.gz

Download URL benchprobe-0.1.1.tar.gz
Size 341.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1d6c3a775ecadaec43a1780b73221628c50d8177d6845170412ac0c6ed78027c
BLAKE2b-256 checksum
How to use checksums
ecb48f583f8c6fcae41fabf7239657193d8a15539acd132c8b0c698e3128e06c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / benchprobe-0.1.1-py3-none-any.whl

Download URL benchprobe-0.1.1-py3-none-any.whl
Size 223.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5977ba09dbe7ce9c94b8c44a3037bb3eac7e930002ca0ec1c8ba5db71a7b7faf
BLAKE2b-256 checksum
How to use checksums
ba8ba1abb3e5d128eb7b0c2566171ed31f2b15f4ce30db5041d725bcdbf80432
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for benchprobe 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for benchprobe-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page