Regole di convalida - Documentazione di Entity Enricher

Regole di convalida

Otto regole di validazione garantiscono la qualità dello schema. Quando una regola non viene soddisfatta durante la generazione dello schema con AI, l'errore viene inviato nuovamente all'AI per l'autocorrezione automatica.

Come funziona l'autocorrezione

Dopo che l'AI ha generato uno schema, questo attraversa tutte le 8 regole di validazione. Se una regola non viene superata, i messaggi di errore specifici vengono raccolti e inviati all'AI come feedback. L'AI produce quindi uno schema corretto, che viene nuovamente validato. Questo ciclo prosegue per un massimo di 6 tentativi complessivi (1 iniziale + 5 nuovi tentativi).

Flusso di correzione

L'AI generaSchema con proprietà, tipi, competenze e descrizioni
Controlli del validatore8 regole applicate in sequenza, tutti gli errori raccolti
In caso di erroriMessaggi di errore restituiti: «Correggere questi problemi: [revenue: tipo non corrispondente...]»
L'AI correggeProduce uno schema aggiornato che risolve gli errori segnalati
RipetiFinché tutte le regole non vengono superate o non viene raggiunto il numero massimo di tentativi

In pratica, la maggior parte degli schemi supera la convalida al primo tentativo. Il ciclo di autocorrezione è una rete di sicurezza che gestisce i casi limite in cui l'IA commette errori di tipo o dimentica un campo.

Regole di generazione vs. modifica

Non tutte le regole si applicano sia alla generazione dello schema sia alla modifica AI. Le regole che confrontano con i dati di input vengono ignorate durante la modifica, poiché potresti aggiungere o rimuovere campi intenzionalmente:

AmbitoRegole applicatePerché
GenerazioneTutte le 8 regoleI dati di input sono disponibili per il confronto
Modifica con l'AISolo le regole 2, 3, 4, 5Nessun dato di input; l'utente potrebbe modificare intenzionalmente la struttura

Le 8 regole

Regola 1

Numero di domini di competenza

Ambito: Solo generazione

Il numero di domini di competenza non deve superare il massimo calcolato in base al numero di proprietà. Ciò impedisce all'IA di creare troppi domini granulari per schemi di piccole dimensioni.

Errore di esempio: Too many expertise domains: 6 defined, maximum is 3

Il massimo è calcolato come floor(numero_proprietà / 6), con un minimo di 1. Uno schema con 12 proprietà consente fino a 2 domini.

Regola 2

Almeno una proprietà

Ambito: Entrambi

Ogni schema deve definire almeno una proprietà. Uno schema vuoto non può essere usato per l'enrichment.

Errore di esempio: Schema must have at least one property

Questo intercetta i casi in cui l'IA produce una struttura JSON valida ma dimentica di includere campi effettivi.

Regola 3

Tipi di JSON Schema validi

Ambito: Entrambi

Il tipo di ogni proprietà deve essere uno dei tipi standard di JSON Schema: string, number, integer, boolean, array, object o null.

Errore di esempio: revenue: invalid type 'float'

A volte l'IA inventa tipi come "float", "decimal" o "date". Questa regola li rileva e richiede una correzione verso un tipo valido.

Regola 4

I target di $ref esistono

Ambito: Entrambi

Tutti i riferimenti $ref devono puntare a entità definite nella sezione $defs dello schema. I riferimenti pendenti interrompono la pipeline di arricchimento.

Errore di esempio: manufacturer: $ref '#/$defs/Company' references undefined definition

Quando l'IA crea un riferimento come #/$defs/Company, deve esistere una definizione Company corrispondente nel blocco $defs.

Regola 5

La chiave di competenza esiste

Ambito: Entrambi

Il valore di competenza di ogni proprietà deve corrispondere a uno dei domini di competenza definiti. Questo previene errori di battitura e incoerenze.

Errore di esempio: revenue: expertise 'finance' not in defined domains: ['financial_analyst']

L'IA potrebbe usare "finance" invece della chiave definita "financial_analyst". Questa regola rileva la discrepanza affinché l'IA possa correggerla.

Regola 6

Competenza richiesta

Ambito: Solo generazione

Le proprietà non-oggetto e non conservate devono avere un'assegnazione di expertise domain. Ciò garantisce che ogni campo arricchibile sia gestito da un dominio specialistico.

Errore di esempio: revenue: expertise is required for non-object types

I tipi object sono esentati perché le loro proprietà figlie contengono la propria competenza. I campi preservati sono esentati perché vengono trasmessi invariati.

Regola 7

Il tipo corrisponde ai dati di input

Ambito: Solo generazione

Il tipo di schema per ogni proprietà deve corrispondere al tipo Python effettivo del valore corrispondente nei dati di input.

Errore di esempio: revenue: type mismatch - input is number but schema says 'string'

Se l'input contiene "revenue": 42.5, lo schema deve usare il tipo "number" o "integer", non "string". Il validatore è flessibile: accetta "number" per gli interi e viceversa.

Regola 8

Tutte le proprietà di input presenti

Ambito: Solo generazione

Ogni chiave dei dati di input deve comparire come proprietà nello schema generato. Questo impedisce all'AI di scartare silenziosamente dei campi.

Errore di esempio: Missing property from input: 'headquarters'

Se il JSON di input contiene una chiave "headquarters", lo schema generato deve includerla. Ciò garantisce una copertura completa dei suoi dati.

Inferenza del tipo

La regola 7 (corrispondenza dei tipi) utilizza l'inferenza automatica dei tipi per confrontare i valori inseriti con i tipi dichiarati dallo schema. L'inferenza è flessibile per evitare falsi positivi:

Valore di inputTipo dedottoAccetta anche
true / falseboolean(solo booleano)
42integernumber
3.14numberinteger
"hello"string(solo stringa)
[1, 2, 3]array(solo array)
{"key": "val"}object(solo oggetto)

Nota: i valori booleani vengono verificati prima degli interi perché in alcuni linguaggi il booleano è un sottotipo dell'intero. Questo ordinamento impedisce che true venga interpretato come un intero.

Passaggi successivi