Structured output — Få LLM'er til at returnere JSON og andre formater
Structured output-mode tvinger modellen til at returnere validt JSON der matcher et schema. Fundamentet for pålideligt AI-workflow-integration og tool use.
Structured output er en funktion i moderne LLM-API’er der garanterer at modellen returnerer output i et specificeret format — typisk JSON der matcher et givet schema. I stedet for fritekst der skal parses med regex, returnerer modellen maskinlæsbare data der kan injiceres direkte i downstream-systemer.
Behovet opstår i ethvert workflow hvor LLM-output skal behandles programmatisk. En content-analyse der skal skrives til en database, en meta-tag-generering der skal hentes af et CMS, en konkurrentanalyse der skal populere et dashboard — alle kræver konsistent, validt output. Fritekst-parsing er skrøbelig; structured output er deterministisk.
JSON-mode og schema-mode
JSON-mode
Modellen returnerer validt JSON — men uden garanti for at strukturen matcher det du forventer. En nøgle kan hedde title eller Title eller page_title afhængigt af prompt og context. Det er bedre end fritekst, men kræver stadig parsing-logik.
Schema-mode
Du definerer et eksplicit JSON Schema eller Pydantic-model, og modellen garanterer at output matcher dette schema: felter er de rigtige, typer er korrekte, obligatoriske felter er til stede. OpenAI lancerede dette med GPT-4o-mini i 2024; Anthropic understøtter det via tool use.
Function calling og tool use
Modellen returnerer et kald til en specificeret “funktion” med typede parametre. Det er teknisk ekvivalent til schema-mode, men konceptuelt rammet som at modellen “kalder en funktion” frem for at “returnere data”.
Praktisk eksempel: SEO-content-brief
{
"title": "Crawl budget — Hvordan Google prioriterer din crawling",
"meta_description": "Forstå crawl budget...",
"target_keyword": "crawl budget",
"secondary_keywords": ["crawling", "googlebot", "crawl rate"],
"word_count_target": 1200,
"internal_links": ["indeksering", "robots-txt"],
"content_gaps": ["...", "..."]
}
Med schema-mode returneres dette konsistent for hundredvis af sider uden manuel parsing.
Begrænsninger
Structured output øger latency marginalt og kan reducere kreativiteten i output — modellen er mere fokuseret på at matche strukturen end på at optimere svarets indhold. For kreative opgaver er fritekst bedre; for pipeline-integrerede, maskinlæsbare outputs er structured output standard. → Denne artikel er en del af Prompt engineering — Sådan får du mere ud af AI-modeller.
Andre artikler i samme emne
- Chain-of-thought — Få LLM'er til at tænke højt og ræsonnere bedre
- Few-shot prompting — Lær modellen via eksempler i prompten
- Prompt chaining — Kæde af prompts til komplekse AI-workflows
- Prompt engineering til SEO — Teknikker der faktisk virker
- System prompt — Instruktioner der definerer modellens adfærd
- Zero-shot prompting — Instruktion uden eksempler
Ofte stillede spørgsmål
- Hvad er structured output fra en LLM?
- Structured output er en funktion i moderne LLM-API'er der garanterer at modellen returnerer output i et specificeret format — typisk JSON der matcher et givet schema. I stedet for fritekst der skal parses med regex returnerer modellen maskinlæsbare data der kan injiceres direkte i downstream-systemer. Det er standarden for ethvert workflow hvor LLM-output skal behandles programmatisk: content-analyse til databaser, meta-tag-generering til CMS, konkurrentanalyse til dashboards.
- Hvad er forskellen på JSON-mode og schema-mode?
- JSON-mode garanterer at modellen returnerer validt JSON, men uden garanti for at strukturen matcher det du forventer — en nøgle kan hedde 'title' eller 'Title' eller 'page_title'. Schema-mode kræver at du definerer et eksplicit JSON Schema eller Pydantic-model, og modellen garanterer at output matcher dette schema præcist: rigtige felter, korrekte typer, obligatoriske felter til stede. Schema-mode via function calling er standarden for produktionsklar AI-workflow-integration.
- Hvornår er structured output bedre end fritekst og hvornår er det omvendt?
- Structured output er bedre til alt der skal behandles programmatisk: pipeline-integrerede workflows, data der skal skrives til databaser, output der skal valideres mod et schema. Fritekst er bedre til kreative opgaver og åbne analyser, fordi structured output øger latency marginalt og kan reducere kreativiteten — modellen er mere fokuseret på at matche strukturen end på at optimere svarets indhold. Tommelfingerreglen: brug structured output til alle maskinlæsbare use cases, fritekst til alt der primært skal læses af mennesker.
- Hvad er Pydantic og hvornår bruger man det til structured output?
- Pydantic er et Python-bibliotek til datavalidering via type annotations. I LLM-workflow-sammenhæng bruges det til at definere det ønskede output-schema som en Python-klasse med typede felter. Anthropic og OpenAI understøtter direkte Pydantic-model-integration i deres Python-SDKs: du sender en Pydantic-model som schema, og SDK'et garanterer at output matcher den — inklusive type-validering og obligatoriske felter. Det er standarden for produktionsklar Python-integration og eliminerer manuel JSON-parsing og validering i pipelines.
- Hvad sker der hvis modellen ikke kan producere validt structured output?
- I schema-mode-implementationer med garanteret structured output tvinger API'et modellen til at producere output der matcher schemaet — den kan ikke returnere invalid JSON. Hvis modellens naturlige svar ville kræve et format der afviger fra schemaet, tilpasser den output til schemaet. Det kan betyde at lange svar truncates eller at nuancer tabes for at overholde type-kravene. I praksis er det vigtigt at designe schemas med string-felter af tilstrækkelig bredde og optionelle felter for data der måske ikke altid er til stede — for at undgå at schema-tvangen forvansker output-kvaliteten.
Placering i ordbogen
- Chain-of-thought — Få LLM'er til at tænke højt og ræsonnere bedre
- Few-shot prompting — Lær modellen via eksempler i prompten
- Prompt chaining — Kæde af prompts til komplekse AI-workflows
- Prompt engineering til SEO — Teknikker der faktisk virker
- System prompt — Instruktioner der definerer modellens adfærd
- Zero-shot prompting — Instruktion uden eksempler