L’intelligenza artificiale è sempre più presente nelle nostre applicazioni. È in grado di generare file JSON complessi, estrarre dati dai documenti o fornire risposte strutturate. Ma c’è un problema: l’intelligenza artificiale può commettere errori, omettere campi o addirittura inventare informazioni.
È qui che lo schema JSON diventa essenziale. Funge da framework per verificare che le risposte dell’IA seguano rigorosamente la struttura prevista, garantendo che i dati rimangano affidabili e utilizzabili nelle applicazioni 4D.
Perché lo schema JSON è importante quando si utilizza l’IA
Uno schema JSON consente di:
- Convalidare automaticamente le risposte prodotte dall’IA
- Rilevare errori, incongruenze o campi mancanti
- Rinviare questi errori all’IA per la correzione automatica
- Garantire dati utilizzabili, anche se il modello si evolve o commette errori
In pratica, lo schema funge da rete di sicurezza: si continua a beneficiare della potenza dell’IA mantenendo al contempo un formato prevedibile e controllato per le applicazioni 4D.
Utilizzo dello schema JSON con 4D AI Kit
4D AI Kit include una funzionalità molto utile, ovvero la possibilità di chiedere all’IA di restituire una risposta JSON strutturata secondo uno schema specifico.
Ciò consente di definire esattamente:
- i campi previsti,
- i loro tipi,
- e persino determinati vincoli (valori consentiti, intervalli numerici, ecc.).
Questo approccio è descritto in dettaglio in due post del blog 4D: uno incentrato sugli output strutturati, che istruiscono esplicitamente l’IA a rispettare un formato di risposta predefinito, e un altro che introduce il parser JSON Schema Draft 2020-12, che supporta lo standard più recente e consente una convalida più rigorosa ed espressiva del JSON generato dall’IA.
Esempio: analisi del testo ed estrazione di entità
Immaginate di utilizzare un’API di analisi del testo per riconoscere le entità in una frase. Una risposta dell’IA potrebbe essere simile a questa:
{
"model": "gpt-text-analyzer-v2",
"input": "Steve Jobs ha fondato Apple a Cupertino.",
"entities": [
{ "type": "PERSON", "text": "Steve Jobs", "confidence": 0.98 },
{ "type": "ORG", "text": "Apple", "confidence": 0.95 },
{ "type": "LOCATION", "text": "Cupertino", "confidence": 0.93 }
]
}
Lo schema JSON di convalida
Per garantire che l’IA rispetti questa struttura, è possibile definire uno schema JSON compatibile con la bozza 2020-12:
{
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"title": "Risposta dell'analisi testuale dell'IA",
"type": "object",
"properties": {
"model": { "type": "string" },
"input": { "type": "string" },
"entities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": { "type": "string", "enum": ["PERSON", "ORG", "LOCATION"] },
"text": { "type": "string" },
"confidence": { "type": "number", "minimum": 0, "maximum": 1 }
},
"required": ["type", "text", "confidence"]
}
}
},
"required": ["model", "input", "entities"]
}
Questo schema garantisce la struttura dei dati restituiti dall’IA. JSON Schema non convalida la rilevanza semantica delle risposte, ma impone un quadro rigoroso che consente alle applicazioni 4D di lavorare con dati affidabili e utilizzabili.
Il prompt di sistema: definire il comportamento dell’IA
Il prompt di sistema è essenziale. Definisce il ruolo dell’IA e impone una disciplina rigorosa sul formato di output.
Sei un motore di analisi testuale basato sull'IA. Il tuo compito è analizzare il testo fornito ed estrarre le entità denominate. Devi identificare: - persone (PERSON) - organizzazioni (ORG) - luoghi (LOCATION) Restituisci il risultato rigorosamente come oggetto JSON che segue lo schema JSON fornito. Non aggiungere campi extra. Non aggiungere spiegazioni o testo al di fuori del JSON. Se non viene trovata alcuna entità, restituisci un array vuoto per "entities".
Questo prompt:
- definisce chiaramente il compito,
- riafferma esplicitamente i vincoli,
- limita fortemente le deviazioni creative dal modello.
Implementazione con 4D AI Kit
Vediamo ora come implementare questo meccanismo sul lato 4D utilizzando il 4D AI Kit.
Configurazione della chat e dello schema
In questo esempio, lo schema JSON e il prompt di sistema sono memorizzati nelle risorse dell’applicazione e passati esplicitamente al modello durante la chiamata.
// Retrieve the system prompt
var $systemPrompt:=File("/RESOURCES/prompt.txt").getText()
// Retrieve the JSON Schema to validate the AI response
var $schema:=JSON Parse(File("/RESOURCES/schema.json").getText())
// Define chat parameters
var $params:=cs.AIKit.OpenAIChatCompletionsParameters.new()
$params.model:="gpt-text-analyzer-v2"
$params.response_format:={\
type: "json_schema"; \
json_schema: {name: "analyse_schema"; schema: $schema}}
// Create AI chat helper
var $ai:=cs.AIKit.OpenAI.new($openAIKey)
var $chatHelper:=$ai.chat.create($systemPrompt; $params)
Con questa configurazione, l’IA sa esattamente quale formato deve produrre, il che riduce significativamente gli errori.
Chiamata dell’IA
Una volta configurati lo schema e il formato di risposta, non resta che chiamare l’IA e fornire il testo da analizzare.
// Send the user prompt to the AI
var $userPrompt:="Steve Jobs founded Apple in Cupertino."
var $result:=$chatHelper.prompt($userPrompt)
// Convert AI response to object
var $response:=JSON Parse($result.choice.message.text)
Convalida della risposta dell’IA e gestione degli errori
Anche quando viene fornito uno schema, è essenziale convalidare la risposta sul lato 4D prima di utilizzarla. L’IA può produrre una risposta non valida a causa di troncamenti, errori di generazione o contesti ambigui.
// Validate the JSON against the schema
var $validation:=JSON Validate($response; $schema)
// Handle validation errors
If (Not($validation.success))
// If the JSON is invalid, build an error prompt to send back to the AI
var $errorPrompt:=\
"The JSON you returned does not match the expected schema. "+\
"Here are the validation errors:\n"+\
JSON Stringify($validation.errors)+\
"\nPlease return a corrected JSON that strictly follows the schema."
// Resend the prompt (or send error prompt) to let AI correct its output
$result:=$chatHelper.prompt($userPrompt)
Else
// If the JSON is valid, continue with your processing
// e.g., save to database, display in form, or trigger further actions
End if
Questo meccanismo rende possibile implementare un ciclo AI → 4D → AI:
- L’IA genera una risposta JSON.
- 4D convalida il JSON rispetto allo schema.
- Se viene rilevato un errore, 4D rimanda le informazioni mancanti o errate all’IA.
- L’IA corregge la risposta e restituisce un JSON valido.
Questo ciclo di feedback automatico garantisce che i dati rimangano affidabili, anche quando l’IA commette degli errori.
Vantaggi concreti
- JSON generato dall’IA affidabile e coerente
- Correzione automatica degli errori tramite il ciclo di convalida
- Sicurezza e controllo su tutte le tue API → pipeline di IA
- Dati sempre utilizzabili per i tuoi moduli, l’elaborazione o l’analisi
Conclusione
L’integrazione di JSON Schema con 4D AI Kit trasforma il modo in cui si utilizza l’IA. Si passa da un flusso di lavoro basato su un’«IA imprevedibile» a un processo prevedibile, controllato, solido e automatizzato.
Combinando Structured Outputs, JSON Schema e la convalida sul lato 4D, potrete sfruttare appieno la potenza dell’IA garantendo al contempo dati affidabili, sicuri e pronti per la produzione.
Questo approccio va ben oltre la semplice analisi del testo. Lo stesso modello può essere applicato a qualsiasi scenario in cui i dati generati dall’IA debbano essere integrati in modo sicuro in un’applicazione 4D.
Lo schema JSON non rende l’IA “intelligente”, ma la rende prevedibile.
Al momento non è possibile lasciare commenti su questo post.