Generazione di schema con AI - Documentazione di Entity Enricher

Generazione di schema con AI

Genera schemi JSON strutturati dai dati di esempio con l'IA, con autocorrezione automatica e post-elaborazione intelligente.

Come funziona

La generazione dello schema trasforma i dati grezzi di un'entità in uno schema JSON tipizzato e annotato che definisce esattamente quali informazioni estrarre durante l'arricchimento. Invece di scrivere manualmente gli schemi, incollate un JSON di esempio e lasciate che l'AI ne analizzi la struttura, deduca i tipi, assegni i domini di competenza e suggerisca miglioramenti.

La pipeline di generazione

La generazione non è un unico grande prompt. È una sequenza di piccole chiamate a scopo singolo, per lo più eseguite in parallelo — ed è ciò che consente a modelli piccoli ed economici di produrre uno schema utilizzabile, poiché ogni chiamata risponde a una sola domanda circoscritta su materiale che riesce a tenere sotto gli occhi.

  1. Canonicalizzare il campione (nessun LLM) — un valore che porta con sé la propria unità diventa un numero con l'unità nel nome ("8.275 h" diventa half_life_seconds: 29790) e una data che nessun tipo nativo può contenere diventa un anno intero. Ogni valore osservato deve confermare l'ipotesi, altrimenti la proprietà resta testuale. È il campione riscritto a essere salvato.
  2. Delimitazione dell'identità — una sola chiamata, eseguita prima di tutte le altre perché è l'ultima autorizzata a modificare il suo campione. Quando un elemento di un array correlato mescola fatti relativi a quell'entità con fatti relativi al suo abbinamento con l'elemento padre, l'elemento viene ristrutturato: i fatti sull'abbinamento restano dove sono, i fatti propri dell'entità vengono annidati in un sottooggetto denominato. Senza questo passaggio i due tipi di fatto condividerebbero un'unica identità.
  3. Derivare lo scheletro (nessun LLM) — l'albero delle proprietà, i tipi JSON e la nullabilità derivano direttamente dal campione o dai campioni; le strutture ripetute e gli elementi di array simili a entità diventano definizioni riutilizzabili. Gli oggetti localizzati (come {"en": "...", "fr": "..."}) vengono ridotti a un unico valore multilingue.
  4. Poni le domande in parallelo — chiamate concorrenti separate definiscono l'identità e la denominazione dell'entità, i flag comportamentali (key, preserve, multilingual, nullable, oltre alle proposte di formato), se i campi a numeri interi siano effettivamente discreti, quali stringhe provengano da un vocabolario chiuso e come le proprietà vengano indirizzate ai domini di competenza.
  5. Redigere la documentazione — una chiamata per ciascun dominio di competenza, nel ruolo proprio di quel dominio, che produce la descrizione e gli esempi di ogni proprietà — oltre a un proprio secondo parere sul fatto che il valore possa davvero essere assente.
  6. Assemblare, validare, salvare (nessun LLM) — i frammenti vengono uniti, le 8 regole di validazione fungono da rete di sicurezza, un post-processing deterministico risolve i conflitti tra flag e lo schema viene salvato — deduplicato tramite hash del contenuto, così gli schemi identici non vengono duplicati.

Ogni passaggio riprova autonomamente (3 tentativi) e le sue risposte si accumulano tra un tentativo e l'altro, così anche un modello che risponde in modo frammentario converge. Al termine il passaggio accetta quanto ottenuto e le lacune vengono colmate in modo deterministico: un modello debole peggiora le descrizioni anziché far fallire la generazione. Solo l'identità e l'instradamento del dominio possono far fallire l'intera esecuzione. Ogni chiamata viene fatturata e registrata come prompt a sé stante, così il record mostra esattamente quanto è stato speso e dove.

