Detecteer schema-eigenschappen waarvan de waarden variëren tussen modellen of tussen runs, en corrigeer ze voordat ze je data vervuilen — voor verrijkingen die reproduceerbaar, vergelijkbaar en nauwkeurig zijn.
Entity Enricher behandelt LLM's als doorzoekbare kennisbanken. Dat werkt alleen als een eigenschapsnaam één enkel reproduceerbaar antwoord vastlegt. Een eigenschap als annual_revenue doet dat niet: welk boekjaar? Welke valuta? Miljoenen of eenheden? Elk model — en elke herhaling van hetzelfde model — mag een ander kader kiezen, dus de waarden verschillen zelfs wanneer geen enkel model fout zit.
Wisselvallige eigenschappen schaden alles verderop: multimodelfusie ziet conflicten die eigenlijk verschillen in kadering zijn, en de consistentiespreidingen van de benchmark worden breder om redenen die niets met modelkwaliteit te maken hebben. De non-determinismecontrole vindt deze eigenschappen en vertelt je hoe je ze vastpint.
Elke gemarkeerde eigenschap wordt geclassificeerd in een van vier oorzaken, elk met een eigen oplossing:
| Oorzaak | Voorbeeld | Oplossing |
|---|---|---|
| Temporeel | ceo, stock_priceceo_2025 | Een veranderlijk feit zonder ankerdatum — leg de periode vast, of herstructureer naar een array met de periode als sleutel. |
| Dubbelzinnig | annual_revenuerevenue_fy2024_usd_millions | De naam pint de eenheid, valuta, periode of scope niet vast — verwerk het ontbrekende kader in de naam of beschrijving. |
| Subjectief | reputationesg_risk_rating_sustainalytics | Geen objectieve grondwaarheid — vervang door een meetbare proxy of een vaste schaal; anders blijft het gemarkeerd als adviserend. |
| Meervoudig | top_competitorstop_3_competitors_by_revenue | Meerdere even juiste antwoorden, meestal een onbegrensde lijst — begrens die en geef het sorteercriterium op. |
Hernoemen is niet de enige oplossing: voor schema-eigenschappen stelt de analyzer ook een beschrijvingsfix voor die het ontbrekende kader vastlegt. Een scherpere beschrijving bereikt de verrijkende AI precies zoals de naam dat doet, maar breekt nooit je datacontract — daarom is het de voorkeursoplossing voor schema's die al in gebruik zijn.
Nadat een voorbeeld is gegenereerd, controleert de analyzer het. Ondubbelzinnige hernoemingen worden automatisch toegepast op door AI bedachte sleutels (nooit op velden die je zelf hebt benoemd), en structurele fixes worden teruggekoppeld naar de generator voor maximaal twee correctierondes. Voorbeelden die gebaseerd zijn op bijgevoegde documenten worden overgeslagen — hun waarden komen uit het bronbestand, niet uit de kennis van het model.
Zodra een gegenereerd schema is opgeslagen, annoteert een nabewerking elke eigenschap met het non-determinismeniveau ervan. Deze stap is best-effort: als die mislukt, blijft de generatie zelf onaangetast.
De knop Opnieuw controleren analyseert alleen eigenschappen die nog geen annotatie hebben, en schakelt over op een volledige heranalyse zodra elke eigenschap is geannoteerd.
Voorbeeld-JSON die je plakt voor het aanmaken van een schema kan stateless worden geanalyseerd — je krijgt een rapport met riskante eigenschapsnamen zonder dat er iets wordt gewijzigd.
De controle is alleen adviserend. Ze blokkeert nooit de generatie, wijst nooit een verrijking af, en de annotaties worden verwijderd uit elke prompt die naar de verrijkende modellen wordt gestuurd — ze informeert jou, niet de AI.
Gemarkeerde eigenschappen tonen een “varieert”-badge in de Schema-editor: amber voor gemiddeld risico, rood voor hoog risico. Als je met de muis over de badge gaat, verschijnt de notitie van de analyzer die uitlegt wat er varieert en waarom. Eigenschappen die als deterministisch worden beoordeeld, krijgen geen badge.
Een oordeel wordt geveld op de naam én de beschrijving van een eigenschap samen — dus het hernoemen van een eigenschap, of het bewerken van de beschrijving, laat de annotatie vervallen. De editor markeert zulke eigenschappen als verouderd en biedt een hercontrole aan, die alleen analyseert wat ontbreekt. Dit is precies wat je wilt na het toepassen van een voorgestelde hernoeming: de hercontrole bevestigt of de nieuwe naam deterministisch is.
De controle kan per schema worden uitgeschakeld via het overloopmenu van de Schema-editor. Wanneer die is uitgeschakeld, wordt de nabewerking na generatie overgeslagen en worden de badges, de knop Opnieuw controleren en de verouderingswaarschuwingen verborgen. Bestaande annotaties blijven behouden (alleen verborgen), en de controle opnieuw inschakelen op een schema dat nooit is geanalyseerd, voert die automatisch uit.
Schema's die zijn gegenereerd uit bijgevoegde documenten beginnen met de controle uitgeschakeld: hun waarden worden overgenomen uit het brondocument, dus variantie van run tot run in modelkennis is niet van toepassing.
Analyzer-notities worden geschreven in je interfacetaal — een Franse gebruiker ziet Franse uitleg, een Japanse gebruiker Japanse. Voorgestelde eigenschapsnamen blijven in het Engels, conform de naamgevingsconventies van schema's.
Elke analyse is een echte (goedkope) modelaanroep, geregistreerd als een eigen prompt op het record en afgeschreven van je credits zoals elk ander AI-gebruik. Incrementele hercontroles rekenen alleen af voor de eigenschappen die daadwerkelijk zijn geanalyseerd.
De schemageneratie zelf krijgt de instructie om deterministische namen en beschrijvingen te produceren (vastgepinde perioden, eenheden, sorteercriteria), zodat de meeste schema's schoon uitkomen en de analysator alleen de achterblijvers hoeft op te vangen.
De controle is programmatisch beschikbaar:
| Symptoom | Beschrijving |
|---|---|
POST /api/schema/analyze-sample | Analyseer geplakte voorbeeld-JSON — stateless rapport, er wordt niets gewijzigd |
POST /api/schema/saved/{id}/analyze | Analyseer een opgeslagen schema en schrijf annotaties — standaard incrementeel, force=true heranalyseert alles |
analyze_sample_determinism | MCP-tool — hetzelfde stateless voorbeeldrapport vanuit Claude of een willekeurige MCP-client |
analyze_schema_determinism | MCP-tool — annoteer een opgeslagen schema; combineer met edit_schema om een voorgestelde hernoeming toe te passen |
Zie de API-referentie en de MCP Server-gids voor authenticatie en de volledige toolcatalogus.