Skip to main content

assessment-bench

Part of the lens family.

Python 3.11+ License: MIT

Benchmark assessment approaches. Run one cohort through competing assessment arms — pure-LLM marking (the baseline) and the family's signal-based observations (assessment-lens) — with repeated runs, consistency statistics, and agreement against human marks. The bench measures; it never marks.

assessment-bench is a bench (a measurement product), not an -analyser and not a marking tool. It exists to answer research questions like: how consistent is LLM marking across repeated runs and providers? and which deterministic signals actually track human judgement?

What it does

experiment.yaml (rubric + cohort + arms)
  ├─ llm arm(s)    : submission + rubric → provider → score             × repetitions
  ├─ hybrid arm(s) : submission + rubric + signals → provider → score   × repetitions
  ├─ signals arm   : assessment-lens → evidence values                  (deterministic, once)
  └─ human marks   : optional ground-truth CSV
        ↓
result.json + runs.csv + signals.csv + agreement.csv
  • per-submission consistency: mean / median / std-dev / CV / reliability
  • agreement: Pearson & Spearman of every arm mean and every numeric signal
    against the human marks

Install

# from source (family layout)
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"

# the signals arm needs the analyser stack (bundle-analyser CLI on PATH):
uv pip install -e ".[analysers]"

# LLM arms (Anthropic, OpenAI, Ollama, OpenRouter, Grok, Gemini):
uv pip install -e ".[llm]"      # + export ANTHROPIC_API_KEY / OPENAI_API_KEY /
                                #   OPENROUTER_API_KEY / XAI_API_KEY / GEMINI_API_KEY

Quick start

assessment-bench init experiment.yaml   # commented example config
# edit: point at your rubric.yaml + submissions/, choose arms
assessment-bench run experiment.yaml -o out/

LLM arms specify provider and model per arm — comparing claude-haiku-4-5 vs gpt-4o-mini vs a local llama3.1 via Ollama is just three arms in one config.

Relationship to the family

  • Analysers generate deterministic signals (assessment-agnostic).
  • assessment-lens maps signals to a rubric as observations — never scores.
  • assessment-bench measures both approaches against human judgement. The LLM arm produces scores because that is the approach under test; the bench treats them as data points, not grades for students.

Status

v0.5.1 (on PyPI). Working today:

  • ✅ Experiment config (YAML) → cohort discovery → arms → structured results
  • ✅ LLM arm: multi-provider (anthropic / openai / ollama / openrouter / grok / gemini), repeated runs, strict SCORE: x/y extraction with scaled fallback
  • ✅ Signals arm: one assessment-lens pass; raw evidence values consumed (not the presence-based coverage)
  • ✅ Consistency stats (ported from the original Rust prototype) + Pearson/Spearman agreement vs human marks
  • ✅ Hybrid arm — LLM marking with the deterministic signals in context (one assessment-lens pass per cohort, shared across signals/hybrid arms)
  • ✅ HTTP API (assessment-bench serve, the [serve] extra) — health/manifest contract routes plus background experiment runs for UIs
  • ✅ Desktop shell — assessment-bench-desktop wraps serve as a bundled Python sidecar

Development

ruff format . && ruff check . && pytest -v

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

assessment_bench-0.5.1.tar.gz (99.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

assessment_bench-0.5.1-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file assessment_bench-0.5.1.tar.gz.

File metadata

  • Download URL: assessment_bench-0.5.1.tar.gz
  • Upload date:
  • Size: 99.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.0

File hashes

Hashes for assessment_bench-0.5.1.tar.gz
Algorithm Hash digest
SHA256 ca62182e43b4fa0cc1307bf8e9b8eed20467d0e264f4185a7dd811fad068ac09
MD5 ab9cb8f8b9f5cee0990958f91a07ffe0
BLAKE2b-256 3db92d6a69d70ea48e5170215fa92f1350efefc67ca47a9f316689f83e9e8199

See more details on using hashes here.

File details

Details for the file assessment_bench-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for assessment_bench-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7da4a635d645f2923e010b699dd1fe17ae008c8b2e1ecc8a2e29ba04d849084e
MD5 c3ed5e202fea66b328db5bc4c746f70b
BLAKE2b-256 653ad4db575d3d8aae72c5aeb5856fc4819a065ba34951c41543e670cead8ad2

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page