Skip to content
DriftCaught

Feature type

Evals for extraction

Extraction is the feature type where most of what matters is checkable in code. Schema conformance, field level accuracy against expected values, and format normalisation. Start with the eval baseline at $1,800 one-time.

Extraction pulls structured fields out of unstructured input: an invoice into line items, a contract into dates and parties, a support email into a ticket. It is the feature type where an eval suite is cheapest to build and easiest to read, because most of what matters has a right answer that a machine can compare.

What typically breaks in extraction after a model change

The output stops conforming to the schema

An extra key appears. A number arrives as a string. A field that was an object becomes an array with one object in it. Your parser throws, or worse, it does not throw and a downstream system stores the wrong type. This is the loudest failure and the easiest to catch, which is exactly why it should never be the only thing you check.

A field starts coming back empty

The shape stays valid and one field goes null. The invoice number was on the page and the model no longer returns it. Nothing errors. Downstream, a row lands with a gap in it and someone fills it in by hand for a month before anyone connects it to a model update.

Per-field reporting is what surfaces this. An aggregate pass rate across twelve fields moves by a few points when one field collapses entirely.

A value arrives that was never in the document

The field is populated, the type is right, and the value is wrong in a specific way: a plausible date, a plausible reference number, a party name assembled from context. An exact match against the expected value catches it. A schema check does not, and a human skim-reading the output usually does not either.

Formats and normalisation shift

Dates move between formats. Currency arrives with or without a symbol. An enum comes back in a different case, or with a synonym your mapping does not contain. The information is correct and your pipeline rejects it. This is why the scorer (one automated check that turns an output into a number or a pass and fail verdict) set holds both an exact match and a normalised match, with the gap between them reported rather than hidden.

The call itself breaks without any model swap

A provider change can break extraction at the request layer. Anthropic deprecated the temperature, top_p and top_k request parameters from Claude Opus 4.7 onward, and a non-default value now returns a 400 error[src]. [Anthropic] Extraction pipelines are the ones most likely to be sending a pinned low temperature, so this class of change lands here first. Dated entries for each provider are in the change log.

Pinning to a dated snapshot delays the problem without removing it. OpenAI announced on 11 June 2026 that the gpt-5-2025-08-07 snapshot would be shut down on 11 December 2026[src]. [OpenAI] OpenAI says it gives at least 6 months[src] notice before retiring a generally available model, at least 3 months for specialized variants, and that preview models may be retired with much shorter notice, such as 2 weeks, with no minimum committed. [OpenAI] A re-pin (moving a feature from one model id or snapshot to another, then rerunning the suite before the change ships) is a change like any other, and it needs a run before it ships. See EV-RERUN.

Which scorers apply

