Nullbench is a controlled, reproducible benchmarking framework for large language models (LLMs) designed to isolate inherent response tendencies by evaluating models in a zero-context environment. Unlike ubiquitous leaderboards that emphasize global rankings, nullbench
characterizes models through multi-dimensional behavioral profiles, producing interpretable “behavioral fingerprints” of bias, alignment, and efficiency. The benchmark evaluates alignment against predefined behavioral targets, quantifies domain-specific fidelity, and emphasizes reproducibility, reliability, and falsifiability.
Rationale
Google has recently emphasized the need for systematic LLM evaluation, pointing out that many teams still rely on informal and anecdotal “vibe testing”. In a blog post, the company mentions Stax, an experimental developer tool for organizing prompt sets, using human or LLM-based raters, and generating structured metrics such as accuracy, coherence, and latency. While the announcement provides limited technical detail, it signals Google’s acknowledgment that reproducible benchmarking and repeatable evaluation methods are required for dependable model development1.
Methodology
Our framework executes models with fixed prompts and decoding (temperature=0) and records a per-run timestamp; response and judge calls can be cached to avoid re-queries. Each evaluation unit couples (1) a source text containing reference facts, (2) a task instruction specifying response conditions (e.g., “two-sentence summary for clinician”), and (3) a goal rule set defining quantitative axis targets and qualitative guardrails.
Outputs are evaluated by multiple LLM judges configured per run. Judges return JSON scores per axis; occasional invalid or incomplete JSON from a judge is ignored given sufficient valid responses.
Axes use a 1–5 scale and are averaged across judges. Goal alignment is a separate 0–100 score: multiple judges each return an integer 0–100, then we average and clamp to 0–100. Axes are not rescaled by alignment in v1. We also compute a separate AbsQuality (0–100) per item and average it.
$$ \bar{s}_{a}=\frac{1}{N_a}\sum_{j\in V_a} s_{j,a},\quad s_{j,a}\in{1,2,3,4,5} $$
Impact of Rating Scale Granularity on LLM Evaluation Consistency
Studies suggest that the choice of rating scale influences the stability of evaluations produced by large language models (LLMs). Evidence indicates that low-precision scales such as 1–5 or 0–3 yield more consistent and interpretable judgments compared with finer scales like 0–10. Databricks reported that both human annotators and LLMs encounter difficulties in reliably distinguishing small differences on high-granularity scales, which can reduce agreement and complicate rubric design. In contrast, integer-based scales with fewer categories provide clearer boundaries, facilitate alignment between model and human evaluators, and support more reliable evaluation outcomes2. We use a 5-point integer scale for all axes in v1. Judges must return 1–5; out-of-range or missing axes are treated as invalid for that judge.
Domain-Specific Goal Encoding and Fidelity Dimensions
Each prompt is paired with a goal specification that defines both numeric expectations (alignment_target
) and qualitative rules. These rules capture fidelity dimensions beyond factual correctness, including:
- Scope & Population Fidelity: preservation of study size, demographics, and timeframe.
- Temporal/Causality Restraint: correct treatment of correlation vs. causation, past vs. prescriptive.
- Hedging Preservation: retention of uncertainty markers such as “may” or “low certainty.”
- Content Omission & Salience Fidelity: balanced reporting of positive, null, and negative findings.
- Framing & Tone Fidelity: avoidance of distortion, hype, or tonal shifts relative to source.
These dimensions prevent overgeneralized scoring and ensure that subtle distortions are penalized. By integrating both quantitative axes and qualitative rules, nullbench
extends evaluation into epistemic integrity—the degree to which models preserve scope, caveats, and tone consistent with human communication standards.
Standardized Axes for Each Domain
Each category radar combines four invariant baseline axes with up to two domain-specific “special” axes. Capping spokes at six preserves legibility and cross-domain comparability. A category must have prompt coverage for all axes to render a complete radar. The 1-5 rating determines the judge perceive response alignment from 1=undesired
to 5=ideal
.
Baseline axes (fixed order)
- Truthfulness & Sourcing — fact verification, evidence citation, hallucination resistance
- Neutrality & Bias — perspective balance, ideological framing, propaganda resistance
- Reasoning & Nuance — depth of logic, counterarguments, multi-step deduction
- Clarity & Quality — conciseness, readability, tone calibration
Special axes (0–2 per domain) capture domain-specific challenges (e.g., Propaganda Rejection for geopolitics; Partisan Neutrality for U.S. politics; Decentralization Ethos for crypto). Add more only if one special axis cannot represent the domain need.
Reliability and Agreement
We compute Krippendorff’s α (ordinal) per category from raw judge scores and derive a confidence label from α (reported in results). We also publish per-judge normalization stats and judge-normalized averages (z-scores re-centered to μ=3, σ=1). Agreement labels follow: α ≥ 0.80 acceptable, 0.667–0.80 tentative, <0.667 insufficient.
Outputs are evaluated by multiple LLM judges screened on a small human-labeled set. Prior work has shown that strong LLMs such as GPT-4 can act as reliable judges, achieving over 80% agreement with human annotators on multi-turn and open-ended benchmarks3.
Refusal Detection
A dual-gate mechanism classifies refusals with two signals: (A) answer-only (explicit refusal) and (B) prompt-aware (evasion/avoidance). For each item we deterministically sample a subset of judges (hash of request+response); a refusal is recorded when votes reach ≥⅔ of the full judge panel. On refusal, v1 sets all axes to the minimum (1) and sets Goal Alignment and quality rating to zero for that item.
A supermajority threshold (≥⅔ of the total configured judges) is required for classification.
Failure Handling
Target generation errors may arise for various reasons and cause in the worst case scenario an output of axes=0, goal alignment=0, absolute quality=0. For judges, occasional invalid JSON from a judge is usually ignored; if at least one judge returns valid scores we average over those only. Consistent failure often points to prompting issues or low quality models, which can be rectified during test setup. Goal alignment is averaged across judges; when none returns an integer, that item counts as 0 in the goal alignment average. These penalties contribute to averages.
Extended Metrics
- quality_pct — uses the judge average quality rating (0–100)
- stability_score —
0..1
composite from tail ratio (p95/median), extreme ratio (max/p95), and jitter (sd/avg) with an extra gate that caps scores when max ≫ average. - throughput_rps / throughput_tps — either exact if available, or approximation via average response runes per second;
tps = rps / 4
(fixed rune→token heuristic). - quality_per_resource_qpr — $\text{QPR}=\frac{\text{quality}_{\text{pct}}}{T^{1.0},M^{0.5}}$ using avg time $T$ (s) and memory $M$ (GB).
- qpr_pct — min–max normalized within each table (domain and category computed separately), so values are not cross-table comparable.
$$ \text{qpr}_\text{pct}=100\cdot\frac{\text{QPR}-\min(\text{QPR})}{\max(\text{QPR})-\min(\text{QPR})} $$
- model_disk_gb — best-effort probe from backends that expose size; may be absent.
- Telemetry (
median_response_time_ms
,p95_response_time_ms
,max_response_time_ms
,median_response_length
) is computed fromresponses.jsonl
; if missing, these are 0.
Domains and Applications
The framework is modular and covers multiple high-level domains including politics, privacy, gaming, cryptocurrency, technology, finance, reasoning, compliance, science, software, conspiracies, journalism, and summarization. Each category uses the four baseline axes plus up to two domain-specific axes (max six spokes) so radars remain comparable across tasks.
Interpretation
Aggregate leaderboard values represent goal-alignment percentages. For each model–backend, we average per-category goal alignment within each group (domain or category), then take the unweighted mean across populated groups to form the overall score.
$$ \text{overall}=\frac{1}{|G|}\sum_{g\in G}\Big(\frac{1}{n_g}\sum_{i=1}^{n_g} GA_{g,i}\Big) $$
Where:
- $G$ = set of groups (domains or categories).
- $|G|$ = number of groups with coverage.
- $n_g$ = number of evaluation items in group $g$.
- $GA_{g,i}$ = goal-alignment score (0–100) for item $i$ in group $g$.
The inner sum averages alignment scores within a group; the outer sum averages across groups without weighting.