Struktureret output
Også kendt som: JSON-tilstand
At få en sprogmodel til at svare i en fast form, som programmer kan læse - faste felter i JSON - så anden software kan bruge svaret direkte.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En funktion i en modeltjeneste, der tvinger genereret tekst til at følge en given JSON-opbygning, typisk ved kun at lade sampling vælge tokens, der holder outputtet gyldigt; den løsere “JSON-tilstand” lover gyldig JSON, men ikke de rigtige felter.
Forklaret enkelt
Som at give nogen en papirblanket med mærkede felter i stedet for et blankt ark - hvad de end skriver, havner det i det rigtige felt.
I praksis
En udvikler i en regions IT-afdeling lader en sprogmodel læse henvisninger fra patienternes egen læge og returnere felterne afdeling, hastegrad og årsag, som hospitalets bookingsystem læser direkte ind, uden at nogen skal taste dem igen.
Hvorfor det betyder noget
Det fjerner en almindelig årsag til AI-funktioner, der går i stykker - svar, som kode ikke kan læse - men et korrekt formet svar kan stadig indeholde en forkert eller skadelig værdi, fx en akut sag markeret som rutine, så indholdet skal stadig tjekkes.
Teknisk uddybning
Der findes tre garantiniveauer, og de forveksles ofte. Formatering alene via prompten beder om JSON i instruktionerne, måske med et eksempel, og giver ingen garanti; output kan indeholde prosa omkring JSON'en, overskydende kommaer eller manglende felter. JSON-tilstand, som OpenAI introducerede i november 2023, og som andre udbydere tilbyder i lignende form, garanterer syntaktisk gyldig JSON, men ikke nogen bestemt form. Skemabegrænset output garanterer, at resultatet validerer mod et givet JSON Schema. OpenAI lancerede det som Structured Outputs den 6. august 2024, både som svarformat og som strict: true på funktionsdefinitioner, og rapporterede 100 % overholdelse af skemaet i sin interne evaluering for gpt-4o-2024-08-06 mod under 40 % for gpt-4-0613 med prompting alene; Anthropic introducerede JSON-output og strict tool use i offentlig beta i november 2025.
Garantien kommer fra begrænset afkodning. Skemaet kompileres til en grammatik eller en endelig tilstandsmaskine, og i hvert trin maskerer sampleren logits for alle tokens, der ikke kan føre til en gyldig fortsættelse, så kun grammatisk tilladte tokens kan vælges. Da tokens ikke flugter med JSON-syntaksen (ét token kan indeholde et anførselstegn, et kolon og en del af en nøgle), skal kompilatoren på forhånd beregne, hvilke poster i ordforrådet der er tilladt i hver tilstand; biblioteker som Outlines, llama.cpp's GBNF-grammatikker og XGrammar gør det for open-weight-modeller, og hostede API'er cacher typisk det kompilerede skema, så det første kald med et nyt skema kan være langsommere. Udbyderne understøtter kun en delmængde af JSON Schema i strict-tilstand - ofte skal alle egenskaber angives som required, ekstra egenskaber er ikke tilladt, og rekursion samt nøgleord som pattern og format er begrænsede.
Begrænsningerne garanterer form, ikke indhold. Modellen vælger stadig værdierne, så et enum-felt kan få den forkerte kategori, et datofelt en troværdig, men forkert dato, og et tekstfelt vilkårlig tekst, herunder indsatte instruktioner eller markup. At tvinge et format kan også koste kvalitet: Tam m.fl. (2024, "Let Me Speak Freely?") rapporterede, at stramme formatkrav forringede ræsonnementet på nogle opgaver. Gængse modtræk er at have et fritekstfelt til ræsonnement før svarfelterne, at holde skemaer flade og beskrivende (feltnavne og beskrivelser fungerer som instruktioner) og at modellere "ukendt" eller "ikke fundet" eksplicit, så modellen ikke tvinges til at opfinde en værdi. Sikkerhedsbetingede afvisninger kan blive returneret i et separat felt frem for inde i skemaet.
Kode længere nede i kæden skal stadig behandle modeloutput som upålideligt input. OWASP's LLM Top 10 fra 2025 har Improper Output Handling som LLM05: Værdier fra et velformet objekt kan stadig give SQL-injection, cross-site scripting, path traversal eller utilsigtede værktøjshandlinger, hvis de sendes videre uden validering. Struktureret output gør semantisk validering lettere - tjek intervaller, sammenhæng mellem felter og forretningsregler på typede felter - men erstatter den ikke.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Inferens
- →Token
- →Forudsigelse af næste token
- →Sampling (udtrækning af tokens)
- →Struktureret output
Relationer
- Forudsætter
- Sampling (udtrækning af tokens)
- Åbner for
- Værktøjskald (tool calling)
- Bruges sammen med
- Agentisk arbejdsgangJSONInputvalidering
Kilder og videre læsning
Officiel dokumentation
- OpenAI documentation - Structured Outputs · OpenAI
- OpenAI (2024), Introducing Structured Outputs in the API · OpenAI
- Anthropic documentation - Structured outputs · Anthropic
Opslagsværker
- OWASP Top 10 for LLM Applications 2025 - LLM05 Improper Output Handling · OWASP
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…