LangSmith documents four evaluator types: human review, rule based code functions, LLM as judge (a model that scores another model's output against a written standard) in reference free and reference based variants, and pairwise comparison of two application versions. [LangChain] For extraction, the rule based code functions do most of the work, and they are the reason this feature type is cheap to cover well. DeepEval defines a golden (a precursor to a test case holding an input plus the expected result, which becomes a full test case once your application produces the actual output), which is exactly the shape an extraction dataset already has. [Confident AI] Each scorer carries its limit.

  • Schema conformance code check. Catches shape, types, required keys, enum membership. Misses every question about whether the values are correct.
  • Field level exact match. Catches a wrong or invented value against the expected value. Misses correct values in a different format, which is why it never runs alone.
  • Field level normalised match. Catches the same value written differently, after dates, currency and casing are normalised. Misses a normalisation bug in your own mapping, so the gap against exact match is reported.
  • Null rate per field. Catches a field that quietly stopped being populated. Misses a field that is populated with something wrong.
  • Invented value check. Catches values absent from the source document, for fields where the source text is stored alongside the expected value. Misses inventions that happen to appear somewhere in a long document.

Free text fields are the exception. A clause summary or a reason code written in prose needs a judge, and a judge needs calibrating before its numbers count. Selection is written out in EV-SCORE.

What a baseline includes for this feature type

The eval baseline for extraction is built per field, not per document.

  • Real documents from your own intake, including the scanned, the multi-page and the badly formatted ones, because those are where field accuracy falls first.
  • An expected value for every field on every document, labelled by your domain expert, stored with the source text the value came from.
  • The schema itself as an artifact in the dataset, versioned with it, so a schema change is visible as a dataset change.
  • A normalisation map agreed in writing: date formats, currency, enum synonyms, whitespace and casing rules.
  • Per-field pass rates and per-field null rates in the report, with the aggregate shown second, so one collapsing field cannot hide behind eleven healthy ones.
  • threshold (the number agreed with you at which a measured drop counts as a finding on this dataset) values set per field rather than once for the feature, because an invoice total and a free text note do not deserve the same bar. Galtea recommends a tiered release gate in which blocking failures trigger a deploy block at any rate while regressions (a case that passed on the previous run and fails on this one) gate on the change in fail rate. [Galtea]

Which plan fits

Start with the eval baseline at $1,800 one-time. Extraction is the feature type where a baseline is closest to complete on its own, because the scorers that matter are rule based code checks that need no calibration and produce numbers you can read without us. The caveat is plain: the baseline is a one-time piece of work and includes no reruns, so it tells you where you stand today and nothing about next month. If the extracted fields feed billing, compliance or anything else that costs money to get wrong, One feature at $1,900 a month adds the rerun triggers and the monthly report. Promptfoo documents running evaluations in CI/CD to test changes before they reach production and to fail the build when quality thresholds are not met, which is the shape of the gate described in EV-THRESH. [Promptfoo]

Scorers that apply here

  • schema conformance code check
  • field level exact match
  • field level normalised match
  • null rate per field
  • invented value check

Every scorer catches something and misses something else. Which ones we run, and what each one cannot see, is set out in EV-SCORE.

Tracked changes with a note for Extraction

These entries carry an impact note for this feature type, each one citing a published practitioner source. The note says what this kind of change typically touches, not what it did to anyone's feature.

MetaNew version

muse-voice-transcribe-1.0

Meta made muse-voice-transcribe-1.0 available on the Meta Model API for streaming speech to text with speaker diarization. Meta lists the price as $3.00 per 1,000 minutes and offers a WebSocket streaming endpoint and an HTTP batch endpoint.

  • Summarisation: A transcription step feeds the summariser its input, so the text being summarised changes even though the summarising model did not. Galtea warns against updating ground truth to match model behaviour when the outputs shift.
  • Extraction: If fields are pulled out of a transcript, a new transcription model changes the input to every fixture. Braintrust tracks every change to a dataset so experiments can pin to specific versions, which is what keeps a before and after run comparable.
Rerun the suiteIf a transcription step feeds a downstream feature, run your existing audio fixtures through this model and compare the transcripts before switching any pipeline.

Source: Meta, Build with Muse Voice Transcribe on Meta Model API . verified 2026-09-22

AnthropicNew version

claude-fable-5-1, claude-mythos-5-1

Anthropic launched claude-fable-5-1 and claude-mythos-5-1 with a 1M token context window by default, 128k maximum output tokens and always on adaptive thinking, priced at $10 and $50 per million tokens. The notes state that tool_choice types any and tool are not supported and return a 400 error, and that thinking blocks are preserved only for the same model or a newer one.

  • Agent: tool_choice types any and tool now return an error, so the way the agent is made to call a tool changes. Arize Phoenix reads tool_path, the ordered tool calls with their arguments, and tool_io, what each tool was called with and what it returned, and warns that a correct looking answer can come from a broken path.
  • Extraction: Forcing a tool call is one way to fix an extractor's output shape, and that request now fails. DeepEval defines a golden as an input plus the expected result, which becomes a full test case once the application produces the actual output, so the same set reruns once the shape is settled.
Revisit the promptSearch your codebase for tool_choice values of any or tool, since those requests now fail, and check any code that replays thinking blocks across models.

Source: Anthropic, Claude API release notes . verified 2026-09-22

GoogleNew version

gemini-3.6-flash, gemini-3.5-flash-lite

Google released gemini-3.6-flash and gemini-3.5-flash-lite as generally available. The same entry deprecates the sampling parameters temperature, top_p and top_k.

  • Classification: Classifiers usually pin sampling parameters in the request builder, so a deprecation here is a change to caller code rather than to the model you chose. Anthropic made the same kind of change from Claude Opus 4.7 onward, where a non default temperature, top_p or top_k returns a 400 error.
  • Extraction: Removing sampling parameters changes the request every fixture runs through. Braintrust tracks every change to a dataset so experiments can pin to specific versions, which is what keeps the run before the edit comparable with the run after it.
Revisit the promptSearch your request builders for temperature, top_p and top_k on Gemini calls and plan their removal, then rerun the affected cases with the parameters dropped.

Source: Google, Gemini API changelog . verified 2026-09-22

OpenAINew version

gpt-5.5, gpt-5.5-pro

OpenAI released GPT-5.5 as a frontier model with a 1M token context window, structured outputs and extended prompt caching, alongside gpt-5.5-pro.

  • Extraction: Structured outputs decide whether extracted fields validate against your schema. DeepEval defines a golden as an input plus the expected result, which becomes a full test case once the application produces the actual output, so the same goldens rerun against the new model.
  • RAG: A larger window invites more retrieved text into the prompt. Ragas defines faithfulness as the share of claims in a response that can be inferred from the retrieved context, and it scores grounding in that context rather than factual truth.
Rerun the suiteRun your structured output cases against gpt-5.5 and check that responses still validate against your schemas before changing the model you serve.

Source: OpenAI, OpenAI API changelog . verified 2026-09-22

AnthropicNew version

claude-opus-4-7

Anthropic launched claude-opus-4-7 at $5 and $25 per million tokens, the same price as Claude Opus 4.6. The notes state that task budgets launched in beta, that high resolution image input is supported up to 2576 pixels on the long edge, and that an xhigh effort level was added.

  • Agent: Task budgets and a new effort level change how much the agent does before it answers. Future AGI writes that agent traces in contemporary frameworks are routinely 15-40 spans deep, so the comparison reads the trace rather than the final answer alone.
  • Extraction: Higher resolution image input means page and screenshot fixtures may be re-encoded, which changes the inputs themselves and not only the model. Braintrust tracks every change to a dataset so experiments can pin to specific versions.
Rerun the suiteRun the suite against claude-opus-4-7 at your current effort level first, then once at xhigh, and record what the extra effort changes before you make it the default.

Source: Anthropic, Claude API release notes . verified 2026-09-22

AnthropicTool change

claude-sonnet-4-5-20250929

Anthropic took structured outputs out of beta on the Claude API for Claude Sonnet 4.5, Claude Opus 4.5 and Claude Haiku 4.5. The notes state that the output_format parameter moved to output_config.format, and that structured outputs remain in public beta on Amazon Bedrock and Microsoft Foundry.

  • Extraction: The parameter that carries your schema moved, so the request changes while the fields you expect do not. DeepEval defines a golden as an input plus the expected result, which becomes a full test case once the application produces the actual output.
  • Classification: Where labels come back through a structured output, the shape of the response is part of the feature. Galtea recommends a tiered release gate in which blocking failures such as safety or policy violations block a deploy at any rate, while regressions gate on the change in fail rate.
Revisit the promptMove output_format to output_config.format in your request builders and rerun the schema validation cases on both the Claude API and any partner platform you use.

Source: Anthropic, Claude API release notes . verified 2026-09-22

OpenAINew version

gpt-5.2, gpt-5.2-chat-latest

OpenAI released GPT-5.2 as its flagship model, stating improvements in reasoning, vision, code generation and spreadsheet understanding, alongside gpt-5.2-chat-latest. The same day OpenAI released client side compaction for long running conversations.

  • Extraction: Vision and spreadsheet inputs are where extracted fields come from. DeepEval defines a golden as an input plus the expected result, which becomes a full test case once the application produces the actual output, so the document fixtures rerun unchanged against the new model.
  • Generation: Running the new flagship beside the snapshot you pin is pairwise comparison of two application versions, one of the four evaluator types LangSmith documents.
Rerun the suiteRun your suite against gpt-5.2 alongside the GPT-5.1 snapshot you pin, and pay attention to the vision and document cases the entry calls out.

Source: OpenAI, OpenAI API changelog . verified 2026-09-22

OpenAIDeprecation

gpt-3.5-turbo-instruct, babbage-002, davinci-002, gpt-3.5-turbo-1106

OpenAI announced on September 26, 2025 the deprecation of gpt-3.5-turbo-instruct, babbage-002, davinci-002 and gpt-3.5-turbo-1106, with a shutdown date of September 28, 2026. The listed migration target is gpt-5.6-terra.

  • Classification: Older ids tend to sit in batch jobs and internal classifiers that nobody watches. OpenAI says it gives at least 6 months' notice before retiring a generally available model, at least 3 months for specialized variants, and that preview models may be retired with much shorter notice, such as 2 weeks, with no minimum committed.
  • Extraction: Moving an extractor onto a current model is a release like any other. Galtea recommends a tiered release gate in which blocking failures such as safety or policy violations block a deploy at any rate, while regressions gate on the change in fail rate.
Plan a migrationCheck batch jobs and older internal tools for these four ids ahead of the stated shutdown date, and move any remaining traffic to a current model.

Source: OpenAI, OpenAI API deprecations . verified 2026-09-22

Which plan fits

Start with the eval baseline at $1,800, which is where the suite for this feature comes from. Then Eval baseline at $1,800.

What we cannot do

We cannot make a model deterministic or guarantee its outputs. We measure against an agreed dataset and thresholds and report what changed. We do not train or fine-tune models, and we do not replace human review for policy or legal decisions. Coverage is bounded by the dataset and the plan.

The longer version, with the reasoning

Entry product

Eval baseline

$1,800one-time, credited to the first month of any plan started within 60 days

Any team with one AI feature in production and no eval suite it trusts.

Included

  • Golden dataset built from your real failures and representative inputs, labelled and versioned
  • Scorers selected per feature type, judge calibrated against human verdicts with agreement reported
  • Thresholds agreed with you
  • First report with current scores and gaps
  • 45-minute walkthrough

Not included

  • Reruns after the baseline
  • Production sampling
  • Monthly reports

Questions about evaluating extraction

Do we need a judge for extraction?
Usually not for the fields with a fixed shape. A code check compares the extracted value against the expected value and needs no calibration. A judge earns its place only on free text fields, like a summary of a clause.
Our output is validated JSON already. Is that an eval?
It is a floor, not an eval. Schema validation proves the shape is right. It says nothing about whether the value in the field is the value that was in the document.
What counts as a regression here?
A case that passed on the previous run and fails on this one, measured per field. Per-field reporting matters, because an overall pass rate hides one field collapsing while nine stay fine.
We pinned to a dated model snapshot. Are we safe?
Pinning buys time, not permanence. OpenAI announced on 11 June 2026 that the gpt-5-2025-08-07 snapshot would be shut down on 11 December 2026. A pin has an expiry date, and the migration needs a run.
Can a provider change break extraction without changing the model?
Yes. Anthropic deprecated the temperature, top_p and top_k request parameters from Claude Opus 4.7 onward, and a non-default value now returns a 400 error. That breaks caller code with no model swap on your side.

Coverage is bounded by the dataset and the plan. A suite for this feature type says nothing about the other features you ship.