Spring til indhold
AI Ordbog

AI Ordbog

Structured output

En funktion der tvinger AI-modeller til at returnere svar i et præcist, maskinlæsbart format som JSON, XML eller et specifikt skema, i stedet for fritekst.

Kristian Primdal Skrevet og redigeret af Kristian Primdal · Sidst opdateret 18. marts 2026

Indhold

Hvad er structured output?

Structured output er en funktion der sikrer at en AI-model returnerer sit svar i et præcist, foruddefineret format, typisk JSON der følger et specifikt skema. I stedet for at modellen svarer i fritekst der kan variere i struktur og ordlyd, garanterer structured output at outputtet altid har de rigtige felter, de rigtige datatyper og den rigtige struktur.

Tænk på forskellen mellem at bede et menneske om at “beskrive vejret” versus at bede dem udfylde en formular med felterne temperatur, vindstyrke, nedbør og skydække. Fritekst-svaret kan være “Det er en fin dag med lidt sol og 18 grader.” Formular-svaret er: { "temperatur": 18, "vindstyrke": "svag", "nedbør": false, "skydække": "delvist" }. Begge indeholder den samme information, men kun formularen kan en computer pålideligt arbejde videre med.

Det er præcis hvad structured output gør for AI-modeller: det tvinger modellen til at “udfylde formularen” i stedet for at skrive frit.

Hvorfor er structured output vigtigt?

Problemet med fritekst

AI-modeller er trænet til at generere naturligt sprog. Det er deres styrke, men det er et problem når outputtet skal bruges af software:

Uforudsigelig struktur: Beder du en model om at ekstrahere navn og alder fra en tekst, kan svaret være:

  • “Navnet er Anna og hun er 34 år.”
  • “Anna, 34”
  • “{ navn: Anna, alder: 34 }”
  • “Personen hedder Anna. Alderen er 34.”

Alle svar er korrekte, men ingen af dem kan parses pålideligt af kode uden kompleks tekstbehandling.

Forkerte datatyper: Modellen kan returnere “toogredive” i stedet for 34, eller “cirka 30-35” i stedet for et præcist tal.

Manglende felter: Modellen kan glemme at inkludere et felt eller tilføje ekstra felter der ikke var forespurgt.

Formatfejl: Selv når modellen forsøger at returnere JSON, kan den producere ugyldigt JSON med manglende kommaer, forkerte citationstegn eller trailing text.

Løsningen: Garanteret struktur

Structured output løser disse problemer ved at garantere at modellens output altid overholder et specifikt skema. Det er ikke et håb eller en henstilling. Det er en garanti implementeret på systemniveau.

Hvordan fungerer structured output?

Constrained decoding

Den mest robuste form for structured output bruger constrained decoding. Det er en teknik der begrænser modellens mulige output-tokens under generering:

Normal generering:
Token 1 → Vælg fra alle ~100.000 tokens i vokabularet
Token 2 → Vælg fra alle ~100.000 tokens
...

Constrained generering (JSON-skema):
Token 1 → Kun "{" er tilladt (JSON skal starte med krøllet parentes)
Token 2 → Kun " er tilladt (JSON-nøgler er strenge)
Token 3 → Vælg fra tokens der kan starte et gyldigt feltnavn
...

Ved hvert trin i genereringen beregner systemet hvilke tokens der er lovlige givet skemaet og det allerede genererede output. Ulovlige tokens får deres sandsynlighed sat til nul, så modellen aldrig kan producere ugyldigt output.

Det er som at skrive med en autokorrektion der ikke bare foreslår rettelser men fysisk forhindrer dig i at skrive ugyldige tegn.

JSON Schema som kontrakt

Structured output defineres typisk via JSON Schema, en standard for at beskrive strukturen af JSON-data:

