Skip to main content

RetryBench

Evaluate whether an LLM's first recovery decision after a tool timeout is permitted, and whether replaying that decision achieves the intended state.

Install and run

Python 3.11+ for model inference:

pip install "retrybench[inspect]"
retrybench run --model mockllm/retrybench-defer

The local mock runs all 240 cases without credentials or inference charges. It always defers: unsupported retries 0/240, permitted progress 0/80, and unresolved outcomes 480/480. These are synthetic fixture results.

For a real model, set its provider's API credentials and pass a provider/model identifier supported by Inspect AI:

retrybench run --model "$MODEL_ID"

The inspect extra includes the OpenAI and Anthropic clients. Other providers may require their own SDK; follow Inspect's provider setup instructions.

This makes up to 240 billable inference calls with a 256-token output limit per call and no runner retries. --dry-run shows the call count without inference; --limit 4 runs a diagnostic subset and reports the remaining cases as missing. Temperature and reasoning effort use provider defaults unless supplied. Each run prints its result directory and writes predictions, per-case scores, and a report. Existing runs are never overwritten. Partial runs exit with code 2.

Use any inference framework

The core scorer supports Python 3.9+ with no third-party runtime dependencies:

pip install retrybench
retrybench export --output cases.jsonl
# Generate one prediction per visible case using your model or framework.
retrybench score --predictions predictions.jsonl --model my-model

Predictions are JSONL records such as:

{"case_id":"<exact exported case_id>","action":"unresolved","arguments":{"idempotency_key":null}}

Use retrybench run without --model for the deterministic policy baselines. The earlier retrybench eval --model ... command remains supported.

Data and interpretation

retry-permission-v1 freezes 240 visible decisions and 480 correlated replayed outcomes across four reused software tasks. Reports separate unsupported retry permission, permitted progress, protocol validity, duplicates, omissions, and unresolved recovery, with exact denominators and missing/invalid accounting. The labeled suite is public and is not a held-out generalization test. Each model receives only visible prompts and output schemas; keep scoring labels outside inference. No real side-effecting tool is executed.

The wheel includes the complete, hash-checked suite. A clone, dataset download, and the paper's internal validation history are unnecessary for evaluation. The separate research archive supports reanalysis of historical paper studies.

Source · Evaluation guide · Benchmark card · Citation

Code and suite are distributed under PolyForm Noncommercial 1.0.0.

Version archive DOI: 10.5281/zenodo.24044371.

Metadata

Release files for retrybench 0.3.0

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

Source distribution (sdist)

Source distribution for retrybench 0.3.0
File Size Uploaded Provenance Actions
retrybench-0.3.0.tar.gz 99.4 kB Without provenance Details for retrybench-0.3.0.tar.gz

Built distribution (wheel)

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

Total release size: 211.6 kB

Release files / retrybench-0.3.0.tar.gz

Download URL retrybench-0.3.0.tar.gz
Size 99.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d60bd8ba860643db461fc4b6663eacbda69426743d3adc9444bca8396f392acc
BLAKE2b-256 checksum
How to use checksums
5c778729b1fe0deb4fa6665f31a2d8f13bf7300de73b8edc02fbdef4383cb1df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release files / retrybench-0.3.0-py3-none-any.whl

Download URL retrybench-0.3.0-py3-none-any.whl
Size 112.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
407825b0e1f39f5f5a3fd3a5c3b86751f8b2fe144385c00c963bd221a9381912
BLAKE2b-256 checksum
How to use checksums
6340f49393e41d631700ef79b66d3c6aa02d17c864528c82a18aa8f46915de3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Security for retrybench 0.3.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files No 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