"It seems to work" is not an evaluation. Yet many AI features ship on exactly that: a few good demos, a handful of hand-picked prompts, and a leaderboard number that says the model is smart.
Evaluating AI is measurement under uncertainty. The outputs are probabilistic, the tasks are open-ended, and the same prompt can pass on Monday and fail on Tuesday. The good news: the concepts you need are few and stable. Tasks, criteria, graders, metrics and error bars work the same whether you use one vendor's SDK or another, a hosted eval product or a 50-line script.
This post is a practical cheatsheet. It defines the vocabulary precisely, shows how to score and how much to trust a score, and maps "accuracy" and "quality" to concrete metrics for each kind of system: agents, chatbots, zero-shot LLM features, and generative models such as image generators.
Terms marked with a ⚠️ are used with more than one meaning. Context decides (see "Same word, different meaning" near the end).
1. The vocabulary of an eval
Most confusion in eval discussions comes from people using the same word for different things. These definitions follow the ones Anthropic and OpenAI use in their eval guides.
| Term | Meaning | Why it matters |
|---|---|---|
| Eval | A repeatable test of an AI system: inputs, a way to run them, and a way to grade the results | The AI equivalent of a test suite. Without one, every prompt or model change is a guess. |
| Task / test case | One input with defined success criteria | The unit you count. "n" in every statistic below is usually the number of tasks. |
| Trial / sample | One attempt at a task. Outputs vary between runs, so you run several | The unit of randomness. k trials per task is what lets you measure consistency. |
| Transcript / trace / trajectory | The full record of a trial: messages, reasoning, tool calls, intermediate results | What you read when a score looks wrong. Also what process metrics are computed from. |
| Outcome | The final state at the end of a trial (the ticket is closed, the file compiles, the refund was issued) | For agents, the outcome is usually what matters, not the text of the final message. |
| Grader / scorer / evaluator | The logic that scores a trial: code, a model, or a human. A task can have several | The grader defines what "correct" means in practice. A bad grader makes a good eval useless. |
| Criterion | One thing being judged, e.g. "states the correct refund amount" | Narrow criteria are reliable. "Is it good?" is not a criterion. |
| Rubric | The set of criteria plus the scale and anchors for each (what a 1, 3 and 5 look like) | Turns taste into a repeatable decision that two graders can agree on. |
| Metric | A number aggregated across tasks and trials: pass rate, F1, win rate, mean score | What you report. Always with n, k and an interval (section 5). |
| Threshold / gate | The minimum metric value to ship, e.g. "pass^3 at least 85% on the regression suite" | Decided before you look at results, or it is not a gate. |
| Harness | The infrastructure that runs tasks, gives the agent tools, records transcripts, grades and aggregates | Part of the system under test. Its settings change scores (section 4). |
| Eval suite / dataset | A versioned collection of tasks for a capability or behavior | Version it like code. A score without a dataset version cannot be compared. |
| Benchmark | A public, standardized eval used to compare models | Good for choosing a model. Not a substitute for an eval on your own tasks. |
| Ground truth / reference ⚠️ | The known correct answer or outcome, when one exists | Enables cheap code graders. Many generative tasks have no single ground truth, only criteria. |
Capability evals vs. regression evals
Two suites, two jobs:
- Capability evals ask "what can it do?". They should start at a low pass rate, on tasks the system struggles with, so there is room to improve.
- Regression evals ask "does it still do what it used to?". They should pass at nearly 100%, and any drop is a bug.
When a capability task passes reliably, promote it to the regression suite. When a capability suite passes everything solvable, it is saturated and no longer tells you anything: write harder tasks.
2. Graders: who decides what "good" means
| Grader | Methods | Strengths | Weaknesses |
|---|---|---|---|
| Code-based | Exact match, regex, JSON schema checks, unit tests, checking the final database or file state | Fast, cheap, objective, reproducible, easy to debug | Brittle to valid variations; cannot judge tone, helpfulness or nuance |
| Model-based (LLM-as-a-judge) | Rubric scoring, yes/no assertions, pairwise comparison (A vs. B) | Flexible, scalable, handles open-ended output | Non-deterministic, costs money, has biases, must be calibrated against humans |
| Human | Expert review, crowd rating, A/B tests with real users | The reference for quality and preference | Slow, expensive, and humans disagree with each other too |
Practical rules that hold for any stack:
- Use the cheapest grader that is valid. If code can check it (the refund exists, the test passes, the JSON parses), use code. Use a model judge only for what code cannot see.
- Grade outcomes, not paths. Agents often find valid routes the eval designer did not expect. Checking for one exact sequence of tool calls fails correct solutions. Grade the path only when the path itself is a requirement (e.g. "must verify identity before changing an address").
- Prefer binary and pairwise judgments. "Does the answer state the cancellation fee? yes/no" and "which of these two answers is better?" are more reliable than "rate 1-10".
- Calibrate model judges. Have humans label a sample (often 50-200 items), measure agreement with the judge (percent agreement and Cohen's kappa), and only scale up once agreement is close to human-human agreement.
- Watch for known judge biases: longer answers (verbosity bias), the first option shown (position bias, so swap the order and judge twice), and output from the judge's own model family (self-preference).
- Read transcripts. Regularly. A 0% pass rate on a task that a strong model should handle is usually a broken task or grader, not an incapable agent.
A rubric is data, not prose
Write rubrics as explicit, separately scored criteria with anchors. Each criterion becomes its own grader call or code check:
RUBRIC = {
"task": "Customer asks to cancel a subscription bought 10 days ago.",
"criteria": [
# (id, check, grader, weight, hard_fail)
("policy", "Offers a full refund (policy: refunds within 14 days)", "code", 3, True),
("action", "Subscription status is 'cancelled' in the database", "code", 3, True),
("verify", "Confirms account identity before acting", "model", 2, True),
("clarity", "States what happens next and when, in plain language", "model", 1, False),
("tone", "Polite, no blame, no upsell after a cancel request", "model", 1, False),
],
}
def score(results: dict[str, bool]) -> dict:
"""results maps criterion id -> passed. Hard fails zero the task."""
crits = RUBRIC["criteria"]
if any(hard and not results[cid] for cid, _, _, _, hard in crits):
return {"pass": False, "score": 0.0}
total = sum(w for *_, w, _ in crits)
got = sum(w for cid, _, _, w, _ in crits if results[cid])
return {"pass": True, "score": got / total}
Two ideas carry most of the value here: hard-fail criteria (a polite answer that breaks policy is a failure, not a 7/10) and one check per criterion, so a low score tells you exactly what went wrong.
3. Metrics: what to count
Pick metrics after you define success, not before. Most real evals combine one primary metric (what you optimize) with a few guardrail metrics (what must not get worse).
| Metric | Definition | Use it for |
|---|---|---|
| Accuracy ⚠️ | Correct / total | Balanced classification with one right answer. Misleading on imbalanced data: 99% accuracy is trivial if 99% of emails are not spam. |
| Precision / Recall / F1 | Precision = TP / (TP + FP): how many flagged items were right. Recall = TP / (TP + FN): how many right items were found. F1 = their harmonic mean | Extraction, classification, retrieval, safety filters. Choose by error cost: a fraud filter wants recall, an auto-reply wants precision. |
| Exact match / field-level F1 | Output equals the reference exactly / per-field precision and recall for structured output | Zero-shot extraction into JSON, entity extraction, form filling |
| Pass rate / success rate | Share of tasks whose outcome meets all hard criteria | Agents and coding. The default agent metric. |
| pass@k | Probability that at least one of k trials succeeds | Settings where a human or a test picks the best of k attempts: code suggestions, idea generation, search with a verifier |
| pass^k ("pass hat k") | Probability that all k trials succeed | Customer-facing agents, automation, anything that must work every time. Introduced in Sierra's tau-bench. |
| Win rate | Share of pairwise comparisons where version B beats version A (ties counted as half) | Chatbots, writing, summarization, image generation: anything judged by preference |
| Mean rubric score | Average weighted rubric score across tasks | Open-ended tasks with several quality dimensions. Report per criterion too. |
| Faithfulness / groundedness | Share of claims in the answer supported by the provided sources | RAG and summarization. Separate from correctness: an answer can be faithful to a wrong document. |
| Hallucination rate / error rate | Share of answers that are confidently wrong | Q&A. Report it next to accuracy and abstention rate. |
| Abstention rate | Share of questions where the system says "I don't know" or escalates | Q&A and support. A good abstention is better than a confident error. |
| Calibration (ECE) | Whether stated confidence matches the actual hit rate. Expected Calibration Error averages the gap | Systems that show confidence or route on it (auto-approve above 0.9) |
| Tool-call accuracy | Right tool, right arguments, no unnecessary or failed calls | Agents. Diagnostic: explains why the outcome failed. |
| Trajectory match | Exact, in-order or any-order match with a reference tool sequence, plus precision and recall of steps | Agents with required procedures. Use in-order or any-order, rarely exact. |
| Cost / latency / steps | Tokens or money per task, wall-clock time, number of turns or tool calls | Always a guardrail. A 2-point quality gain at 3x the cost is often a loss. |
pass@k vs. pass^k
These two metrics answer opposite questions, and they diverge fast. With a per-trial success rate p on a task:
- pass@k = 1 - (1 - p)^k
- pass^k = p^k
At p = 0.75 and k = 3: pass@3 is about 98%, pass^3 is about 42%. At p = 0.95 and k = 10, pass^10 is only about 60%. In tau-bench, strong agents that solved most retail tasks once dropped below 25% when asked to solve the same task 8 times in a row. A demo shows pass@k. Your customers experience pass^k.
In practice you estimate both from n trials per task with c successes, then average over tasks:
from math import comb, sqrt
def pass_at_k(n: int, c: int, k: int) -> float:
"""P(at least one of k samples passes), from n trials with c passes."""
if n - c < k:
return 1.0
return 1 - comb(n - c, k) / comb(n, k)
def pass_hat_k(n: int, c: int, k: int) -> float:
"""P(all k samples pass), from n trials with c passes."""
return comb(c, k) / comb(n, k)
def wilson_ci(successes: int, n: int, z: float = 1.96) -> tuple[float, float]:
"""95% confidence interval for a pass rate (works near 0% and 100%)."""
p = successes / n
center = (p + z**2 / (2 * n)) / (1 + z**2 / n)
half = z * sqrt(p * (1 - p) / n + z**2 / (4 * n**2)) / (1 + z**2 / n)
return center - half, center + half
# One task, 8 trials, 6 passed (75% per-trial success)
print(f"pass@1 = {pass_at_k(8, 6, 1):.2f}") # 0.75
print(f"pass@3 = {pass_at_k(8, 6, 3):.2f}") # 1.00
print(f"pass^3 = {pass_hat_k(8, 6, 3):.2f}") # 0.36
# Suite: 40 of 50 tasks passed
lo, hi = wilson_ci(40, 50)
print(f"80% pass rate, n=50 -> 95% CI {lo:.0%} to {hi:.0%}") # 67% to 89%
lo, hi = wilson_ci(400, 500)
print(f"80% pass rate, n=500 -> 95% CI {lo:.0%} to {hi:.0%}") # 76% to 83%
The pass@k estimator is the unbiased one from OpenAI's Codex paper; the pass^k estimator is the one from tau-bench. Both need n of at least k trials per task.
4. Variables: what changes the score
An eval score is a function of the whole setup, not only the model. Fix and record every variable you are not testing, or you will compare noise.
| Variable | Examples | Why it matters |
|---|---|---|
| Model and version | Exact model ID, snapshot date | "Same" model names change behind aliases. Pin versions. |
| Prompt and instructions | System prompt, tool descriptions, few-shot examples | Often moves scores more than switching models. |
| Sampling settings | Temperature, top-p, max tokens, reasoning effort, seed | Higher temperature means more variance per trial. Evaluate at production settings. |
| Tools and environment | Available tools, API mocks, database state, simulated user | Shared state between trials (leftover files, caches) causes correlated failures. Reset per trial. |
| Harness and infrastructure | Timeouts, CPU and memory limits, retries, max turns | Anthropic measured a 6-point swing on Terminal-Bench 2.0 from resource settings alone. |
| Retrieval | Index version, chunking, top-k | For RAG, a retrieval change is a system change. |
| Grader | Judge model, judge prompt, rubric version, code checks | Changing the judge changes the ruler. Re-baseline when you do. |
| Dataset | Task version, sampling of tasks, train/test contamination | Public benchmarks leak into training data; scores rise without real capability gains. |
Independent variable: the one thing you change (new prompt, new model). Dependent variable: the metric. Controlled variables: everything else in the table above. This is the whole experimental design, and it does not depend on the tool you use.
5. Statistics: how much to trust a number
A score without an interval is an anecdote. These are the few statistical ideas that cover most eval decisions, largely following Anthropic's paper Adding Error Bars to Evals (Miller, 2024).
| Concept | Meaning | Practical rule |
|---|---|---|
| Variance | How much a score would move if you re-ran the eval | Comes from three places: which tasks you picked, sampling randomness per trial, and grader noise. |
| Standard error (SE) | Standard deviation of the score across hypothetical reruns. For a pass rate: SE = sqrt(p(1 - p) / n) | The building block of every interval below. |
| 95% confidence interval (CI) ⚠️ | Score plus or minus 1.96 x SE. The range that would contain the true value in 95% of reruns | Always report it. If two intervals overlap a lot, you do not know which version is better. |
| Sample size (n) | Number of independent tasks | Margin of error at 95% is roughly 1 / sqrt(n) at worst. 100 tasks: about plus or minus 10 points. 400 tasks: plus or minus 5. 1,000: about 3. |
| Trials per task (k) | Repeated runs of the same task | Reduces sampling noise and is required for pass^k. More trials do not fix too few tasks. |
| Clustered SE | SE that accounts for related tasks (several questions about the same document, variants of the same scenario) | Related tasks are not independent. Naive SE can be over 3x too small. |
| Paired comparison | Compare two versions on the same tasks, using per-task differences | Much more sensitive than comparing two independent averages. The default for A vs. B. |
| Statistical power | Chance that the eval detects a real difference of a given size | Decide the minimum difference you care about first, then size the eval to detect it. |
| Multiple comparisons | Testing many prompts or models and picking the best | The winner is partly luck. Confirm it on a fresh run or held-out set. |
| Rule of three | If 0 failures in n trials, the 95% upper bound on the failure rate is about 3 / n | Zero bad outputs in 100 tries still allows up to about 3%. Safety claims need large n. |
| Inter-rater agreement | Percent agreement or Cohen's kappa (agreement corrected for chance) between graders | Tells you how much signal your human labels and judges contain. Low kappa means a vague rubric. |
How big must the eval be? A quick guide for a pass rate near 50% (the worst case):
| Tasks (n) | 95% margin of error | Can reliably detect a difference of about |
|---|---|---|
| 20-50 | plus or minus 14-22 points | Large regressions only. Fine for a first suite built from real failures. |
| 100 | plus or minus 10 points | Big wins and big breaks |
| 400 | plus or minus 5 points | Typical prompt or model changes (paired) |
| 1,000+ | plus or minus 3 points | Small differences, leaderboard-grade claims |
Paired comparisons on the same tasks detect smaller differences than these numbers suggest, because they remove the "which tasks" variance. A minimal paired comparison:
from statistics import mean, stdev
# Per-task scores for the same 8 tasks (in practice: hundreds), old vs. new prompt
old = [1, 0, 1, 1, 0, 1, 0, 1]
new = [1, 1, 1, 1, 0, 1, 1, 1]
diffs = [b - a for a, b in zip(old, new)]
d = mean(diffs)
se = stdev(diffs) / len(diffs) ** 0.5
print(f"Improvement: {d:+.0%}, 95% CI {d - 1.96 * se:+.0%} to {d + 1.96 * se:+.0%}")
# Improvement: +25%, 95% CI -7% to +57% -> not conclusive with 8 tasks
6. Accuracy and quality depend on the use case
"Accuracy" is not a property of a model. It is a property of a system on a task, against criteria someone chose. The same answer can be accurate for a brainstorming tool and unacceptable for a billing agent. Define both words per use case:
- Accuracy: does the output match what is true or required? Requires a reference, a verifiable outcome, or a fact check.
- Quality: is it good to receive? Usefulness, clarity, completeness, tone, safety, cost and speed. Usually multi-dimensional and judged by rubric or preference.
| Use case | "Accurate" means | Primary metric | Guardrail metrics |
|---|---|---|---|
| Support or operations agent | The right end state, within policy, every time | pass^k on outcome checks | Policy violations, escalation rate, cost and turns per task |
| Coding agent | Hidden tests pass, nothing else breaks | Pass rate (pass@1) on held-out tasks | Regressions, review acceptance, cost, time |
| Research or browsing agent | Correct, sourced answer to a hard question | Answer accuracy against verified references | Citation faithfulness, steps, cost |
| RAG Q&A chatbot | Correct and supported by the retrieved sources | Correctness plus faithfulness | Hallucination rate, abstention rate, retrieval recall |
| Open-ended chatbot or writing assistant | Rarely one right answer: helpful, clear, safe | Win rate vs. current version (pairwise) | Rubric scores per criterion, refusal rate, length |
| Zero-shot classification or routing | Correct label | Precision, recall, F1 per class (macro F1 if imbalanced) | Confusion matrix, calibration |
| Zero-shot extraction to JSON | Every field correct and schema-valid | Field-level F1, exact match per document | Schema validity rate, latency |
| Summarization | Says only what the source says, and the important parts | Faithfulness plus coverage of key points | Length, readability |
| Image generation (Stable Diffusion, Imagen and similar) | The image contains what the prompt asked for | Prompt adherence (question-based checks, human ratings) | Aesthetic preference, diversity, artifacts, safety |
A useful habit: write the criteria for "a perfect output" and "an unacceptable output" for ten real examples before choosing any metric. The metric should then be obvious.
GenAI beyond text: image generation
Image models need the same concepts with different graders:
| Metric | What it measures | Watch out for |
|---|---|---|
| FID (Fréchet Inception Distance) | Distance between the distributions of generated and real images. Lower is better | Distribution-level only: says nothing about whether one image matches its prompt. Needs thousands of samples and is biased at small n. |
| CLIPScore | Similarity between the image and the prompt in a shared embedding space | Weak on counting, spatial relations and attribute binding ("red cube left of a blue ball"). |
| Question-based alignment (GenEval, TIFA, Google DeepMind's Gecko) | Break the prompt into checkable facts (objects, counts, colors, positions) and verify each with a detector or a VLM | Much closer to human judgment than CLIPScore on compositional prompts. The checker model has its own errors. |
| Human preference | Pairwise "which image is better / closer to the prompt?" | The reference signal. Ask about one criterion at a time: adherence, aesthetics, realism. |
| Diversity and safety | Variation across seeds, demographic spread, unsafe content rate | A model that ignores the seed, or always draws the same face, can still score well on alignment. |
The pattern is the same as for text: a cheap automatic proxy, calibrated against human ratings on a sample, plus explicit checks for what must never happen.
7. Benchmarks: useful, but not your eval
Public benchmarks help you shortlist models. They do not tell you how a model will do on your tasks, with your tools and your definition of success. Snapshot as of November 2026:
| Benchmark | What it tests | Note |
|---|---|---|
| SWE-bench Verified / Pro | Fixing real GitHub issues, graded by hidden tests | OpenAI stopped reporting Verified in February 2026, citing flawed tests and training data contamination, and recommends SWE-bench Pro. |
| Terminal-Bench 2.0 | Agentic tasks in a real terminal environment | Scores are sensitive to harness resources (section 4). |
| tau-bench / tau2-bench | Customer-service agents talking to a simulated user under domain policies | Source of pass^k. tau2 adds a telecom domain where the user also has tools. |
| GAIA / Gaia2 | General assistant tasks: search, tools, multi-step reasoning | Gaia2 (Meta, with Hugging Face) is read-and-write, asynchronous and time-sensitive: 1,120 scenarios. |
| METR time horizon | Length of tasks (in skilled-human time) an agent completes with 50% success | Has doubled roughly every 7 months since 2019. A trend measure more than a leaderboard. |
| LMArena | Pairwise human preference between chatbots | Bradley-Terry ratings with confidence intervals. Measures preference, not correctness. |
| SimpleQA | Short factual questions | Useful to see accuracy, error rate and abstention side by side. |
Warning signs when reading any benchmark number: no interval, no n or k, a harness you cannot reproduce, a saturated benchmark (everyone above 90%), and a benchmark that has been public long enough to leak into training data.
8. A minimal, stack-independent eval process
Every vendor guide, from Anthropic and OpenAI to Google, Microsoft and Amazon, converges on roughly the same loop:
- Define success for the use case: the criteria, the hard fails, the primary and guardrail metrics, and the ship threshold.
- Collect tasks from real usage and real failures. 20-50 is a fine start; grow it with every bug report. Include cases where the right behavior is to refuse, ask, or escalate.
- Build graders: code first, model judges for the rest, calibrated against human labels.
- Run with k trials per task in clean, isolated environments, at production settings.
- Report the metric with n, k, a 95% CI and the dataset, prompt, model and grader versions.
- Compare versions paired on the same tasks; read the transcripts of the tasks that changed.
- Gate releases on the regression suite; track capability evals over time.
- Monitor production: sample real traces, grade them with the same graders, and feed new failures back into step 2.
Amazon describes the same idea in layers: evaluate the final outcome, then the components (intent detection, tool use, memory, reasoning) to find why it failed, and add periodic human audits of traces. Microsoft's agent evaluators split it similarly into intent resolution, tool-call accuracy and task adherence.
Same word, different meaning
| Term | Meaning A | Meaning B |
|---|---|---|
| Accuracy | Correct / total (a classification metric) | Informal "how good is it", which hides the real criteria |
| CI | Confidence Interval (statistics) | Continuous Integration (where your regression evals should run) |
| Reference | Ground-truth answer used by a grader | Reference-free evaluation: judging with a rubric and no ground truth |
| pass@1 | Success rate from one greedy (temperature 0) run per task | Success rate averaged over many sampled trials per task. Check the method |
| Evaluator | The grader component | A person (human evaluator, annotator) |
| Benchmark | A public, standardized eval | Any internal eval suite, in casual use |
| Sample | One trial (one generated output) | A subset of tasks drawn from a larger dataset |
| Precision | TP / (TP + FP) | Numerical precision (FP16, BF16) in model serving |
Why this matters
Evals are how AI teams replace opinions with evidence. A few practical takeaways:
- Concepts over tools. Tasks, criteria, rubrics, graders, metrics and intervals are the same everywhere. Frameworks and hosted eval products come and go; a well-defined task set and rubric outlives all of them.
- Define success per use case, before measuring. "Accurate" for a billing agent and for a brainstorming chatbot are different metrics.
- Report consistency, not just capability. pass@k sells demos; pass^k predicts customer experience.
- Every number needs n, k and an interval. 82% vs. 79% on 100 tasks is not a result.
- Metrics come in pairs. Accuracy with abstention, quality with cost, automatic judges with human calibration. Optimizing one alone usually breaks the other.
Final Thoughts
Most AI failures in production are not surprises in hindsight. They were in the long tail nobody tested, in the inconsistency nobody measured, or in a score whose error bar nobody computed.
You do not need a large platform to avoid them. You need a few dozen real tasks, clear criteria, an honest grader, and the discipline to report what the numbers can and cannot tell you. Start there, and grow the eval every time the system surprises you.
Sources
- Anthropic, Demystifying evals for AI agents (January 2026): definitions of task, trial, grader, transcript, outcome and harness; grader types; pass@k vs. pass^k; capability vs. regression evals; saturation.
- Anthropic, Quantifying infrastructure noise in agentic coding evals (2026): resource settings shift Terminal-Bench 2.0 scores by up to 6 points.
- Evan Miller (Anthropic), Adding Error Bars to Evals: A Statistical Approach to Language Model Evaluations (2024): standard errors, clustered SEs, paired differences, power analysis.
- OpenAI, Evaluation best practices: eval process, LLM-as-a-judge guidance, anti-patterns such as vibe-based evals.
- OpenAI, Why language models hallucinate (2025): accuracy-only scoring rewards guessing; report error and abstention rates.
- OpenAI, Why we no longer evaluate SWE-bench Verified (February 2026).
- Chen et al. (OpenAI), Evaluating Large Language Models Trained on Code (2021): unbiased pass@k estimator.
- Yao et al. (Sierra), tau-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains (2024): pass^k.
- Google Cloud, Evaluate Gen AI agents: trajectory exact, in-order and any-order match, precision and recall.
- Microsoft, Agent evaluators in Microsoft Foundry: intent resolution, tool-call accuracy, task adherence.
- Amazon, Evaluating AI agents: Real-world lessons from building agentic systems at Amazon (2026): layered agent metrics, human audits of traces.
- Meta, ARE: Scaling Up Agent Environments and Evaluations and Hugging Face, Gaia2 and ARE (2025).
- METR, Measuring AI Ability to Complete Long Tasks (2025): 50% time horizon.
- Chiang et al., Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference (2024): Bradley-Terry ratings and intervals.
- Ghosh et al., GenEval: An Object-Focused Framework for Evaluating Text-to-Image Alignment (2023), and Wiles et al. (Google DeepMind), Revisiting Text-to-Image Evaluation with Gecko (2024).