{
  "type": "object",
  "properties": {
    "navn": { "type": "string" },
    "alder": { "type": "integer", "minimum": 0 },
    "by": { "type": "string" },
    "interesser": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["navn", "alder", "by"]
}

Dette skema garanterer at modellen altid returnerer et objekt med en streng for navn, et heltal for alder, en streng for by og eventuelt et array af strenge for interesser. Aldrig noget andet.

Tilgange til structured output

1. Constrained decoding (stærkest): Modellen kan fysisk ikke generere ugyldigt output. Brugt af OpenAI’s Structured Outputs, Anthropic’s Structured Outputs og flere open source-frameworks.

2. JSON mode (svagere): Modellen tvinges til at generere gyldigt JSON, men ikke nødvendigvis JSON der følger et specifikt skema. Felter kan mangle, datatyper kan være forkerte, og ekstra felter kan tilføjes.

3. Prompt-baseret (svageste): Man beder modellen i prompten om at svare i et bestemt format. Virker ofte men er aldrig garanteret. Modellen kan afvige, især for komplekse skemaer.

Praktiske eksempler

Eksempel 1: Ekstraktion af information fra tekst

Opgave: Ekstraher kontaktinformation fra en e-mail.

Input: “Hej, jeg hedder Mikkel Andersen og arbejder hos Primux ApS. Mit nummer er 28 45 67 89 og du kan maile mig på mikkel@primux.dk.”

Skema:

{
  "type": "object",
  "properties": {
    "navn": { "type": "string" },
    "virksomhed": { "type": "string" },
    "telefon": { "type": "string" },
    "email": { "type": "string", "format": "email" }
  },
  "required": ["navn"]
}

Structured output:

{
  "navn": "Mikkel Andersen",
  "virksomhed": "Primux ApS",
  "telefon": "28 45 67 89",
  "email": "mikkel@primux.dk"
}

Resultatet kan bruges direkte i kode: indsættes i en database, tilføjes til et CRM-system eller sendes videre til en anden service.

Eksempel 2: Klassificering med metadata

Opgave: Klassificér kundehenvendelser automatisk.

Skema:

{
  "type": "object",
  "properties": {
    "kategori": {
      "type": "string",
      "enum": ["support", "salg", "fakturering", "reklamation", "andet"]
    },
    "prioritet": {
      "type": "string",
      "enum": ["lav", "mellem", "høj", "kritisk"]
    },
    "resumé": { "type": "string", "maxLength": 200 },
    "kræver_eskalering": { "type": "boolean" }
  },
  "required": ["kategori", "prioritet", "resumé", "kræver_eskalering"]
}

Input: “Vores system har været nede i 3 timer og vi mister kunder! Vi har prøvet at genstarte men intet virker.”

Structured output:

{
  "kategori": "support",
  "prioritet": "kritisk",
  "resumé": "Systemnedbrud i over 3 timer. Genstart har ikke løst problemet. Kunden mister forretning.",
  "kræver_eskalering": true
}

Output kan bruges direkte til at route henvendelsen til det rigtige team, sætte prioritet i ticket-systemet og trigge en eskaleringsworkflow.

Eksempel 3: Generering af strukturerede data

Opgave: Generer produktbeskrivelser i et fast format til en e-handelsplatform.

Skema:

{
  "type": "object",
  "properties": {
    "titel": { "type": "string", "maxLength": 80 },
    "kort_beskrivelse": { "type": "string", "maxLength": 160 },
    "features": {
      "type": "array",
      "items": { "type": "string" },
      "minItems": 3,
      "maxItems": 6
    },
    "målgruppe": { "type": "string" },
    "seo_keywords": {
      "type": "array",
      "items": { "type": "string" },
      "maxItems": 5
    }
  },
  "required": ["titel", "kort_beskrivelse", "features", "målgruppe"]
}

Resultatet passer direkte ind i e-handelsplatformens datamodel uden manuel tilpasning.

Eksempel 4: Multi-step workflows

I agentic workflows bruger AI-agenter structured output til at kommunikere struktureret mellem trin:

Trin 1: Planlægning. Modellen returnerer en plan som en liste af trin med type, beskrivelse og afhængigheder.

Trin 2: Udførelse. For hvert trin returnerer modellen resultatet i et struktureret format med status, output og eventuelle fejl.

Trin 3: Evaluering. Modellen vurderer det samlede resultat og returnerer en score, forbedringsforslag og en anbefaling.

Hvert trin har sit eget skema, og structured output sikrer at data flyder pålideligt mellem trinene.

Structured output hos de store udbydere

OpenAI

OpenAI tilbyder “Structured Outputs” med constrained decoding:

  • Definér et JSON Schema i API-kaldet
  • Modellen er garanteret at følge skemaet 100%
  • Understøtter komplekse skemaer med nesting, arrays, enums og optionelle felter
  • Tilgængelig via response_format: { type: "json_schema", json_schema: {...} }

Anthropic (Claude)

Anthropic tilbyder native Structured Outputs (lanceret november 2025) med constrained decoding:

  • Definér et JSON Schema direkte i API-kaldet eller via tool use
  • Modellen er garanteret at følge skemaet via constrained decoding
  • Understøtter komplekse, nestede skemaer
  • Tilgængelig for Claude Sonnet 4.5 og Opus 4.1

Google (Gemini)

Google tilbyder structured output via Gemini API:

  • JSON Schema support med response_schema-parameter
  • Understøtter enums, arrays og nestede objekter
  • Integreret med function calling for tool use-scenarier

Structured output vs. JSON mode

De to er ikke det samme:

Structured outputJSON mode
GarantiOutput følger et specifikt skemaOutput er gyldigt JSON
SkemaDefineret af brugerenIntet skema, bare JSON
FelterGaranteret til stedeKan mangle eller variere
DatatyperHåndhævet (string, integer, boolean)Ikke håndhævet
Ekstra felterIkke tilladt (med strict mode)Kan forekomme
BrugProduktion, integrationerPrototyping, simple opgaver

JSON mode sikrer at outputtet er parsbart JSON. Structured output sikrer at JSON’en har præcis den struktur din kode forventer. For produktionssystemer er structured output næsten altid det rigtige valg.

Designprincipper for gode skemaer

Hold det fladt og simpelt

Komplekse, dybt nestede skemaer er sværere for modellen at udfylde korrekt og sværere at vedligeholde. Start med flade strukturer og tilføj kun nesting når det er nødvendigt.

Brug enums for begrænsede værdier

Når et felt har et begrænset sæt gyldige værdier (f.eks. kategori, prioritet, status), brug enums. Det forhindrer modellen i at bruge synonymer eller variationer: “høj” vs. “Høj” vs. “high” vs. “3”.

Gør felter required med omhu

Markér kun felter som required hvis de altid kan udfyldes fra inputtet. Hvis et felt muligvis mangler i kildeteksten, gør det optionelt med en null-mulighed. Ellers tvinges modellen til at opfinde data.

Beskriv felterne

Tilføj description til felter i skemaet. Det hjælper modellen med at forstå hvad der forventes:

{
  "type": "object",
  "properties": {
    "sentiment": {
      "type": "string",
      "enum": ["positiv", "neutral", "negativ"],
      "description": "Den overordnede stemning i teksten"
    }
  }
}

Test med varieret input

Et skema der virker perfekt for ét eksempel kan fejle for edge cases. Test med mange forskellige inputs (korte, lange, tvetydige, mangelfulde) for at sikre robusthed.

Anvendelsesområder

Dataekstraktion

Ekstraktion af struktureret information fra ustruktureret tekst: kontrakter, e-mails, fakturaer, CVer, medicinske journaler. Structured output sikrer at de ekstraherede data passer direkte ind i downstream-systemer.

Klassificering og tagging

Kategorisering af dokumenter, e-mails, supporthenvendelser eller produktanmeldelser med foruddefinerede kategorier, tags og scorer. Enums i skemaet sikrer konsistente kategorier.

Indholdsgenerering

Generering af produktbeskrivelser, SEO-metadata, social media-posts eller nyhedsbreve i formater der matcher CMS’ets datamodel. Structured output eliminerer behovet for manuel formatering.

API-integrationer

Når AI-modeller bruges som en del af større software-systemer, er structured output nødvendigt for at sikre at modellens output kan parses og bruges pålideligt af andre services.

Evaluering og scoring

Automatisk vurdering af tekster, ansøgninger eller opgaver med numeriske scores og struktureret feedback. Skemaet sikrer at evalueringen er konsistent og sammenlignelig.

Begrænsninger

Skema-kompleksitet

Meget komplekse skemaer med dyb nesting, mange optionelle felter og komplekse betingelser kan reducere modellens outputkvalitet. Modellen bruger “kapacitet” på at overholde skemaet, hvilket kan gå ud over kvaliteten af selve indholdet.

Latens

Constrained decoding tilføjer en lille overhead til genereringen, fordi systemet ved hvert token-trin skal beregne hvilke tokens der er lovlige. I praksis er overheadet minimalt men kan mærkes for meget store skemaer.

Ikke en erstatning for validering

Structured output garanterer format og struktur men ikke korrekthed af indholdet. At modellen returnerer "alder": 34 i det rigtige format betyder ikke at 34 er den korrekte alder. Indholdsvalidering er stadig nødvendig.

Ofte stillede spørgsmål

Hvad er structured output?

Structured output er en funktion i AI-modeller der sikrer at modellens svar følger et foruddefineret format eller skema, typisk JSON med specifikke felter, datatyper og struktur. I stedet for at modellen svarer i fritekst der kan variere, garanterer structured output at outputtet altid kan parses pålideligt af kode. Det er afgørende for at integrere AI-modeller i software-systemer, automatisere workflows og bygge pålidelige AI-applikationer.

Hvad er forskellen på structured output og JSON mode?

JSON mode garanterer at modellens output er gyldigt JSON, men ikke at det følger et specifikt skema. Felter kan mangle, datatyper kan variere, og ekstra felter kan forekomme. Structured output går videre: det garanterer at outputtet følger et præcist skema med definerede felter, datatyper og struktur. For produktionssystemer hvor kode skal parse outputtet pålideligt er structured output det rigtige valg. JSON mode er tilstrækkeligt for prototyping og simple opgaver.

Hvordan implementerer man structured output?

De fleste AI-udbydere tilbyder structured output via deres API. Hos OpenAI definerer man et JSON Schema i response_format-parameteren. Hos Anthropic definerer man et JSON Schema direkte i API-kaldet eller via tool use. Hos Google Gemini bruges response_schema-parameteren. I alle tilfælde definerer man et skema der beskriver den ønskede struktur, sender det med API-kaldet, og modellen returnerer output der er garanteret at overholde skemaet.

Hvornår bør jeg bruge structured output?

Brug structured output når modellens output skal bruges af kode, ikke kun læses af mennesker. Det inkluderer: dataekstraktion fra tekst, automatisk klassificering, API-integrationer, workflow-automatisering, indholdsgenerering til CMS’er og enhver situation hvor du har brug for pålidelig, konsistent struktur i modellens svar. For rent konversationelle anvendelser hvor et menneske læser svaret er fritekst typisk bedre.


Relaterede termer