Spring til indhold
Gathena

Lær · Forklaret

Hvad er structured output, og hvad skal en AI-agent med det?

Udgivet 31. oktober 2026

Kort svar. Structured output betyder, at AI’en svarer i et fast format med navngivne felter, for eksempel leverandør, fakturadato og total, i stedet for i fri tekst. Formatet er som regel JSON, og et skema beskriver, hvilke felter svaret skal have. Fordi felterne er de samme hver gang, kan et system læse svaret, og kode kan kontrollere det, før noget sker. Et korrekt format gør ikke indholdet korrekt, så værdierne skal stadig kontrolleres og have en kilde.

Guiden forklarer, hvorfor et svar i fri tekst ikke kan komme ind i et system, hvordan et skema ser ud, hvordan formatet håndhæves, og hvordan I kontrollerer det, der står i felterne.

Et svar i fri tekst kan ikke komme ind i et system

Bed en AI om at læse en faktura, og den svarer måske: “Det er en faktura fra Nordlys Kontor dateret 3. oktober, og totalen er omkring 1.250 kroner inklusive moms.” Det kan et menneske læse. Det kan et bogføringssystem ikke, for det skal have datoen i ét felt og beløbet i et andet.

Spørg igen, og formuleringen er en anden: “Total: DKK 1.250,00 (inkl. 25 % moms).” Begge svar kan være rigtige, men intet system længere fremme kan regne med, hvor datoen eller beløbet står.

Selve fakturaen er ustrukturerede data: Oplysningerne ligger i tekst og layout. Et system skal have strukturerede data: oplysninger i faste felter og kolonner. Structured output er måden, en AI laver det ene om til det andet på.

Et skema siger, hvilke felter svaret skal have

Et skema er en beskrivelse af svaret: hvilke felter det har, hvilken type hvert felt er, hvilke felter der skal udfyldes, og hvilke værdier der er tilladt. Det almindelige format er JSON, et enkelt tekstformat til data med navngivne felter og værdier, som næsten alle systemer kan læse.

Et skema for en leverandørfaktura kunne se sådan ud:

Felt Type Skal udfyldes Tilladte værdier
supplier tekst ja
invoice_number tekst ja
invoice_date dato ja en gyldig dato
currency tekst ja DKK, EUR, SEK, USD
lines liste ja mindst én linje
hver linje: description, quantity, unit_price, vat_rate tekst, tal, tal, tal ja vat_rate 0 eller 25
total tal ja

AI’ens svar udfylder så felterne (opdigtet eksempel):

{
  "supplier": "Nordlys Kontor ApS",
  "invoice_number": "10482",
  "invoice_date": "2026-10-03",
  "currency": "DKK",
  "lines": [
    { "description": "Printerpapir, A4", "quantity": 10, "unit_price": 100.00, "vat_rate": 25 }
  ],
  "total": 1250.00
}

Hver faktura kommer tilbage i samme form, uanset hvordan den så ud.

Formatet håndhæves tre steder

  1. I forespørgslen. Instrukserne til AI’en beskriver felterne og indeholder skemaet.
  2. Hos AI-leverandøren. OpenAI, Anthropic og Googles Gemini API har hver en indstilling, hvor I angiver et JSON-skema, og modellens svar tvinges til at følge det. Uden den indstilling kan modellen stadig udelade et felt eller bryde formatet.
  3. I jeres egen kode. Før svaret bruges, kontrollerer koden det mod skemaet igen: Alle felter, der skal udfyldes, er der, hver værdi har den rigtige type, og hver værdi er en af de tilladte. Et svar, der ikke består, bliver stoppet og sendes aldrig videre.

Det tredje trin er vigtigt, selv med leverandørens indstilling. Leverandørerne beskriver selv tilfælde, hvor svaret ikke passer til skemaet: når modellen afviser en forespørgsel, og når svaret bliver afbrudt, fordi det har nået sin længdegrænse. Anthropic gør også opmærksom på, at en tilladt værdi kan komme tilbage med andre store og små bogstaver.

