multiple-choice-evaluation

Grades multiple-choice model outputs with an LLM judge instead of fragile letter regex parsing.

75|7|Updated May 2, 2026
One-click install
npx skills add https://github.com/zjunlp/Mechanist --skill multiple-choice-evaluation-zjunlp
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: multiple-choice-evaluation
Source: https://github.com/zjunlp/Mechanist/tree/main/skills/experiment-tips/multiple-choice-evaluation
Command: npx skills add https://github.com/zjunlp/Mechanist --skill multiple-choice-evaluation-zjunlp

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Multiple-choice evaluations that parse answer letters from free-form model generations with regex silently mislabel 5-15% of rows, fabricating or destroying measured effects. This Skill replaces naive letter parsing with a three-way LLM-judge verdict and controls the position and token biases that corrupt MCQ metrics. ## Core Features & Use Cases - LLM-Judge Grading: Grades each generation with a three-way CORRECT / INCORRECT / OTHER verdict, using either extract-then-compare or gold-relative direct judge prompts, so refusals and off-topic outputs are never coerced into a letter. - Bias Controls: Rotates option order (A/B swap or fixed permutations) to expose position bias, and warns against log-prob-only scoring that is blind to output corruption and token bias. - Parser-Artifact Diagnosis: Provides concrete signals — orientation instability, rising OTHER rates, regex-vs-judge disagreement over 5% — that flag an effect as un-measured until the parser is fixed. - Use Case: After fine-tuning or steering a model, you run an A/B preference eval and the treated arm stops obeying "answer A or B only". This Skill grades the free-form outputs with a frozen judge across both orientations, revealing that the apparent 30% A-preference was a regex coercion artifact. ## Quick Start Use the multiple-choice-evaluation skill to grade my model's free-form answers on this A/B evaluation with an LLM judge instead of a letter regex, and report per-orientation results.

Frequently Asked Questions about multiple-choice-evaluation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I evaluate multiple-choice answers from free-form LLM output?

Send the raw generation plus the full question and option texts to an LLM judge that returns CORRECT, INCORRECT, or OTHER. Either extract the chosen letter and compare it to gold in code, or give the judge the gold letter and grade directly.

Why is regex parsing of answer letters unreliable in LLM evals?

A loose regex matches letters inside words like "At" or "a valid choice", while a tight regex misses formats like "(A)" or "I'd go with A". Two-bucket parsers also coerce refusals into whichever letter appears first, fabricating preference effects.

How do I control position bias in A/B multiple-choice evaluations?

Run every item in each orientation — an A/B swap for binary tasks or a fixed rotation of 2-4 permutations for A-D — and report per-orientation results. A sign flip or over 50% shrink under rotation indicates position bias, not a real effect.

Can I use log-prob scoring instead of generating text for MCQ evals?

Log-prob scoring is contaminated by token bias and cannot detect output corruption, since a broken model still yields clean-looking A-versus-B scores. Cross-check it against text generation plus a judge on a held-out slice and treat it as diagnostic only.

What should I do when no judge model is specified for the evaluation?

Do not pick a judge yourself, because the judge is part of the metric and changes what the headline number means. Log it as an open item and block the eval until the user supplies the model, base URL, and API key or a local judge path.