Validatieregels - Entity Enricher-documentatie

Validatieregels

Acht validatieregels waarborgen de kwaliteit van het schema. Wanneer een regel faalt tijdens AI-schemageneratie, wordt de fout teruggestuurd naar de AI voor automatische zelfcorrectie.

Hoe zelfcorrectie werkt

Nadat de AI een schema heeft gegenereerd, doorloopt het alle 8 validatieregels. Als een regel faalt, worden de specifieke foutmeldingen verzameld en als feedback teruggestuurd naar de AI. De AI produceert vervolgens een gecorrigeerd schema, dat opnieuw wordt gevalideerd. Deze lus gaat door tot maximaal 6 pogingen in totaal (1 initiële + 5 nieuwe pogingen).

Correctieflow

AI genereertSchema met eigenschappen, typen, expertise en beschrijvingen
Validatorcontroles8 regels die achtereenvolgens worden toegepast, alle fouten worden verzameld
Bij foutenTeruggestuurde foutmeldingen: “Los deze problemen op: [revenue: type komt niet overeen...]”
AI corrigeertLevert een bijgewerkt schema dat de gemelde fouten aanpakt
HerhalenTotdat alle regels slagen of het maximale aantal pogingen is bereikt

In de praktijk slagen de meeste schema's bij de eerste poging. De zelfcorrectielus is een vangnet voor randgevallen waarin de AI typefouten maakt of een veld vergeet.

Regels voor generatie vs. bewerken

Niet alle regels gelden voor zowel schemageneratie als AI-bewerking. Regels die met invoergegevens worden vergeleken, worden tijdens het bewerken overgeslagen omdat je opzettelijk velden kunt toevoegen of verwijderen:

BereikToegepaste regelsWaarom
GeneratieAlle 8 regelsInvoergegevens zijn beschikbaar voor vergelijking
AI-bewerkingAlleen regels 2, 3, 4, 5Geen invoergegevens; gebruiker kan de structuur bewust aanpassen

De 8 regels

Regel 1

Aantal expertisedomeinen

Bereik: Alleen generatie

Het aantal expertisedomeinen mag het berekende maximum op basis van je aantal eigenschappen niet overschrijden. Dit voorkomt dat de AI te veel fijnmazige domeinen aanmaakt voor kleine schema's.

Voorbeeldfout: Too many expertise domains: 6 defined, maximum is 3

Het maximum wordt berekend als floor(property_count / 6), met een minimum van 1. Een schema met 12 eigenschappen staat maximaal 2 domeinen toe.

Regel 2

Ten minste één eigenschap

Bereik: Beide

Elk schema moet minstens één eigenschap definiëren. Een leeg schema kan niet voor verrijking worden gebruikt.

Voorbeeldfout: Schema must have at least one property

Dit vangt gevallen op waarin de AI een geldige JSON-structuur produceert maar vergeet daadwerkelijke velden op te nemen.

Regel 3

Geldige JSON Schema-typen

Bereik: Beide

Elk eigenschapstype moet een van de standaard JSON Schema-types zijn: string, number, integer, boolean, array, object of null.

Voorbeeldfout: revenue: invalid type 'float'

De AI verzint soms typen als "float", "decimal" of "date". Deze regel signaleert die en vraagt om een correctie naar een geldig type.

Regel 4

$ref-doelen bestaan

Bereik: Beide

Alle $ref-verwijzingen moeten verwijzen naar entiteiten die zijn gedefinieerd in de $defs-sectie van het schema. Losse verwijzingen breken de verrijkingspijplijn.

Voorbeeldfout: manufacturer: $ref '#/$defs/Company' references undefined definition

Wanneer de AI een referentie zoals #/$defs/Company aanmaakt, moet er een bijbehorende Company-definitie in het $defs-blok staan.

Regel 5

Expertisesleutel bestaat

Bereik: Beide

De expertisewaarde van elke eigenschap moet overeenkomen met een van de gedefinieerde expertisedomeinen. Zo voorkom je typefouten en inconsistenties.

Voorbeeldfout: revenue: expertise 'finance' not in defined domains: ['financial_analyst']

De AI gebruikt mogelijk "finance" in plaats van de gedefinieerde sleutel "financial_analyst". Deze regel signaleert die afwijking zodat de AI het kan corrigeren.

Regel 6

Expertise vereist

Bereik: Alleen generatie

Eigenschappen die geen object zijn en niet behouden blijven, moeten een expertisetoewijzing hebben. Zo wordt elk verrijkbaar veld afgehandeld door een gespecialiseerd domein.

Voorbeeldfout: revenue: expertise is required for non-object types

Object-typen zijn uitgezonderd, omdat hun onderliggende eigenschappen hun eigen expertise dragen. Behouden velden zijn uitgezonderd, omdat ze ongewijzigd worden doorgegeven.

Regel 7

Type komt overeen met invoergegevens

Bereik: Alleen generatie

Het schematype voor elke eigenschap moet overeenkomen met het werkelijke Python-type van de bijbehorende waarde in je invoergegevens.

Voorbeeldfout: revenue: type mismatch - input is number but schema says 'string'

Als je invoer "revenue": 42.5 bevat, moet het schema het type "number" of "integer" gebruiken, niet "string". De validator is flexibel: hij accepteert "number" voor gehele getallen en omgekeerd.

Regel 8

Alle invoereigenschappen aanwezig

Bereik: Alleen generatie

Elke sleutel in je invoerdata moet als eigenschap in het gegenereerde schema voorkomen. Zo voorkom je dat de AI stilletjes velden weglaat.

Voorbeeldfout: Missing property from input: 'headquarters'

Als je invoer-JSON een "headquarters"-sleutel bevat, moet het gegenereerde schema deze bevatten. Zo worden je gegevens volledig gedekt.

Type-inferentie

Regel 7 (type-overeenkomst) gebruikt automatische type-inferentie om je invoerwaarden te vergelijken met de gedeclareerde types van het schema. De inferentie is flexibel om valse positieven te voorkomen:

InvoerwaardeAfgeleid typeAccepteert ook
true / falseboolean(alleen boolean)
42integernumber
3.14numberinteger
"hello"string(alleen string)
[1, 2, 3]array(alleen array)
{"key": "val"}object(alleen object)

Let op: booleans worden vóór integers gecontroleerd, omdat een boolean in sommige talen een subtype van integer is. Deze volgorde voorkomt dat true als een integer wordt geïnterpreteerd.

Volgende stappen