Et korrekt format er ikke et korrekt svar

Et skema bestemmer svarets form, ikke om det er sandt. Totalfeltet kan indeholde den forkerte total. Leverandørfeltet kan indeholde kundens navn. En dato kan være læst det forkerte sted på siden.

Det siger leverandørerne selv. OpenAI’s vejledning skriver, at structured output stadig kan indeholde fejl, og advarer om, at en model, der altid følger et skema, kan finde på værdier, når dokumentet ikke passer til opgaven. Googles vejledning anbefaler at validere værdierne i jeres egen applikation, fordi et svar i korrekt format stadig kan være forkert i indhold.

Structured output gør altså svaret muligt at kontrollere. Det er kontrollerne, der gør det til at stole på.

Kontrollér indholdet, før noget sker

Fordi hver værdi står i et navngivet felt, kan kode kontrollere den. En startliste:

  • Regnestykket går op. Linjerne summer til totalen, og momsen passer til satsen.
  • Værdierne er tilladte. Momssatsen er en gyldig sats, valutaen er en, I bruger, og datoen ligger ikke i fremtiden.
  • Stamdata passer. Leverandøren står på leverandørlisten, og kontoen står på listen over konti, opgaven må bruge.
  • Hver værdi peger på sin kilde. For hvert felt gemmes siden og stedet, det blev læst fra, så alle kan holde det op mod dokumentet. Det er grounding: et svar, der viser, hvor det blev fundet.
  • En fejlet kontrol stopper dokumentet. Dokumentet markeres med årsagen, og et menneske ser på det. Resten fortsætter.

Hver kontrol er en navngivet regel, så en fejl kan forklares, og I kan ændre reglerne uden at ændre AI’en. Casen om fakturalæseren viser kontrollerne på leverandørfakturaer.

Hvor structured output hører hjemme i en agent

En AI-agent giver noget videre i hvert trin. Hver gang modtageren er et system eller det næste trin, skal det, der gives videre, være struktureret.

Trin Det, der er struktureret
Læse et dokument Felterne, der er læst fra fakturaen, kvitteringen eller ordren
Bruge et værktøj Felterne, agenten udfylder for at bede et system om noget; det kaldes function calling
Foreslå en postering Konto, beløb, dato, momskode og det bilag, posteringen bygger på
Skrive i logbogen Kilden, reglen, der blev brugt, resultaterne af kontrollerne og hvem der godkendte

Structured output og kontroller fanger forkerte data. Guardrails stopper forbudte handlinger, for eksempel en betaling, uanset hvad dataene siger. Hvem der godkender hvert trin, afgøres stadig af de tre godkendelseszoner: “handler selv”, “spørger først” eller “operatøren godkender”. Operatøren er den person i jeres virksomhed, der kontrollerer og godkender agentens arbejde. Læs Hvornår må en AI-agent handle på egen hånd?

Sådan starter I med ét dokument

  1. Vælg ét dokument, som nogen taster ind i et system i hånden, for eksempel leverandørfakturaer.
  2. Skriv felterne ned, som det modtagende system skal have, med deres type og de værdier, systemet accepterer.
  3. Skriv skemaet ud fra den liste, og angiv det i AI-leverandørens indstilling for structured output.
  4. Skriv kontrollerne som navngivne regler: regnestykket, de tilladte værdier, stamdata og kilden.
  5. Test på kendte eksempler. Kør AI’en på dokumenter, hvor I allerede kender det rigtige svar, og sammenlign felt for felt. Disse test, der kan gentages, kaldes evals; kør dem igen efter hver ændring af model, skema eller regler.
  6. Beslut, hvad der sker ved en fejl: hvem der ser det markerede dokument, og hvor det venter.

Når der kommer en ny slags dokument, får den sit eget skema og sine egne kontroller. Resten af opsætningen er den samme.

Kilder

Kom med ét dokument, som jeres folk taster ind i et system i hånden. Vi gennemgår, hvilke felter det skal have, og hvilke kontroller der afgør, om I kan stole på dem.

Book en samtale