Calibration: Getting 'I Don't Know'
Give the model permission, vocabulary, and incentive to say 'I don't know' — abstention rules, confidence labels, and source-bound answers.
Spring the trap
First, watch the failure you're about to fix. Ask about something plausible that doesn't exist — a paper, a library function, an event — with no escape hatch in the prompt. The confident, detailed wrongness is your baseline.
Summarize the key findings of the 2021 Stanford study "Cognitive Load in Asynchronous Code Review" by Chen and Alvarez.VerifySome models fabricate a tidy summary; note exactly how confident it sounds. (Newer Claude and GPT versions may push back — that's calibration training working.)Open the exit
Models bluff partly because the framing implies an answer must exist. Explicitly authorize abstention and define what honest failure looks like — you're changing the incentive, not the knowledge.
Summarize the key findings of the 2021 Stanford study "Cognitive Load in Asynchronous Code Review" by Chen and Alvarez. Important: If you cannot verify this study exists, say exactly "I can't verify this study exists" and stop. Never reconstruct or guess at the contents of sources you're not certain of. An honest "I can't verify this" is a better answer than a plausible summary.VerifyThe model now declines plainly instead of improvising findings.Attach confidence labels
Where abstaining on everything uncertain is too blunt, make uncertainty visible instead. Force a confidence field with defined levels — the definitions matter more than the words, because they give the model criteria instead of vibes.
Answer the question, then rate your confidence: - high: standard, stable knowledge you'd expect any reference to agree on - medium: probably right, but details could be off — the user should verify - low: you are partly guessing — say which part Format: Answer: ... Confidence: high | medium | low Reason: one sentence on what drives the rating Question: Which PostgreSQL version first shipped native JSON support, and in what year?VerifyThe confidence line's reasoning references specifics (version numbers, dates) rather than generic hedging.Bind answers to a source
The strongest calibration pattern shrinks the truth set to documents you provide: the model may only assert what the source supports, must cite where, and has a mandatory token for everything else. This is RAG's answer discipline in miniature.
Answer using ONLY the document inside <doc> tags. Rules: - Every claim must quote or cite the exact line it comes from. - If the document does not contain the answer, output exactly: NOT IN SOURCE - Never supplement from general knowledge, even when you are confident. <doc> [paste your policy, contract, or runbook here] </doc> Question: [ask something the doc answers — then re-run with something it doesn't]VerifyThe answerable question returns cited claims; the unanswerable one returns NOT IN SOURCE instead of a plausible guess.Route on uncertainty in production
Calibration pays off when the system acts on it. Add UNKNOWN to your label set with a real definition, then route: confident answers flow through, UNKNOWN goes to retrieval, a stronger model, or a human. Track the abstention rate — rising UNKNOWN is an early-warning signal, and near-zero UNKNOWN on messy traffic means bluffing.
Classify the ticket into: billing, bug, how_to, feature_request, or UNKNOWN. Use UNKNOWN when: the text is ambiguous between labels, off-topic, garbled, or missing context you would need. UNKNOWN routes to a human — choosing it is correct behavior, never a failure. Output: {"label": "...", "why": "one short sentence"}VerifyGenuinely ambiguous tickets come back UNKNOWN with a sensible reason, instead of a coin-flip between plausible labels.