Waarom gestructureerde output?
AI-modellen geven van nature vrije tekst terug. Voor menselijke consumptie is dat prima, maar voor programmatische verwerking is het problematisch. Je kunt vrije tekst moeilijk parsen, extracten of doorgeven aan andere systemen.
Gestructureerde output lost dit op: je dwingt het model een specifiek formaat te volgen zodat je de output direct kunt verwerken. Dit is de kern van vrijwel elke productie-AI-integratie.
Denk aan een chatbot die klantgegevens extraheert als JSON, een analysesysteem dat scores teruggeeft in een tabel, of een classificatiesysteem dat altijd precies één van vijf vaste labels teruggeeft.
Typen gestructureerde output
Welk formaat je kiest, hangt af van wat er met de output gebeurt. De meest voorkomende typen:
| Type | Voorbeeldinstructie | Wanneer gebruiken |
|---|---|---|
| Lijsten en opsommingen | "Geef een lijst van vijf aanbevelingen als genummerde lijst." | Leesbare output voor mensen |
| Tabellen | "Vergelijk de drie opties in een Markdown-tabel met kolommen Naam, Prijs, Voordelen, Nadelen." | Vergelijkingen en overzichten |
| JSON | "Extraheer de contactgegevens als JSON met velden naam, email, telefoon, bedrijf." | Programmatische verwerking |
| XML | "Geef het antwoord als XML met een root-element response en kindelementen summary, details en recommendation." | Systemen die XML verwachten |
| Vaste antwoordopties | "Classificeer als POSITIEF, NEGATIEF of NEUTRAAL. Geef alleen één van deze woorden terug." | Classificatie |
| Gestructureerde secties | "Structureer je antwoord als kop Samenvatting, kop Analyse, kop Aanbeveling." | Leesbare maar voorspelbare rapporten |
Gebruik native schema-functies als ze er zijn
De grote providers bieden inmiddels gestructureerde output als ingebouwde functie, niet alleen als prompt-truc. OpenAI heeft Structured Outputs (met strict: true op een JSON Schema), Anthropic biedt sinds eind 2025 native Structured Outputs (JSON-output via response_format en strikte tool-validatie), en Google Gemini en Vertex AI ondersteunen een responseSchema (of response_json_schema). Deze functies gebruiken constrained decoding, waardoor de output gegarandeerd het schema volgt. Gebruik ze altijd als ze beschikbaar zijn: ze zijn betrouwbaarder dan prompt-only technieken.
Technieken voor betrouwbare structurering
Ook als je een native schema-functie gebruikt, helpt een heldere prompt. En soms werk je met een model of kanaal zonder schema-ondersteuning. Deze drie technieken werken altijd.
Techniek 1: expliciete schemabeschrijving
Beschrijf het schema in detail in je prompt:
Geef je antwoord als JSON-object met de volgende velden:
- naam: string, de volledige naam
- score: integer tussen 0 en 100
- categorie: string, een van: goed, neutraal, slecht
- toelichting: string, maximaal 50 woorden
Techniek 2: voorbeelduitvoer meegeven
Geef een compleet voorbeeld van de gewenste output. Een concreet voorbeeld is vaak duidelijker dan een beschrijving:
Geef je antwoord in dit formaat:
{
"naam": "Voorbeeld Naam",
"score": 75,
"categorie": "goed",
"toelichting": "Korte uitleg hier."
}
Analyseer nu: [input]
Techniek 3: expliciete opstart
Begin het antwoord van het model alvast zelf, zodat het direct in het juiste formaat verdergaat:
Schrijf een JSON-object voor: [taak]
Start je antwoord met: {
Zo stuur je gestructureerde output aan
- Kies het juiste formaat voor je use case: JSON voor programmatische verwerking, Markdown-tabel voor weergave, bulletlijst voor menselijk lezen.
- Beschrijf het schema volledig: velden, typen, toegestane waarden en of een veld verplicht of optioneel is.
- Geef een volledig voorbeeld: een concreet voorbeeld is duidelijker dan een beschrijving.
- Gebruik native schema-functies:
Structured Outputs(OpenAI en Anthropic) ofresponseSchema(Gemini) zijn betrouwbaarder dan prompt-only technieken. - Valideer de output: parseer het resultaat en gooi een fout als het formaat niet klopt.
JSON-specifieke tips
JSON is het meest gevraagde gestructureerde formaat. Een paar specifieke aandachtspunten:
- Vraag om "valide JSON zonder extra tekst". Modellen voegen soms uitleg toe voor of na de JSON.
- Gebruik "Geef alleen de JSON terug, geen uitleg, geen code-blokken" als je het resultaat direct wilt parsen.
- Specificeer of je een array of een object verwacht.
- Geef duidelijk aan welke velden verplicht zijn en welke optioneel.
- Let bij Gemini op de volgorde van velden: zet de velden in je voorbeeld in dezelfde volgorde als in je
responseSchema, anders kan het model in de war raken.
Valideer altijd programmatisch
Zelfs met expliciete instructies produceren modellen zonder schema-functie soms ongeldige JSON: ontbrekende aanhalingstekens, trailing comma's of geneste objecten die niet kloppen. Valideer altijd met een echte JSON-parser en bouw een fallback voor het geval het parsen mislukt.
Omgaan met complexe structuren
Voor complexe, geneste structuren werkt een schema-first benadering het best:
Genereer een gestructureerd rapport over [onderwerp] in het volgende JSON-schema:
{
"titel": "string",
"datum": "ISO 8601 datum",
"secties": [
{
"naam": "string",
"inhoud": "string",
"aanbevelingen": ["string"]
}
],
"conclusie": "string",
"prioriteit": "hoog|gemiddeld|laag"
}
Complexere structuren leiden tot meer fouten. Splits extreme complexiteit op in meerdere prompts die elk een deel van de structuur vullen, en voeg de resultaten in je eigen code samen.
Begin klein en breid uit
Test je prompt eerst met een minimaal schema van twee of drie velden voordat je een groot, diep genest schema bouwt. Zo zie je snel of het model je instructies goed begrijpt, en bouw je betrouwbaarheid stap voor stap op.
Werkt gestructureerde output bij alle modellen?
De meeste grote modellen volgen structuurinstructies goed. Kleinere modellen zijn minder betrouwbaar. Native schema-functies zoals Structured Outputs of responseSchema zijn altijd betrouwbaarder dan prompt-only technieken.
Wat doe ik als de output niet te parsen is?
Implementeer retry-logica: als parsen mislukt, stuur je de foutmelding terug naar het model met de instructie om te corrigeren. Drie pogingen zijn doorgaans genoeg. Met een native schema-functie heb je deze stap meestal niet nodig.
Kan ik het model een JSON Schema laten volgen?
Ja. OpenAI Structured Outputs, Anthropic Structured Outputs en Gemini responseSchema ondersteunen native JSON Schema. Het model garandeert dan output die het schema volgt via constrained decoding.
Hoe voorkom ik dat het model extra tekst toevoegt?
Schrijf expliciet: geef alleen het JSON-object terug, geen inleiding, geen uitleg, geen code-blokken. Filter in je code voor de zekerheid eventuele code-blokmarkeringen weg voordat je parseert. Een native schema-functie voorkomt dit probleem helemaal.
Wanneer kies ik JSON en wanneer een Markdown-tabel?
Kies JSON als een ander systeem de output verwerkt, en een Markdown-tabel als een mens de output direct leest. JSON is exact en machine-leesbaar, een tabel is overzichtelijk voor menselijke ogen.
Geldt dit ook voor Gemini in Google Workspace?
De promptprincipes zijn hetzelfde. Voor schema-garanties heb je wel de Gemini API of Vertex AI nodig met een responseSchema. In de Workspace-apps zelf stuur je structuur via een duidelijke prompt, en valideer je het resultaat zelf.
Gestructureerde output is de brug tussen experimenteel AI-gebruik en productie-integraties. Beheers deze technieken en je kunt AI-output direct aansluiten op databases, API's en verwerkingssystemen.