Lokale LLM-uitvoer doorbreekt een geldig JSON-schema wanneer generatie, constraint-afhandeling, stopregels en validatie niet hetzelfde contract afdwingen.
Een zelfgehoste workflow kan een schema dat voldoet aan de standaarden aanleveren voor bestandsmetadata, smart-home-acties, documentextractie of toolargumenten en toch onjuist gevormde of afgewezen uitvoer ontvangen. “Geldig schema” beschrijft het schemadocument, niet het volledige uitvoeringstraject. Het model moet de taak begrijpen, de decoder moet de relevante schemafuncties ondersteunen, de generatie moet zijn voltooid voordat een stopconditie deze afbreekt, de parser moet een volledige JSON-waarde reconstrueren en de applicatievalidator moet de verwachte draft- en coercionregels toepassen.
Geldige JSON en schema-geldige JSON zijn verschillende uitkomsten
Een object kan zonder problemen worden geparsed en toch verplichte velden, typen, enums, arraylimieten of voorwaardelijke vertakkingen schenden. Het kan ook correcte veldnamen bevatten, maar eigenschappen toevoegen die volgens het schema verboden zijn.
De JSON-module van Python definieert de syntaxlaag voor het decoderen van een JSON-document, maar parsing past geen afzonderlijk JSON Schema-contract toe.
Deze oorzaak is herkenbaar wanneer de uitvoer zonder syntaxfout wordt geladen, maar pas na schemavalidatie faalt. Een ontbrekende accolade of afsluitende uitleg is een serialisatiefout; een string waar een integer vereist is, is een contractfout.
Schemacompositie kan moeilijk te vervullen vertakkingen creëren
Trefwoorden zoals allOf, anyOf, oneOf en not combineren beperkingen. Een vertakking kan op zichzelf geldig zijn, terwijl het gecombineerde object aan geen of juist meerdere van de toegestane alternatieven voldoet.
De JSON Schema-richtlijnen leggen uit hoe trefwoorden voor schemacompositie bepalen of één of meerdere subschema’s moeten overeenkomen.
Een lokaal model verwerkt vaak een platte lijst met eigenschappen betrouwbaarder dan geneste voorwaardelijke logica. Als fouten zich concentreren rond unions of onderling exclusieve objectvormen, komt de belangrijkste druk voort uit vertakkingsselectie en niet uit basale JSON-interpunctie.
De decoder met constraints ondersteunt mogelijk slechts een deel van het schema
Engines voor gestructureerde uitvoer vertalen schema’s naar tokenbeperkingen, grammatica’s, reguliere expressies of backend-specifieke regels. Ze implementeren niet allemaal elke JSON Schema-draft of elk trefwoord.
vLLM biedt meerdere backends voor gestructureerde uitvoer, waaruit blijkt dat JSON-schema’s, grammatica’s, reguliere expressies en beperkingen op basis van vaste keuzes afzonderlijke uitvoeringsmodi zijn.
Deze oorzaak treedt op wanneer hetzelfde schema correct wordt gevalideerd door een standaardvalidator, maar alleen onder één inference-backend faalt. Niet-ondersteunde recursie, verwijzingen, patronen of voorwaardelijke trefwoorden kunnen worden vereenvoudigd, genegeerd of afgewezen voordat het model iets genereert.
Promptinstructies kunnen conflicteren met het schema
De gebruikersprompt kan om commentaar, citaten, uitleg, optionele weglatingen of natuurlijke-taalkundige onzekerheid vragen, terwijl het schema één object met vaste velden vereist.
Het model heeft dan twee concurrerende succescriteria: de gebruiker conversationeel antwoorden en uitsluitend tokens produceren die binnen het machinecontract zijn toegestaan. Een kleiner lokaal model kan de meest recente of opvallendste instructie volgen in plaats van beide met elkaar te verzoenen.
Deze fouten voegen vaak een inleiding, markdown-codeblok, uitleg na het object of een waarde toe die wel aan het verzoek in natuurlijke taal voldoet, maar de gedeclareerde enum schendt. Het schema is geldig; de instructiehiërarchie is inconsistent.
Afkapping kan een correct plan in ongeldige uitvoer veranderen
Geneste arrays en objecten hebben voldoende gegenereerde tokens nodig om elke structuur te sluiten. Een tokenlimiet, stopstring, geannuleerd verzoek of onderbroken stream kan het antwoord beëindigen voordat de laatste scheidingstekens zijn toegevoegd.
Transformers biedt instellingen voor maximale tokens en stoppen die bepalen wanneer de generatie eindigt.
Deze hoofdoorzaak wordt gekenmerkt door geldige voorvoegsels die abrupt eindigen, vooral bij grotere arrays of lange stringvelden. Herhaalde typefouten aan het begin wijzen op iets anders; ontbrekende sluitende haakjes rond de uitvoerlimiet duiden op onvolledige generatie.
Validatiesemantiek kan waarden afwijzen die het model als gelijkwaardig beschouwde
Een model kan "3" voor een integer, null voor een weggelaten veld, een enum in kleine letters of een ISO-datum produceren terwijl de applicatie een ander formaat verwacht.
Pydantic documenteert afzonderlijke categorieën van validatiefouten voor ontbrekende waarden, ongeldige JSON, enumverschillen, verboden extra velden en incompatibele typen.
Als elke fout hetzelfde veld bereikt met een parseerbare maar afgewezen waarde, is de oorzaak geen willekeurige schemafout. Het gaat om een verschil van inzicht over coercion, strictheid, nullability, hoofdlettergebruik of formaten op applicatieniveau.
Grammaticabeperkingen kunnen syntax behouden, maar niet de bedrijfsbetekenis
Een grammatica kan ongeldige accolades en sleutels blokkeren en toch een semantisch onmogelijke combinatie toestaan, zoals een einddatum vóór een startdatum of een niet-bestaand bestandspad.
llama-cpp-python biedt generatie met grammaticabeperkingen als inference-instelling, maar de grammatica bepaalt de toegestane tokenstructuur en niet de externe werkelijkheid.
Een schemafout die wordt veroorzaakt door regels tussen velden kan pas in een tweede validatielaag zichtbaar worden. De uitvoer kan syntactisch en structureel geldig zijn, maar toch onbruikbaar voor de home-serverworkflow.
Postprocessing kan anders geldige modeluitvoer beschadigen
Applicaties verwijderen soms markdown, halen het eerste blok tussen accolades eruit, voegen streamingchunks samen, herstellen komma’s of converteren waarden vóór validatie.
Een geldige modelreactie kan ongeldig worden wanneer een streamchunk wordt gedupliceerd, Unicode verkeerd wordt gedecodeerd, een escape-sequentie wordt verwijderd of een herstelfunctie geneste inhoud bewerkt. Omgekeerd kan een herstelstap verhullen dat de onbewerkte modeluitvoer ongeldig was.
De uitleg van ZimaSpace over waarom kleine lokale modellen hallucineren tijdens JSON-uitvoer vormt de aangrenzende context: schemageldigheid en feitelijke juistheid moeten afzonderlijk worden gemeten, en de onbewerkte reactie moet worden bewaard voordat de applicatie transformaties uitvoert.
Veelgestelde vragen
Bewijst geldige JSON dat de uitvoer overeenkomt met het schema?
Nee. JSON-parsing controleert de syntax. Schemavalidatie controleert afzonderlijk verplichte eigenschappen, typen, enums, vertakkingen, limieten en andere gedeclareerde beperkingen.
Voorkomt temperatuur nul schemafouten?
Nee. Dit kan één decodeerpad beter herhaalbaar maken, maar voegt geen niet-ondersteunde schemafuncties toe, voorkomt geen afkapping en lost conflicterende instructies niet op.
Garandeert constrained decoding een bruikbaar automatiseringsrecord?
Nee. Het kan ondersteunde structurele beperkingen garanderen, maar bedrijfsregels, bronverankering, het bestaan van bestanden, machtigingen en consistentie tussen velden vereisen nog steeds validatie door de applicatie.
Tech & AI HUB
Meer om te lezen

Welke functies maken een vertrouwensgrens voor thuis-AI rond gevoelige bestanden mogelijk?
Een vertrouwensgrens voor thuis-AI combineert versleuteling van gegevens in rust, rechten volgens het principe van minimale bevoegdheden, sandboxing tijdens runtime en retrieval met beperkte...

Waardoor krijgen vaak bewerkte bestanden voorrang in privézoekresultaten?
Vaak bewerkte bestanden krijgen een hogere ranking wanneer elke update versheid, chunks, versies of interactiesignalen toevoegt zonder te normaliseren op basis van de bron.

Waardoor verwarren slimme-aanwezigheidsmodellen gasten met bewoners?
Gasten kunnen op bewoners lijken wanneer het systeem activiteitspatronen in het huishouden waarneemt, maar geen stabiel identiteitssignaal heeft voor de persoon die deze veroorzaakt.

