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. Deriva lo scheletro (senza LLM) — l'albero delle proprietà, i tipi JSON e la nullabilità provengono direttamente dai campioni; una forma riutilizzata in più punti diventa una definizione riutilizzabile, mentre un oggetto presente in un solo punto ne ottiene una soltanto quando il controllo delle relazioni vi riconosce un'entità. 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

Identificante

Indica se questo campo contribuisce a identificare l'istanza. Le proprietà identificanti 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 di esse può comunque essere nullable: un qualificatore che distingue tra loro elementi simili resta identificante anche quando intere famiglie ne sono realmente prive

Vocabolario dei valori

Quando i valori di una stringa provengono da un insieme ristretto e convenzionale (stati, valutazioni, codici di classificazione), la generazione propone i membri — con la stessa grafia usata nei suoi campioni — come vocabolario aperto verso cui converge l'arricchimento. I valori osservati al di fuori dell'elenco compaiono come candidati nell'editor e l'insieme si chiude quando smette di crescere; un insieme chiuso diventa un contratto vincolante da cui l'arricchimento non può discostarsi

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.

  1. 1Raggruppa la tabella in base al dominio di ciascuna proprietà
  2. 2Proprietà a cui risponde questa singola chiamata esperta
  3. 3La persona assegnata a quella chiamata
Il dominio è un attributo di ciascuna proprietà, non una disposizione — l'interruttore si limita a riorganizzare la vista. La frase accanto al nome di un dominio è il ruolo assegnato alla relativa chiamata di arricchimento, e il conteggio indica a quante proprietà quella singola chiamata deve rispondere.

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 a parole il campione desiderato — il tipo di entità, le proprietà che deve contenere, quanto ampio o quanto profondo — eventualmente con documenti a cui ancorarlo oppure con la ricerca web per verificarlo rispetto alla realtà — e la piattaforma scriverà i campioni al posto Suo. Se ne richiede diversi, otterrà diverse istanze differenti, non la stessa istanza riformulata.

  1. 1La richiesta: tipo di entità, proprietà, budget di dimensione
  2. 2Quante istanze si ottengono — mai quanti campi
  3. 3Auto lascia che sia il modello a scegliere la convenzione di denominazione
“Esempi tipici” è il punto in cui indicare le istanze che ha già in mente — una per campione, associate nell'ordine; gli spazi lasciati vuoti vengono inventati automaticamente.

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 Sua richiesta è vincolante — e, quando necessario, riceve in risposta delle domande

Ogni requisito della richiesta viene rispettato — un limite di dimensione prevale sulla tendenza del generatore a essere esaustivo, una struttura richiesta prevale sull'impostazione predefinita — oppure la risposta indica che cosa non è stato possibile rispettare e perché, senza mai ometterlo in silenzio. Un aspetto però non fa parte della richiesta: quanti campioni si ottengono lo stabilisce il sample count, e ogni campione è esattamente un'istanza — chiedere «tre campioni» nel testo non produce mai un elenco racchiuso in un unico oggetto. Quando la richiesta è realmente ambigua (un tipo di entity con più letture, due ambiti incompatibili), il generatore pone una domanda prima di consumare la generazione, invece di procedere per ipotesi. La lingua è impostata su auto per impostazione predefinita, dedotta dalle parole della richiesta stessa e poi da un eventuale documento allegato.

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.

Durante la generazione di un'entità di esempio a partire da una descrizione, può attivare “Use web search” per consentire al modello di cercare informazioni aggiornate sul web anziché basarsi unicamente sui propri dati di addestramento. In questo modo i valori di esempio risultano più recenti e accurati — soprattutto per dati che cambiano rapidamente come prezzi, numero di dipendenti o uscite recenti. L'opzione è disponibile 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.

  1. 1Solo per i modelli con ricerca integrata
  2. 2Cambiare modello qui può disattivare l'opzione
La casella di controllo è legata al modello selezionato subito sotto: scegliendone uno il cui provider non dispone di una ricerca integrata, la casella si disattiva indicandone il motivo, invece di ignorare in silenzio la scelta effettuata.

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