È possibile passare diversi campioni dello stesso tipo di entità invece di uno solo: lo schema copre quindi l'unione dei loro campi, tutto ciò che manca in un campione diventa nullable e i valori osservati nei vari campioni diventano esempi reali. I nomi dei campi devono corrispondere: i campioni che descrivono tipi di entità diversi vengono rifiutati, così come gli oggetti all'interno di un array che non condividono alcun campo, poiché non rimarrebbe nulla per identificare le loro righe. L'editor dei campioni segnala qualsiasi differenza di questo tipo prima che venga consumata una generazione.

I valori che contengono la propria unità di misura vengono convertiti in numeri prima di derivare lo schema, perché una colonna di "8.275 h" e "85 ms" non può essere ordinata, filtrata per intervallo o aggregata. L'unità viene spostata nel nome della proprietà (half_life_seconds), un sostituto non numerico come "stable" diventa null e le date antecedenti all'anno 1 diventano un anno intero (negativo per gli anni a.C.), che nessun tipo di data può memorizzare e che il testo ordina in modo errato. Il pannello del campione viene aggiornato di conseguenza, così da mostrare sempre il campione descritto dallo schema. Tutto ciò che la conversione non riesce a interpretare con certezza viene lasciato esattamente come lo ha scritto.

Autocorrezione, passo dopo passo

Poiché ogni passaggio risponde a una singola domanda circoscritta, anche la correzione può esserlo: il validatore del passaggio conserva tutto ciò che è tornato utilizzabile e richiede di nuovo soltanto ciò che manca. Nulla viene rigenerato da zero, quindi una risposta parzialmente corretta è un progresso e non un tentativo sprecato.

Esempio: il passaggio dei flag su 30 proprietà

Tentativo 1Il modello risponde per 22 di esse e suddivide la risposta su più chiamate di tool: una modalità di errore frequente nei modelli di piccole dimensioni. Tutte e 22 vengono conservate.
RiprovaLa richiesta successiva riguarda solo le 8 proprietà rimanenti: una domanda più breve, con maggiori probabilità di ricevere una risposta completa.
Tentativo 2Ne arrivano altri 6. Gli ultimi 2 ripiegano su valori predefiniti deterministici e la carenza viene annotata nel record di generazione anziché farlo fallire.

Le otto regole di convalida vengono comunque applicate allo schema assemblato come controllo finale: correttezza dei tipi, assegnazione del dominio di competenza, integrità dei riferimenti, completezza. A quel punto costituiscono una rete di sicurezza più che il meccanismo di correzione. Per approfondire ogni regola, consultare la guida Regole di convalida.

Che cosa contiene lo schema

Uno schema generato è più di una semplice definizione di tipo. Ogni proprietà include metadati che guidano il processo di arricchimento:

Tipo

Tipo JSON Schema (string, number, integer, boolean, array, object)

Descrizione

Descrizione contestuale che indica all'AI quali informazioni trovare

Competenza

Quale dominio di competenza (finanziario, normativo, ecc.) fornisce questo valore

Chiave

Indica se questo campo contribuisce a identificare l'istanza. Le chiavi svolgono entrambi i compiti insieme: focalizzano il prompt di arricchimento sull'entità corretta e sono ciò su cui la fusione confronta gli elementi degli array. Una chiave può comunque essere nullable — un qualificatore che distingue elementi simili tra loro resta identificante anche quando intere famiglie ne sono effettivamente prive

Vocabolario chiuso

Quando i valori di una stringa provengono da un insieme ristretto e completamente enumerabile (stati, livelli, codici di classificazione), la generazione propone i membri — scritti esattamente come nei suoi campioni — così l'arricchimento non può derivare verso un sinonimo

Nullable

Indica se il campo può essere null — i campi non nullable sono obbligatori per l'ammissione nel database

Multilingua

Se il campo debba essere arricchito in più lingue

Mantieni

Se mantenere invariato il valore originale durante l'arricchimento

Esempi

Valori di esempio realistici che guidano l'IA verso il formato corretto

Formato / Pattern

Struttura verificabile automaticamente per i valori stringa: le risposte malformate vengono rifiutate e ritentate e i valori memorizzati mantengono la forma canonica. La generazione dichiara soltanto un formato predefinito (date, time, date-time, uuid, email, uri, ipv4, ipv6) comprovato dai propri campioni: un pattern regex è una previsione su valori che nessuno ha ancora visto e, se errato, fa fallire ogni arricchimento del campo, perciò sarà lei ad aggiungerlo nell'editor

Rilevamento del dominio di competenza

L'IA raggruppa le proprietà dello schema in domini di competenza in base al loro significato semantico. Ad esempio, lo schema di un'azienda farmaceutica potrebbe avere domini come “Analista finanziario”, “Esperto normativo” e “Informazioni aziendali”. Questi domini vengono utilizzati dalla strategia multi-competenza per eseguire chiamate LLM parallele e specializzate, ottenendo risultati più approfonditi.

Limiti al numero di domini

Il numero di domini di competenza è limitato automaticamente in base al numero di proprietà dei suoi dati per evitare un'eccessiva frammentazione:

5 proprietà
1 dominio
12 proprietà
2 domini
30 proprietà
5 domini
60 proprietà
10 domini

Post-elaborazione

Una volta assemblati i frammenti, alcuni passaggi deterministici risolvono tutto ciò che non deve essere lasciato a un modello — usando come riscontro i dati di input effettivi:

Ampliamento a nullable

Un campo assente o null in un qualsiasi campione diventa nullable a prescindere dalla risposta del modello: così un valore sconosciuto è una risposta accettata e non un difetto di qualità dei dati. I campioni possono solo ampliare: una manciata di campioni dimostra la presenza per quelle istanze, mai per ogni istanza del tipo — ed è per questo che anche il modello esprime un voto, e i due vengono combinati in OR.

Risoluzione dei conflitti tra flag

Gli attributi che non possono coesistere vengono riconciliati tramite regole anziché con una nuova richiesta: preserve prevale su multilingual e nullable, un vocabolario chiuso che sopravvive azzera multilingual e una proprietà chiave non conserva mai un enum.

Riparazione delle chiavi degli elementi dell’array

Ogni oggetto all'interno di un array ha garantita almeno una proprietà chiave: è l'unità su cui la fusion esegue la deduplicazione, quindi un elemento di array privo di chiave renderebbe impossibile unire le risposte di due modelli.

Raccolta delle competenze

Tutti i domini di competenza univoci vengono raccolti dallo schema per le metriche e la configurazione della strategia.

La lingua in cui è scritto uno schema

Uno schema descrive se stesso in una lingua: i nomi dei tipi, le descrizioni delle proprietà, le etichette di competenza e i suggerimenti. È cosa diversa dalle lingue verso cui arricchisce. Ne indichi una alla generazione, oppure la ometta e a decidere sarà la lingua dei nomi di proprietà del suo campione: un campione in francese smette di produrre uno schema in inglese. La scelta viene memorizzata, così le modifiche AI successive continuano a scrivere nella stessa lingua invece di tornare all'inglese.

La generazione dei campioni veri e propri

Non servono dati di esempio per iniziare. Descriva il tipo di entità — eventualmente con documenti su cui fondarla o una ricerca web per confrontarla con la realtà — e la piattaforma scriverà gli esempi al posto suo. Se ne richiede più di uno, otterrà più istanze diverse, non la stessa istanza riformulata.

Tutte le istanze vengono scelte in una sola volta

Il primo campione stabilisce, nella stessa chiamata, anche a chi si riferiranno gli altri. Chiedere N volte in modo indipendente “un esempio” restituisce immancabilmente N volte la stessa istanza celebre; è l'indicazione anticipata dell'intero insieme a renderli distinti.

Il primo campione fissa la struttura

I campioni rimanenti vengono generati in parallelo rispetto alla struttura del campione 1, usata come contratto e non come semplice modello da imitare: una variante non può quindi rinominare, aggiungere o eliminare un campo. Quelli che risultano comunque duplicati o malformati vengono richiesti di nuovo in un'ondata di tentativi limitata e, se il numero previsto non viene raggiunto, ne viene data comunicazione anziché restituire silenziosamente un numero inferiore di campioni.

La lingua e le sue istruzioni

La lingua è impostata per impostazione predefinita su auto, dedotta dalle parole della sua richiesta e poi da eventuali documenti allegati. Le istruzioni aggiuntive che inserisce sono vincolanti: vengono rispettate, oppure la risposta indica che cosa non è stato possibile rispettare e perché — mai ignorate in silenzio.

Controllo di ambiguità

Leggere il nome di una proprietà nel contesto del suo oggetto padre e contare le cose distinte che potrebbe richiedere. Una sola è chiara. Con due o più, ogni modello ne sceglie una diversa e la colonna finisce per mescolare risposte a domande diverse: annual_revenue su un'azienda può riferirsi al gruppo o all'entità, al lordo o al netto, in una fra più valute. Nessuna — un nome per qualcosa che questo padre semplicemente non possiede — è peggio: non avendo nulla da cercare, il modello inventa un valore.

La generazione contrasta il fenomeno due volte: il prompt stesso richiede nomi che ammettano una sola lettura e una passata successiva sullo schema finito annota quelli che ancora non lo fanno. In questa fase il rimedio è una ridenominazione: le descrizioni sono state generate a partire dai nomi, quindi una descrizione non può disambiguare il nome da cui deriva, e nulla dipende ancora dallo schema. La generazione dell'esempio esegue lo stesso controllo sull'esempio e applica le ridenominazioni prima ancora che venga mostrato. Il testo libero — una descrizione, un riepilogo, delle note — non viene mai segnalato: la formulazione varia, ma la domanda posta è chiara.

Le proprietà segnalate mostrano un badge “ambigua” nel Workflow Editor, con l'elenco delle letture ammesse dal nome. Una volta che lo schema è in produzione, il rimedio diventa una descrizione riscritta, che fissa un solo significato senza rompere il contratto dati. Consultare la guida Controllo di ambiguità per la griglia completa e i relativi rimedi.

Quando generate un'entità di esempio da una descrizione, potete abilitare «Usa ricerca web» per consentire al modello di cercare fatti aggiornati sul web anziché affidarsi ai soli dati di addestramento. Questo produce valori di esempio più freschi e accurati — soprattutto per fatti in rapida evoluzione come prezzi, numero di dipendenti o uscite recenti. L'opzione compare solo per i modelli il cui provider supporta la ricerca web integrata e le chiamate di ricerca vengono fatturate dal provider come qualsiasi altro utilizzo del modello.

Modifica dello schema con AI

Dopo la generazione, è possibile modificare gli schemi utilizzando istruzioni in linguaggio naturale. Digitando un comando, l'AI applica la modifica preservando la struttura dello schema esistente. Ogni modifica produce inoltre 5 suggerimenti per ulteriori miglioramenti.

Comandi di modifica di esempio

Aggiungi un campo intero employee_count
Crea un oggetto indirizzo nidificato con città e paese
Aggiungi descrizioni in francese a tutti i campi di testo
Definire un riferimento alla società madre utilizzando $defs
Contrassegna il campo del sito web come nullable

Le modifiche dell'AI vengono validate utilizzando un sottoinsieme delle regole di generazione (controllo dei tipi, integrità dei riferimenti, coerenza dei domini di competenza) senza confronto con i dati di input, poiché è possibile aggiungere o rimuovere campi intenzionalmente.

Suggerimenti AI

Sia la generazione dello schema sia la modifica con IA producono 5 suggerimenti mirati che coprono diverse categorie di miglioramento:

Completezza dei datiCampi mancanti che potrebbero arricchire la tua entità
Qualità dei datiVocabolari chiusi, nullabilità, correzioni di tipo
RelazioniStrutture nidificate, riferimenti a entità tramite $defs
InternazionalizzazioneTraduzioni multilingua, supporto delle impostazioni locali
Contesto aziendaleCampi specifici del dominio e raggruppamenti per area di competenza

I suggerimenti compaiono come chip cliccabili nel Workflow Editor — ne clicchi uno per compilare automaticamente il campo di modifica AI e applicarlo.

Passaggi successivi