This playbook is for engineering teams who generate long-form content—reports, articles, summaries, or documentation—from source material and need to catch where the output gradually diverges from the evidence. Unlike single-claim hallucination checks, factual drift detection identifies the specific sentence where grounding weakens and measures how the severity accumulates across the output. The ideal user is an AI engineer or evaluation lead building automated quality gates for a production pipeline where outputs routinely exceed 500 words and source fidelity must be auditable at scale.
Prompt
Factual Drift Detection in Long-Form Output

When to Use This Prompt
Define the job, reader, and constraints for detecting factual drift in long-form AI outputs.
Use this prompt when you have a complete generated text and the full source material it was supposed to be grounded in. The prompt requires both pieces as input and expects a structured drift report: the first sentence where grounding weakens, a severity score per section, and a cumulative drift trajectory. Do not use this prompt for short-form outputs under 200 words, for real-time streaming generation where the full text isn't available, or when the source material is ambiguous or multi-document without clear provenance. The prompt assumes a single, authoritative source context; for multi-source RAG outputs with conflicting evidence, pair this with a source conflict detection prompt first.
This prompt is a detection tool, not a repair tool. It tells you where and how badly grounding failed, but it does not rewrite the output. After running drift detection, you should route flagged outputs to a repair or regeneration workflow, log the drift report for monitoring dashboards, and escalate high-severity drift to human review. For regulated or high-stakes domains—healthcare, legal, finance—always require human sign-off on drift reports before any downstream action. Wire this into your CI/CD evaluation suite as a pre-release gate, not as a one-off spot check.
Use Case Fit
Where factual drift detection works well and where it introduces risk. This prompt is designed for long-form content verification, not short-answer QA or real-time chat.
Good Fit: Long-Form Content Verification
Use when: you generate reports, articles, summaries, or documentation exceeding 500 words where gradual divergence from source material is the primary risk. Guardrail: Pair with sentence-level grounding verification for precise drift localization.
Bad Fit: Real-Time Chat or Single-Sentence QA
Avoid when: the output is a single sentence or short paragraph where drift is binary rather than cumulative. Guardrail: Use a simpler hallucination detection prompt for short-form outputs to reduce latency and token cost.
Required Inputs: Source Material and Full Output
What to watch: This prompt requires both the complete source material and the full generated output. Partial context or truncated sources produce unreliable drift measurements. Guardrail: Validate input completeness before running the prompt; reject runs with missing or truncated source documents.
Operational Risk: Cumulative Drift Blind Spots
Risk: Drift detection may miss subtle factual distortions that accumulate across multiple generation runs or sessions. Guardrail: Implement cross-reference consistency checks across related outputs and maintain a drift severity threshold for automated alerts.
Not a Replacement for Human Review in High-Stakes Domains
Risk: Automated drift detection can produce false negatives, especially with nuanced or domain-specific content. Guardrail: Require human review for outputs in healthcare, legal, financial, or safety-critical contexts. Use the prompt's drift severity score to prioritize the review queue.
Model Sensitivity: Judge Drift Requires Calibration
Risk: Different LLM judges may disagree on where grounding weakens, especially at borderline sentences. Guardrail: Calibrate the drift detection judge against human-annotated examples and monitor inter-rater reliability across evaluation runs.
Copy-Ready Prompt Template
A reusable prompt template for detecting factual drift in long-form AI outputs against source material.
This template is designed to detect factual drift—the gradual divergence of a generated text from its source material. Unlike simple hallucination checks that flag individual unsupported claims, this prompt identifies the sentence where grounding weakens and measures the cumulative severity of drift across the output. It is built for teams generating long-form content such as reports, articles, summaries, or documentation where a model may start faithfully but slowly introduce unsupported assertions, exaggerations, or fabrications as the output lengthens.
codeYou are a factual drift auditor. Your task is to compare a [GENERATED_OUTPUT] against its [SOURCE_MATERIAL] and identify where the generated text begins to diverge from the source. ## INPUT - Generated Output: [GENERATED_OUTPUT] - Source Material: [SOURCE_MATERIAL] ## OUTPUT SCHEMA Return a JSON object with the following structure: { "drift_detected": boolean, "drift_start_sentence_index": integer or null, "drift_start_sentence_text": string or null, "drift_severity": "none" | "minor" | "moderate" | "severe" | "critical", "sentence_by_sentence_analysis": [ { "sentence_index": integer, "sentence_text": string, "grounding_status": "fully_grounded" | "partially_grounded" | "ungrounded" | "contradicted", "supporting_source_excerpt": string or null, "drift_explanation": string or null } ], "cumulative_drift_summary": string, "recommended_action": "pass" | "flag_for_review" | "reject" | "regenerate_from_drift_point" } ## CONSTRAINTS - [CONSTRAINTS] ## INSTRUCTIONS 1. Read the entire [SOURCE_MATERIAL] first to establish the ground truth. 2. Process the [GENERATED_OUTPUT] sentence by sentence. 3. For each sentence, determine whether its factual content is: - **fully_grounded**: All claims are directly supported by the source. - **partially_grounded**: Some claims are supported, but others are not present in the source. - **ungrounded**: Claims are not found in the source material at all. - **contradicted**: Claims directly conflict with the source material. 4. Identify the first sentence where grounding status shifts from fully_grounded to any weaker status. This is the drift start point. 5. Assess cumulative drift severity across the entire output, not just the first divergence. 6. If no drift is detected, set drift_start_sentence_index to null and drift_severity to "none". 7. Provide a cumulative_drift_summary that explains the pattern of divergence. 8. Recommend an action based on severity and the output's intended use context: [RISK_LEVEL]. ## EXAMPLES [EXAMPLES]
Adaptation guidance: Replace [GENERATED_OUTPUT] with the long-form text under evaluation and [SOURCE_MATERIAL] with the reference documents, retrieved context, or ground-truth data. Use [CONSTRAINTS] to inject domain-specific rules such as acceptable paraphrase boundaries, tolerance for inferred conclusions, or field-specific fact definitions. The [EXAMPLES] placeholder should be populated with 2–3 annotated few-shot examples showing both drift and no-drift cases, including edge cases where drift is subtle. Set [RISK_LEVEL] to low, medium, high, or critical to calibrate the recommended_action threshold—higher risk levels should bias toward flag_for_review or reject for moderate drift.
What to do next: Wire this prompt into a post-generation evaluation step in your pipeline. Run it after every long-form generation where source fidelity matters. Store the structured JSON output for monitoring dashboards and regression testing. If drift is detected at severe or critical levels, trigger a regeneration from the drift start point rather than attempting a full rewrite. For high-risk domains, always route flag_for_review outputs to a human reviewer before publication.
Prompt Variables
Required inputs for the Factual Drift Detection prompt. Each variable must be populated before execution. Missing or malformed inputs will cause unreliable drift scoring.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SOURCE_DOCUMENT] | The complete reference text against which generated output is compared for drift detection | A 12-paragraph regulatory filing or a 5-section technical specification | Must be non-empty string. Minimum 200 characters recommended for meaningful drift analysis. Truncation risks false negatives on late-stage drift. |
[GENERATED_OUTPUT] | The long-form AI-generated text to evaluate for factual drift from the source | A 10-paragraph summary or a multi-section report generated by an LLM | Must be non-empty string. Should be at least 3 sentences for drift trajectory analysis. Single-sentence inputs return null drift score with warning. |
[DRIFT_THRESHOLD] | The minimum semantic divergence score that triggers a drift flag for a sentence | 0.35 | Float between 0.0 and 1.0. Lower values increase sensitivity. Typical range: 0.25-0.50. Values below 0.2 produce excessive false positives. Must be parseable as float. |
[CUMULATIVE_DRIFT_WINDOW] | Number of consecutive sentences evaluated together for cumulative drift severity scoring | 3 | Integer between 2 and 10. Smaller windows detect abrupt drift; larger windows capture gradual divergence. Must be parseable as integer. Null defaults to 3. |
[OUTPUT_SCHEMA] | The expected structure for drift detection results, specifying sentence indexing, drift scores, and severity labels | JSON schema with fields: sentence_index, drift_score, drift_severity, evidence_gap, cumulative_drift_flag | Must be valid JSON schema or enum reference. Schema must include sentence_index, drift_score, and drift_severity fields at minimum. Invalid schema triggers parse failure before evaluation. |
[SEVERITY_RUBRIC] | The ordinal scale mapping drift scores to severity labels for consistent classification | minor: 0.0-0.25, moderate: 0.26-0.50, significant: 0.51-0.75, critical: 0.76-1.0 | Must define non-overlapping ranges covering 0.0-1.0. Gaps in range coverage cause unclassified drift scores. Must be parseable as ordered mapping. Null defaults to built-in 4-tier rubric. |
[ABSTENTION_CONDITIONS] | Rules for when the evaluator should decline to score due to insufficient evidence or ambiguous grounding | Abstain when source and output discuss different topics or when output is purely stylistic commentary | Must be non-empty string or null. Null allows scoring in all cases. Ambiguous abstention rules cause inconsistent null returns. Test with deliberately mismatched source-output pairs. |
[MAX_SENTENCES] | Upper limit on number of sentences to evaluate, preventing unbounded processing on very long outputs | 50 | Integer between 10 and 500. Must be parseable as integer. Null defaults to 100. Outputs exceeding this limit are truncated with a warning flag in the response metadata. |
Implementation Harness Notes
How to wire the Factual Drift Detection prompt into a production evaluation pipeline with validation, retries, and human review gates.
This harness treats the drift detection prompt as a scoring function inside a larger evaluation loop. The prompt expects a long-form generated text and its source material, and it returns a structured JSON report identifying the first sentence where grounding weakens and a cumulative drift severity score. In production, you should not call this prompt once and trust the result. Instead, wrap it in a validation layer that checks the output schema, retries on malformed responses, and routes high-severity drift cases to a human review queue. The harness must also handle chunking for outputs that exceed the model's context window, since long-form content can easily span tens of thousands of tokens before the source material is even added.
Schema validation and retry logic form the first layer of the harness. The prompt template requests a specific JSON output shape with fields like drift_start_sentence_index, drift_severity_score, and sentence_annotations. After each model call, validate that the response parses as valid JSON, contains all required fields, uses the correct types, and falls within expected ranges (e.g., severity scores between 0.0 and 1.0). If validation fails, retry up to two times with an error-repair prompt that includes the original output and a specific validation error message. After three failures, log the raw response and escalate for manual review rather than silently accepting a broken output. For high-stakes content—medical summaries, legal analysis, financial reports—consider requiring a second judge model call and comparing drift scores; if the two judges disagree by more than 0.2 on severity, flag for human adjudication.
Chunking and context management are essential for long-form outputs. If the generated text plus source material exceeds your model's context limit, split the generated text into overlapping chunks of 2,000–4,000 tokens with a 200-token overlap between chunks. Run the drift detection prompt on each chunk independently, always including the full source material as context. Then merge the results by scanning chunk annotations sequentially: the first chunk where drift is detected marks the overall drift start point, and the maximum severity score across chunks becomes the overall drift severity. Be aware that chunk boundaries can mask drift that spans across them, so the overlap is critical. Log chunk-level results alongside the merged report for debugging. For models with native long-context support (128K+ tokens), you may skip chunking but should still monitor latency and cost, as drift detection on very long texts can become expensive at scale.
Human review routing should be triggered by configurable thresholds. Set a severity threshold (e.g., 0.7 or above) that automatically creates a review task in your queue system, attaching the generated text, source material, drift report, and the specific sentences flagged as ungrounded. For regulated domains, lower this threshold to 0.4 and require human sign-off before the content reaches end users. Store every drift detection result—including passed checks—in an evaluation log with timestamps, model version, prompt version, and source document identifiers. This audit trail lets you track drift patterns over time, identify which content types or sources correlate with higher drift rates, and measure whether prompt or model changes improve grounding. Avoid the temptation to auto-correct drifted content using the same model that produced it; instead, route corrections through a separate repair prompt or human editor to prevent compounding errors.
Common Failure Modes
Factual drift in long-form output is a gradual, often silent failure. The model starts grounded but slowly diverges, introducing unsupported claims, conflating sources, or fabricating details. These cards identify the most common breakage patterns and the operational guardrails that catch them before they reach production.
Progressive Source Amnesia
Risk: The model forgets or ignores the source material as output length increases, defaulting to parametric knowledge. The first paragraph is perfectly grounded; the fifth invents details not present in any provided document. Guardrail: Implement a sliding-window re-grounding check. Every N sentences, re-prompt the model to verify the last block against the original source and flag divergence immediately.
Cross-Source Contamination
Risk: When multiple documents are provided, the model blends facts from separate sources into a single claim, creating a statement no single source supports. This is especially common in multi-document summarization. Guardrail: Require per-claim source attribution in the output schema. Run a post-generation verification step that checks each claim against its cited source individually, not against the merged context.
Confidence-Weighted Fabrication
Risk: The model expresses low-confidence inferences with the same assertive tone as grounded facts. Readers cannot distinguish between a direct extraction and a plausible-sounding guess. Guardrail: Add an explicit uncertainty protocol to the prompt. Require the model to tag claims as [DIRECT], [INFERRED], or [UNCERTAIN] and strip or flag the latter two categories before publication.
Temporal and Ordinal Drift
Risk: The model scrambles the sequence of events, dates, or procedural steps from the source, reordering them into a logical but factually incorrect narrative. This is common in timeline generation and SOP documentation. Guardrail: For time-sensitive or ordered content, include a post-generation temporal consistency check that compares the output's event sequence against a structured timeline extracted from the source.
Quantitative Decay
Risk: Numerical values degrade as the output progresses. Exact figures become approximations, percentages shift, and units are dropped or converted incorrectly. A source stating "37.4%" becomes "about a third" by the conclusion. Guardrail: Enforce a strict numerical fidelity rule in the prompt:
Narrative Closure Over Factual Accuracy
Risk: The model prioritizes a coherent, well-structured conclusion over factual accuracy, inventing a satisfying summary or resolution that the source material does not support. This is a form of hallucination driven by discourse expectations. Guardrail: Add an explicit anti-closure instruction:
Evaluation Rubric
Criteria for testing whether a factual drift detection prompt correctly identifies where grounding weakens in long-form output. Use this rubric to calibrate the detector before integrating it into a production pipeline.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Drift Boundary Detection | Identifies the exact sentence where grounding first weakens, matching human annotation within a ±1 sentence tolerance | Drift boundary is off by more than 1 sentence or flagged on a fully grounded sentence | Compare detector output against 20 human-annotated long-form samples with known drift points; measure boundary offset distance |
Pre-Drift Grounding Accuracy | All sentences before the detected drift boundary are correctly labeled as grounded with no false positives | A grounded sentence before the boundary is incorrectly flagged as ungrounded or hallucinated | Audit pre-boundary sentences in 10 samples; require 100% grounded-label accuracy in the pre-drift region |
Cumulative Drift Severity Score | Severity score correlates with human severity ratings at Spearman ρ ≥ 0.8 across a test set | Severity score is flat across samples with obviously different drift magnitudes or inverts the ranking | Run 30 sample pairs through detector and human raters; compute rank correlation between detector severity and median human severity |
Source Evidence Traceability | Every drift flag includes a specific source passage that should have grounded the sentence but was contradicted or omitted | Drift flag cites a source passage that actually supports the sentence or cites a non-existent passage | For 15 flagged drift sentences, manually verify that the cited source passage fails to support the claim; require ≥90% correct attribution |
False Positive Rate on Fully Grounded Texts | Zero drift flags on outputs that are fully grounded against provided sources | Detector flags drift in a text where every sentence is verifiably supported by the source material | Run detector on 10 fully grounded long-form outputs; require 0 drift flags across the set |
Multi-Source Drift Handling | Correctly identifies drift when output shifts from one source to another unsupported claim, even if the new claim sounds plausible | Detector misses drift when the output pivots to a different topic not covered by any provided source | Test with 10 samples where drift involves topic shifts to unsupported material; require ≥85% recall on drift detection |
Output Format Compliance | Returns valid JSON matching [OUTPUT_SCHEMA] with all required fields present and correctly typed | Output is malformed JSON, missing required fields, or contains extra unparseable text outside the schema | Validate output against JSON Schema for 50 runs; require 100% parse success and schema conformance |
Latency and Token Efficiency | Completes evaluation of a 2000-word output in under 15 seconds with token usage consistent across similar-length inputs | Latency exceeds 30 seconds or token count varies by more than 3x for same-length inputs | Benchmark 20 runs on fixed-length samples; measure p95 latency and token count variance |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base prompt and a single long-form output. Use a simple JSON schema with drift_points as an array of sentence indices and severity as a string enum (none, minor, major). Skip cumulative scoring and focus on flagging the first drift point. Run against 10-20 samples manually reviewed for ground truth.
code[OUTPUT_SCHEMA]: { "drift_detected": boolean, "first_drift_sentence_index": number | null, "drift_points": [ { "sentence_index": number, "sentence_text": string, "drift_type": "unsupported_claim" | "contradiction" | "speculation" | "omission_shift", "severity": "minor" | "major" } ] }
Watch for
- Over-flagging stylistic variation as factual drift
- Missing gradual drift that happens across multiple sentences
- No baseline for what "normal" variation looks like in your domain

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us