Unified LLM evaluation: A/B uplift, Panel/Jury judges, Krippendorff α, Cohen κ, pairwise preference, Elo tournament, and bias detection
Project description
judge-kappa
Unified LLM evaluation that bridges agent-skills-eval (A/B uplift, assertion lists) and MLflow LLMaJ (datasets, named rubric dimensions) while adding statistical rigor missing from both.
| Capability | agent-skills-eval | MLflow LLMaJ | judge-kappa |
|---|---|---|---|
| Native A/B uplift | ✅ | ❌ | ✅ |
| Assertion-based scoring | ✅ | ❌ | ✅ |
| Named rubric dimensions | ❌ | ✅ | ✅ |
| Multi-judge Panel / Jury | ❌ | ❌ | ✅ |
| Krippendorff's α | ❌ | ❌ | ✅ |
| Cohen's κ + P(chance) | ❌ | ❌ | ✅ |
| ICL judge alignment | ❌ | ❌ | ✅ |
| Positional bias detection | ❌ | ❌ | ✅ |
| Verbosity bias detection | ❌ | ❌ | ✅ |
| Pairwise preference rates | ❌ | ❌ | ✅ |
| N-system Elo tournament | ❌ | ❌ | ✅ |
| CLI-first | ✅ | ❌ | ✅ |
Installation
git clone https://github.com/williamcaban/judge-kappa-eval
cd judge-kappa
# Python 3.12+ required
uv sync --all-extras # recommended
# or: pip install -e '.[all]'
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
# For local vLLM/Ollama, set base_url in the config instead of an API key
Quick start
# Validate a config
judge-kappa validate examples/config_skill_minimal.yaml
# Run evaluation
judge-kappa run examples/config_skill_minimal.yaml
# JSON output → file
judge-kappa run examples/config_skill.yaml --format json --output report.json
# Print config JSON Schema (for editor autocomplete)
judge-kappa schema
Documentation
| Doc | Contents |
|---|---|
| Decision guide | Which mode to use — decision tree covering input format, judge strategy, bias detection, N systems, and providers |
| Input types | All six entry points: evaluate_skill, evaluate_dataset, evaluate_endpoints, evaluate_prerecorded, evaluate_pairwise_dataset, TournamentEvaluator |
| Pairwise and Tournament | When and how to use pairwise preference scoring and N-system Elo tournaments; cost tables; champion-challenger pattern |
| Examples | Nine worked examples with configs, expected output, and interpretation guidance |
| Key management | api_key_env three-case rule; provider quick reference; mixed-provider panel; Python API key passing |
| CLI reference | run, validate, schema commands; output formats (text, json, jsonl); --verdicts flag; CI validation |
| Python API | Eight usage patterns with full code; accessing report fields; serialization |
| Config reference | Every YAML field documented; skill/dataset/pairwise mode schemas; annotated full example |
| Architecture | Package structure; ABCs and extension points; adding providers, judges, metrics, and bias detectors |
Example configs
| Config | What it demonstrates |
|---|---|
examples/config_skill_minimal.yaml |
Single judge, no bias detection — fastest start |
examples/config_skill.yaml |
3-judge panel + ICL calibration + positional bias |
examples/config_dataset.yaml |
Diverse JudgeJury with weighted rubric dimensions |
examples/config_dataset_panel.yaml |
Homogeneous panel to verify rubric consistency |
examples/config_endpoints.yaml |
Per-variant generation backend (endpoint A vs B) |
examples/config_prerecorded.yaml |
Score pre-recorded outputs (no generation calls) |
examples/config_pairwise.yaml |
Pairwise preference rates (PairwiseReport) |
examples/config_regulatory.yaml |
Full bias evidence for compliance submissions |
examples/config_mixed_panel.yaml |
Anthropic + OpenRouter + vLLM + Ollama in one panel |
Development
uv sync --group dev
uv run pytest # tests
uv run pytest --cov --cov-report=term-missing # with coverage
uv run ruff check src tests # lint
uv run mypy src # type check
License
Apache 2.0 — github.com/williamcaban/judge-kappa-eval
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file judge_kappa-0.1.0.tar.gz.
File metadata
- Download URL: judge_kappa-0.1.0.tar.gz
- Upload date:
- Size: 75.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee61006b03145045878ecc68cd874d97304361640575f11822613e74de33dca2
|
|
| MD5 |
5bd71cfd2f40bf63f88a687de8cc4003
|
|
| BLAKE2b-256 |
de0b4140a0be90a6d7d39271b90f6ea124a6c0ea95888978de01f2ab703593f5
|
Provenance
The following attestation bundles were made for judge_kappa-0.1.0.tar.gz:
Publisher:
publish.yml on williamcaban/judge-kappa-eval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
judge_kappa-0.1.0.tar.gz -
Subject digest:
ee61006b03145045878ecc68cd874d97304361640575f11822613e74de33dca2 - Sigstore transparency entry: 1753193542
- Sigstore integration time:
-
Permalink:
williamcaban/judge-kappa-eval@6cb1b56e9eeb56137b3b9928188020526033ea5b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/williamcaban
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6cb1b56e9eeb56137b3b9928188020526033ea5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file judge_kappa-0.1.0-py3-none-any.whl.
File metadata
- Download URL: judge_kappa-0.1.0-py3-none-any.whl
- Upload date:
- Size: 46.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97d10349cd414bee9f1298d99ed2527a095c77efc42acc8327b01a3424179de9
|
|
| MD5 |
b6c8af0d52faa8611b06641b96e88619
|
|
| BLAKE2b-256 |
780be8eb02d8f32d316c10e5e709839e5b4d0834006faf38b3ab73aedc458db9
|
Provenance
The following attestation bundles were made for judge_kappa-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on williamcaban/judge-kappa-eval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
judge_kappa-0.1.0-py3-none-any.whl -
Subject digest:
97d10349cd414bee9f1298d99ed2527a095c77efc42acc8327b01a3424179de9 - Sigstore transparency entry: 1753193608
- Sigstore integration time:
-
Permalink:
williamcaban/judge-kappa-eval@6cb1b56e9eeb56137b3b9928188020526033ea5b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/williamcaban
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6cb1b56e9eeb56137b3b9928188020526033ea5b -
Trigger Event:
push
-
Statement type: