Evaluation of LLMs

Suppose two teams each claim their new 7-billion-parameter model is "better" than the other's. One reports higher scores on a multiple-choice benchmark. The other reports higher win-rates from human raters. Neither number alone tells you which model you should actually deploy in a customer-support chatbot. Both numbers can be gamed, saturated, or simply measuring the wrong thing. This is the central problem of LLM evaluation: capability is multidimensional, human judgment is expensive and noisy. The artifacts we build to approximate judgment — benchmarks, automatic metrics, LLM-as-judge pipelines — all have systematic blind spots. A careless reader will mistake these blind spots for ground truth. Evaluation matters because it is the compass that steers an entire research and product ecosystem. Model releases are timed around benchmark scores. Pretraining recipes are chosen because they move a leaderboard number. Safety teams decide whether a model ships based on red-team pass rates. If the compass is miscalibrated — through contamination, narrow coverage, or judge bias — every downstream decision inherits the error. Instruction Tuning and reinforcement learning from human feedback explicitly optimize models against reward signals derived from evaluation-like judgments. So the evaluation methodology is not a passive bystander. It actively shapes what the model becomes. The big picture is that LLM evaluation has evolved through three overlapping generations. First came static benchmarks with exact-match or multiple-choice answers. These were borrowed from classical NLP (question answering, natural language inference, summarization ROUGE scores). Second came human preference evaluation — pairwise comparisons and Likert-scale ratings. This was motivated by the fact that open-ended generation has no single correct string. Third, and now dominant in practice, is LLM-as-judge. This means using a strong model to grade or rank the outputs of other models. It costs a fraction of human annotation but has its own failure modes. These include self-preference, length bias, and positional bias, which must be measured and corrected. This article gives you the full toolkit. It covers how benchmark suites are constructed and scored. It explains how human evaluation protocols work and where they break down statistically. It describes how LLM-as-judge pipelines are designed and calibrated. It gives the formal reasons contamination and overfitting to a leaderboard are dangerous. It also includes a worked numerical example showing exactly how judge bias inflates scores. It closes by connecting evaluation to Safety & Red-Teaming. Much of adversarial testing is evaluation aimed specifically at the tails of the distribution, rather than the average case.

Key takeaways
  • LLM evaluation spans automatic benchmarks (exact-match, multiple-choice, code execution), human preference studies, and LLM-as-judge pipelines, each with different cost, variance, and bias profiles.
  • Aggregate benchmark scores hide multidimensional capability; a single leaderboard number can rise while real-world usefulness stagnates or falls (Goodhart's law in practice).
  • Benchmark contamination — test data leaking into pretraining or fine-tuning corpora — silently inflates scores and is detectable via n-gram overlap and canary strings.
  • Human evaluation needs statistical care: inter-annotator agreement (Cohen's/Fleiss' kappa), sufficient sample sizes, and randomized ordering to avoid position and framing effects.
  • LLM-as-judge methods (pairwise, single-answer scoring, rubric-based grading) approximate human judgment cheaply but exhibit measurable self-preference, verbosity, and position biases that require explicit correction.
  • No single metric is sufficient; robust evaluation triangulates automatic metrics, human judgment, and held-out or dynamically-generated test sets, reported with confidence intervals, not point estimates.
The core insight

Every evaluation method is a lossy proxy for "is this model actually useful and safe," so correctness of an evaluation claim depends on understanding — and correcting for — the specific biases of the proxy you chose.

The idea

Evaluating a large language model means estimating, from a finite set of test interactions, some underlying quantity — accuracy, helpfulness, harmlessness, factual reliability — that is really a property of the model's behavior over an effectively infinite space of possible prompts. Formally, if fθf_\theta is a model and D\mathcal{D} is the true (unknown) distribution of deployment queries, we want an estimate of Ex∼D[ score(fθ(x),x) ]\mathbb{E}_{x \sim \mathcal{D}}[\, \text{score}(f_\theta(x), x)\, ]. Every benchmark is a finite sample {xi}i=1n\{x_i\}_{i=1}^n drawn from some proxy distribution D′\mathcal{D}', and every scoring function is a proxy for the quantity we actually care about. The gap between D′\mathcal{D}' and D\mathcal{D}, and between the proxy score and true usefulness, is where evaluation goes wrong. Three broad families of evaluation methodology exist. Automatic reference-based evaluation compares model output to a gold answer using exact match, F1 overlap, ROUGE/BLEU n-gram overlap, or code execution (pass@k on unit tests). This is cheap, reproducible, and deterministic, but only works when there is a well-defined correct answer — it fails for open-ended generation, creative writing, or multi-turn dialogue. Human evaluation asks people to rate or compare outputs directly, typically via pairwise comparison ("which response is better?") or Likert-scale absolute scoring (1–5 helpfulness, harmlessness). This captures nuance that automatic metrics miss but is expensive, slow, and subject to annotator disagreement and bias. LLM-as-judge evaluation uses a capable model (often GPT-4-class) to play the role of the human rater, either scoring a single response against a rubric or judging a pairwise comparison. This scales to millions of examples at low cost but inherits and amplifies specific biases from the judge model itself. A key conceptual distinction is capability evaluation versus alignment evaluation. Capability evaluation asks "can the model solve this task at all" (e.g., can it prove a theorem, pass a coding test, answer a trivia question) — closely tied to what Hallucination & Factuality measures when the task requires accurate world knowledge. Alignment evaluation asks "does the model behave the way we want it to" — is it helpful, honest, harmless, and does it refuse the right things at the right times. The two axes are not independent: a maximally capable model that is not aligned can produce highly fluent, confident, and wrong or harmful text, which is exactly why alignment evaluation increasingly leans on adversarial and red-teaming-style probes, foreshadowing the deeper treatment of Safety & Red-Teaming.

How it works

Automatic benchmark evaluation

The classical pipeline is: fix a test set with gold labels, run the model, score with a deterministic function, and aggregate. For multiple-choice benchmarks (e.g., MMLU-style), the score is exact-match accuracy over answer letters. For generative benchmarks with a reference (e.g., summarization), softer overlap metrics (ROUGE-L, BLEU) or embedding-based metrics (BERTScore) are used because exact string match is too strict for free-form text. For code, benchmarks like HumanEval use functional correctness: generate kk candidate completions, execute them against unit tests, and report `pass@k` — the probability that at least one of kk samples passes. ``` function PASS_AT_K(problem, model, n, k):

# n: total samples drawn, k: budget considered "allowed attempts" samples <- [] for i in 1..n: samples.append(model.generate(problem.prompt, temperature=0.8)) c <- count(s in samples such that EXECUTE(s, problem.tests) == PASS)

# unbiased estimator (avoids re-sampling k from n combinatorially) if n - c < k: return 1.0 else: return 1.0 - PRODUCT_{i=0}^{k-1} ( (n - c - i) / (n - i) ) ``` The unbiased estimator above is important: naively drawing kk samples and checking if any pass has high variance for small kk. Instead, Chen et al.'s pass@k estimator draws a larger n≫kn \gg k, counts correct samples cc, and computes the exact probability that a random kk-subset of the nn samples contains at least one correct one, which is 1−(n−ck)/(nk)1 - \binom{n-c}{k}/\binom{n}{k} — the product form above is an equivalent, numerically stable way to compute this without overflowing large binomial coefficients.

Human evaluation protocol

Human evaluation typically follows a pairwise comparison design because absolute Likert ratings suffer from calibration drift across annotators (one annotator's "4/5" is another's "3/5"). The standard pipeline: ``` function HUMAN_PAIRWISE_EVAL(model_A, model_B, prompts, annotators_per_item): results <- [] for prompt in prompts: response_A <- model_A.generate(prompt) response_B <- model_B.generate(prompt)

# randomize left/right position to cancel position bias if random_bit() == 1: (left, right) <- (response_A, response_B) else: (left, right) <- (response_B, response_A) votes <- [] for annotator in sample(annotators_per_item): vote <- annotator.compare(prompt, left, right) # "left" | "right" | "tie" votes.append(vote) results.append(votes) win_rate_A <- AGGREGATE(results, resolve_position(A, B)) kappa <- INTER_ANNOTATOR_AGREEMENT(results) return win_rate_A, confidence_interval(win_rate_A, n=len(prompts)), kappa ``` Two statistical safeguards are essential and are frequently skipped in informal evaluations: randomized position (models are shown left/right at random per item, since annotators exhibit a measurable bias toward whichever side they see first or second) and inter-annotator agreement (typically Cohen's kappa for two raters or Fleiss' kappa for more, computed as

κ=po−pe1−pe\kappa = \frac{p_o - p_e}{1 - p_e}

where pop_o is observed agreement and pep_e is agreement expected by chance). A κ\kappa below roughly 0.4 signals that the task itself is too subjective or the rubric too ambiguous for the resulting win-rate numbers to be trustworthy. Model skill from pairwise comparisons is typically aggregated with the Bradley–Terry model, which underlies public chat leaderboards. Each model ii is assigned a latent strength βi\beta_i, and the probability model ii beats model jj is

P(i≻j)=eβieβi+eβj.P(i \succ j) = \frac{e^{\beta_i}}{e^{\beta_i} + e^{\beta_j}}.

Given a set of pairwise outcomes (often from live human votes), maximum likelihood estimation recovers {βi}\{\beta_i\}, which are rescaled into an Elo-like rating. This handles the fact that not all models are compared against all others directly — Bradley–Terry propagates transitive information through the comparison graph.

LLM-as-judge evaluation

To scale beyond what human annotators can provide, a strong LLM is prompted to act as the judge, either scoring a single response on a rubric (absolute grading) or choosing between two candidate responses (pairwise grading). ``` function LLM_JUDGE_PAIRWISE(judge_model, prompt, response_A, response_B, rubric):

# Mitigate position bias: judge each ordering, keep only consistent verdicts verdict_1 <- judge_model.evaluate( instructions = rubric, question = prompt, answer_1 = response_A, answer_2 = response_B ) verdict_2 <- judge_model.evaluate( instructions = rubric, question = prompt, answer_1 = response_B, # swapped order answer_2 = response_A ) if verdict_1 == "1" and verdict_2 == "2": return "A wins" elif verdict_1 == "2" and verdict_2 == "1": return "B wins" else: return "inconsistent" # discard or mark as tie; do not silently pick one ``` Swapping the order and requiring consistency is the single most important debiasing step: LLM judges are empirically shown to favor whichever answer appears first (or second, depending on the judge) at a rate well above chance, and averaging over both orders — or discarding inconsistent verdicts — removes most of this artifact. A further correction addresses length bias (judges tend to prefer longer, more verbose answers independent of quality) and self-preference bias (a judge model rates outputs written in its own style more favorably, which is a serious concern when the same model family is used both to generate candidate answers and to judge them).

The evaluation pipeline as a whole

Figure
The three-tier LLM evaluation pipeline: from raw prompts to a trusted score
Prompt set 𝒟′ (benchmark / red-team / live) Model(s) f_θ generate response(s) Candidate outputs y_A , y_B (pairwise) or y (single) Automatic scoring exact-match / pass@k ROUGE / BERTScore Human evaluation pairwise + Likert, κ agreement check LLM-as-judge rubric grading, order-swap debias Bias-corrected aggregation Bradley–Terry ranking, confidence intervals, contamination + variance checks

Complexity & correctness

Computational cost. Automatic reference-based evaluation costs O(n)O(n) model forward passes plus O(n)O(n) cheap string/overlap computations, where nn is the number of test items — this is the fastest and cheapest method, dominated purely by inference cost. Human pairwise evaluation costs O(n⋅a)O(n \cdot a) human-labor units where aa is annotators per item (typically 3–5 for reliable aggregation), and each unit is orders of magnitude more expensive (dollars, minutes) than a model forward pass, making large-scale human evaluation the bottleneck resource. LLM-as-judge evaluation costs O(n)O(n) extra judge-model forward passes (or O(n)O(n) with a constant factor of 2 if order-swapping is used for debiasing), which is far cheaper than human labor but more expensive than pure automatic scoring, and scales to large nn far more easily than human panels — this cost profile is precisely why LLM-as-judge has become the default for iterative model development, with human evaluation reserved for final validation.

Statistical correctness of aggregate scores. A benchmark accuracy is a sample mean p^=1n∑i1[correcti]\hat{p} = \frac{1}{n}\sum_i \mathbb{1}[\text{correct}_i] estimating a true success probability pp. By Hoeffding's inequality, for a benchmark of nn i.i.d. items,

P(∣p^−p∣≥ε)≤2exp⁡(−2nε2),P(|\hat p - p| \ge \varepsilon) \le 2\exp(-2n\varepsilon^2),

which means that with only, say, n=500n=500 items (common for many capability benchmarks), a 95% confidence interval half-width ε\varepsilon satisfies ε≈ln⁡(2/0.05)/(2⋅500)≈0.06\varepsilon \approx \sqrt{\ln(2/0.05)/(2\cdot 500)} \approx 0.06, i.e., roughly ±6 percentage points — a gap frequently larger than the score difference used to declare one model "better" in press releases. Correctness in benchmark reporting requires citing this uncertainty, not a bare point estimate, and increasing nn or reporting bootstrap confidence intervals when comparing close scores.

Why contamination breaks the argument. The i.i.d. sampling assumption underlying Hoeffding's bound requires that test items are drawn independently from the true target distribution and that the model has not seen them during training. If benchmark text (or close paraphrases) leaked into the pretraining or instruction-tuning corpus, the model's score on that item no longer reflects generalization — it reflects memorization, and the resulting p^\hat p is a biased, upward-shifted estimator of true capability. Contamination is detectable via n-gram overlap between the test set and training corpus, via canary strings (unique tokens inserted into official test releases that should never appear in a well-curated training corpus), and via comparing performance on the public benchmark against a freshly constructed, unreleased "held-out" variant with the same task distribution but no possibility of memorization — a persistent score gap between the two is direct evidence of contamination.

Why Bradley–Terry is the right aggregation model for pairwise human/judge comparisons. The Bradley–Terry model is the maximum-entropy model consistent with the assumption that pairwise win probabilities depend only on a one-dimensional latent strength difference; maximizing the pairwise comparison log-likelihood

L(β)=∑(i,j)∈matches[ wijlog⁡σ(βi−βj)+(1−wij)log⁡σ(βj−βi) ]\mathcal{L}(\beta) = \sum_{(i,j) \in \text{matches}} \big[\, w_{ij}\log \sigma(\beta_i - \beta_j) + (1-w_{ij})\log\sigma(\beta_j - \beta_i)\,\big]

is a concave optimization problem (in β\beta, since log⁡σ\log\sigma is concave in its argument and the objective is a sum of such terms composed with a linear map), so gradient-based fitting converges to a global optimum and small perturbations in the observed match outcomes produce bounded perturbations in the fitted ratings — this is what makes leaderboard Elo-style scores stable and comparable across many models even though not every pair has been directly compared.

Honest tradeoffs. Automatic metrics are cheap and reproducible but blind to nuance the reference answer doesn't capture (a factually correct paraphrase scores zero on exact match). Human evaluation captures nuance but is slow, expensive, and only as reliable as its inter-annotator agreement — a low-κ study should not be trusted regardless of sample size. LLM-as-judge is fast and cheap at scale but is only as good as the correlation between judge verdicts and true human preference, which must itself be measured (typically by checking judge-human agreement on a held-out calibration set) before the judge is trusted for large-scale, unsupervised evaluation.

Worked example

Consider comparing two chat models, Model A and Model B, on 200 prompts, using an LLM judge with position-swap debiasing. Suppose the true human-preferred win rate for A (established on a small, carefully controlled human study of 50 items) is 55%. We simulate what a naive (non-swapped) LLM-judge study would report versus a properly debiased one.

StepNaive single-order judgeSwap-and-check judge
Prompts judged200200
Judge's raw preference for "Answer 1" position (position bias)+8 points toward whichever response is shown firstcancelled by symmetry
Verbosity bias: A's responses average 40% longerjudge favors A regardless of quality, adds +6 pointspartially cancelled, residual ~+1–2 points (length bias is independent of order)
Consistent verdicts across both ordersnot checked176 / 200 (88%) consistent; 24 discarded as "inconsistent"
Reported win rate for A69%58%
True (human-calibrated) win rate for A55%55%
Absolute error vs. ground truth14 points3 points

The naive study overstates Model A's advantage by 14 percentage points — enough to completely reverse a close product decision — because two biases stack in the same direction: position bias (whichever answer is shown first that day happened to be A in this batch) and verbosity bias (A's fine-tuning happened to produce longer answers). The swap-and-check protocol removes essentially all of the position-bias component by symmetry (each response is shown first exactly once, so any first-position advantage cancels across the two judgments), and it also surfaces the residual verbosity bias as a diagnosable quantity rather than hiding it: since 12% of verdicts flip depending on order, that inconsistency rate itself is a red flag suggesting the judge's decisions are unstable and a length-controlled rubric ("ignore length; reward per unit of substantive content") should be added, which — in practice — drives the residual error further toward zero. This example is deliberately non-symmetric (A is not simply a coin-flip against B) precisely because averaging effects are much easier to hide when the true answer is 50/50; here the systematic errors compound to nearly triple the apparent gap over the true one, illustrating why a bare LLM-judge win-rate, reported without swap-checking and without a calibration study against human labels, should not be trusted as a capability or alignment claim on its own.

Common pitfalls & traps

PitfallWhy it happensConsequence
Reporting a single point estimate with no confidence intervalIgnoring sampling variance from Hoeffding-style boundsSmall, noisy score differences get reported as real improvements
Benchmark contaminationTest data (or near-duplicates) leak into training corpora scraped from the webInflated accuracy that does not reflect real generalization
LLM-judge self-preferenceSame model family used to both generate and judge responsesJudge systematically favors its "own" style, biasing model comparisons
Ignoring position bias in pairwise comparisonsJudge (human or LLM) has an unconscious preference for first- or second-shown answerWin rates shift by several points independent of true quality
Treating aggregate score as capturing alignmentA high MMLU or benchmark score says nothing about refusal behavior or toxicityDeployed model appears "strong" on paper but fails safety checks
Overfitting to a public leaderboard (Goodhart's law)Repeated tuning against the same fixed benchmark set optimizes the metric, not the underlying skillScore rises while held-out or real-world performance stagnates or drops

Pioneers & history

Origins · 1 minAlan Turing and how this was discovered
AT
Alan Turing
1912–1954 · Proposed the "imitation game" (the Turing Test) as an operational criterion for machine intelligence, seeding the entire idea of behavioral evaluation of language-producing systems

Turing's 1950 paper reframed "can machines think?" as an empirically testable behavioral question — can a machine's text output be distinguished from a human's — rather than an unanswerable philosophical one. This operationalization is the direct conceptual ancestor of every modern benchmark and LLM-as-judge protocol: rather than inspecting a model's internals, we judge it by its outputs against some standard of comparison, exactly as the imitation game judges a machine by a human interrogator's verdict.

History
1950
— Alan Turing proposes the imitation game as an operational test of machine intelligence.
2002
— BLEU introduced for automatic machine translation evaluation via n-gram overlap.
2018
— GLUE benchmark aggregates multiple NLP tasks into a single leaderboard score, popularizing multi-task benchmarking.
2021
— HumanEval and the pass@k metric formalize functional-correctness evaluation for code-generating models.
2023
— MT-Bench and Chatbot Arena popularize LLM-as-judge and crowd-sourced Bradley–Terry ranking for open-ended chat evaluation.

Where this matters

Model providers use automatic benchmarks (MMLU-style knowledge tests, HumanEval-style code tests, GSM8K-style math tests) as the standard reporting suite in model release papers and cards, giving a comparable, cheap first-pass signal across releases. Public chat leaderboards built on crowd-sourced pairwise human comparisons, aggregated via Bradley–Terry into Elo-like ratings, have become a primary reference point for which conversational model "feels" best to real users, directly influencing product adoption decisions. Inside frontier labs, LLM-as-judge pipelines are embedded in the reinforcement-learning-from-AI-feedback loop itself — the same judge that evaluates a checkpoint's outputs can also generate the reward signal used to fine-tune the next checkpoint, tightly coupling evaluation methodology to Instruction Tuning and to the reward modeling stage of RLHF. Enterprise deployments of LLMs in regulated domains (healthcare, finance, legal) increasingly require factuality-focused evaluation suites tied to Hallucination & Factuality metrics before a model can be approved for production use, and safety teams use adversarially constructed evaluation sets — deliberately probing jailbreaks, harmful-content elicitation, and edge-case refusals — as the evaluation methodology underlying Safety & Red-Teaming, where the goal shifts from average-case accuracy to worst-case robustness.

Ask the tutor: How would you design a contamination-resistant benchmark refresh cycle for a model that is re-evaluated monthly?

Why can't we just use one universal benchmark to rank all LLMs?

No single benchmark captures the full space of capabilities and behaviors an LLM must exhibit in deployment — factual accuracy, reasoning, code correctness, safety, instruction-following, and stylistic quality are distinct axes that can move independently. A model can top a knowledge-heavy multiple-choice benchmark while performing poorly on multi-turn dialogue coherence, or vice versa. Additionally, any single fixed benchmark becomes vulnerable to Goodhart's law: once it is used as an optimization target (directly or indirectly, through model selection), scores can rise without corresponding real-world improvement. Robust practice uses a portfolio of benchmarks spanning different skills, refreshed periodically with unreleased items, combined with targeted human and LLM-judge evaluation for open-ended behaviors that no static benchmark can capture.

How does LLM-as-judge evaluation differ from simply asking an LLM whether its own answer is correct?

LLM-as-judge evaluation typically uses a separate, often stronger, model to assess outputs from a different model being tested, evaluated against an explicit rubric and ideally with position-swap and calibration checks against human judgments. Asking a model to self-assess its own answer is a much weaker and more biased procedure, since the model has no independent signal distinguishing a confident hallucination from a correct answer — it is prone to sycophantic self-affirmation. Good LLM-as-judge practice keeps generator and judge distinct where possible, validates the judge's agreement with human raters on a calibration subset, and treats judge verdicts as a scalable proxy for human preference rather than ground truth.

What is Goodhart's law and why is it central to LLM evaluation?

Goodhart's law states that "when a measure becomes a target, it ceases to be a good measure." In LLM evaluation this manifests when developers repeatedly tune models, prompts, or training data specifically to raise a fixed, public benchmark score. Because the benchmark is a finite sample of test items rather than the true underlying capability distribution, optimization pressure can exploit quirks specific to those items (their phrasing, distribution of answer choices, or even leaked answers) without improving general capability. The practical defense is to rotate or refresh benchmarks, hold out unreleased variants for periodic re-testing, and treat any benchmark whose numbers are used for model selection as inherently degrading over time as an evaluation instrument.

How do you detect benchmark contamination in practice?

Three complementary techniques are standard. First, n-gram overlap analysis directly searches the training corpus for substrings matching benchmark test items, flagging suspiciously high overlap rates. Second, canary strings — unique random tokens embedded in official benchmark releases — should never appear in a properly filtered training corpus; their presence is direct proof of leakage. Third, and most robust, is constructing a fresh, unreleased test set with the same task format and difficulty distribution as the public benchmark, then comparing performance: a large, consistent gap between public and fresh-variant scores is strong evidence that the public benchmark score is inflated by memorization rather than genuine skill.

Why is human evaluation still necessary if LLM-as-judge is cheaper and scales better?

LLM judges are themselves models with systematic biases — self-preference, verbosity preference, position sensitivity, and potential blind spots correlated with their own training distribution. Their reliability must be established by measuring agreement with human judgments on a calibration set; without this step, an LLM-judge score is an unvalidated proxy, not a validated measurement. Human evaluation remains the ground truth reference for calibrating judges, for final pre-deployment sign-off, and for domains (nuanced harm, cultural context, subjective quality) where even well-calibrated automated judges have known blind spots. In practice, the two are complementary: cheap LLM-as-judge for rapid iteration, periodic human evaluation for calibration and final validation.

How does evaluation methodology connect to alignment training itself, rather than just measuring it afterward?

Reward models used in reinforcement learning from human feedback are trained on exactly the same kind of pairwise preference data used in human evaluation studies, and increasingly on LLM-judge-generated preference labels (reinforcement learning from AI feedback). This means the evaluation methodology is not a passive downstream measurement — it directly defines the optimization target during Instruction Tuning and subsequent alignment fine-tuning. Any bias in the evaluation protocol (verbosity preference, position bias, contamination in preference data) is therefore not just a measurement artifact; it becomes baked into the model's learned behavior, since the model is explicitly optimized to satisfy whatever the evaluator rewards.

What role does evaluation play in detecting hallucination specifically?

Factuality-focused evaluation typically decomposes a model's output into atomic claims and checks each against a trusted knowledge source (retrieval-augmented verification) or against a reference answer, rather than scoring the response as a single holistic unit — this connects directly to the metrics discussed under Hallucination & Factuality. Aggregate benchmark accuracy can mask hallucination because a model might get the final answer right for the wrong (fabricated) reasoning, or might hallucinate confidently on out-of-distribution questions that a benchmark's in-distribution test set never probes. Dedicated factuality evaluations therefore use adversarial or long-tail question sets specifically designed to elicit and expose fabrication, rather than relying on average-case benchmark accuracy.

Before this

Where this leads