Gepubliceerd: 13 mei 2025
Grote taalmodellen (LLM's) staan erom bekend dat ze soms erg lange antwoorden geven. Zelfs als je het model alleen maar vraagt om "waar" of "onwaar" te antwoorden, kan het model een vriendelijke reactie geven die meer informatie bevat dan je gevraagd hebt, zoals: "Het antwoord is inderdaad waar."
Om deze uitdaging aan te pakken, kunt u met de Prompt API een JSON-uitvoerformaat voor de respons van het model specificeren door een JSON-schema door te geven aan de methoden LanguageModel.prompt() en LanguageModel.promptStreaming() . Ondersteuning voor gestructureerde uitvoer is beschikbaar vanaf Chrome versie 137.
Wat is JSON Schema?
JSON Schema is een vocabulaire dat zorgt voor consistentie, validiteit en interoperabiliteit van JSON-gegevens op grote schaal. Als het gaat om gegevensuitwisseling, onderscheidt JSON Schema zich als een krachtige standaard voor het definiëren van de structuur en regels van JSON-gegevens. Het maakt gebruik van een reeks trefwoorden om de eigenschappen van uw gegevens te definiëren.
JSON Schema is de industriestandaard voor het garanderen van gestructureerde uitvoer en wordt onder andere gebruikt door de OpenAI API en de Gemini API .
Je vraagt het model bijvoorbeeld om maximaal drie hashtags toe te wijzen aan een bericht op een online sociaal netwerk, zoals Mastodon. De ideale uitvoer zou er ongeveer als volgt uit kunnen zien in JSON-formaat:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
Het bijbehorende JSON-schema voor de gevraagde uitvoerobjectvorm ziet er dan als volgt uit:
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
Dit JSON-schema definieert een structuur voor een object dat een hashtags veld moet bevatten met de volgende beperkingen:
-
"type": "object": De hoofdwaarde moet een JSON-object zijn. -
"properties": { "hashtags": ... }: Het object kan (en in dit geval moet) een eigenschap genaamdhashtagshebben. "hashtags":-
"type": "array": De waarde moet een array zijn. -
"maxItems": 3: De array kan maximaal 3 items bevatten. -
"items": { "type": "string", "pattern": "^#[^\\s#]+$" }: Elk item in de array moet een tekenreeks zijn die overeenkomt met het gegeven reguliere expressiepatroon:^#[^\\s#]+$:-
^#→ moet beginnen met een#. -
[^\\s#]+→ gevolgd door een of meer tekens die geen spatie (\s) of een ander#zijn. -
$→ moet daar eindigen.
-
-
"required": ["hashtags"]: Het object moet de eigenschaphashtagsbevatten."additionalProperties": false: Er zijn geen andere eigenschappen dan hashtags toegestaan.
Lees de documentatie over de basisprincipes van JSON-schema's voor een volledige beschrijving van de mogelijkheden van dit formaat.
LLM's zijn namelijk erg goed in het maken van JSON-schema's. Beschrijf de beperkingen in natuurlijke taal in je prompt en geef een geldig voorbeeld van een JSON-object, en je bent al een heel eind op weg. Je kunt de JSON-objecten vervolgens valideren aan de hand van het gegenereerde JSON-schema met een van de JSON-schema-validators , bijvoorbeeld de online Newtonsoft JSON Schema Validator .

Geef een JSON-schema door aan de Prompt API.
Om ervoor te zorgen dat het model een aangevraagd JSON-schema respecteert, moet u het JSON-schema als argument doorgeven aan het options-object van de prompt() of promptStreaming() methoden als waarde van een responseConstraint veld.
Hier is een heel eenvoudig JSON Schema-voorbeeld dat ervoor zorgt dat het model ' true of false retourneert bij de classificatie of een bepaald bericht, zoals dit Mastodon-bericht, over aardewerk gaat.
const session = await LanguageModel.create();
const schema = {
"type": "boolean"
};
const post = "Mugs and ramen bowls, both a bit smaller than intended- but that's
how it goes with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";
const result = await session.prompt(
`Is this post about pottery?\n\n${post}`,
{
responseConstraint: schema,
}
);
console.log(JSON.parse(result));
// true
Ondersteun voorspelbare resultaten
De ondersteuning voor gestructureerde uitvoer in de Prompt API maakt de reacties van het LLM veel voorspelbaarder. In plaats van een object uit een Markdown-antwoord of andere nabewerking te extraheren, kunnen ontwikkelaars er nu vanuit gaan dat het antwoord van het model geldige JSON is.
Dit brengt ingebouwde AI een stap dichter bij cloudgebaseerde API's, met alle voordelen van het lokaal, aan de clientzijde uitvoeren van AI.