Prompt di estrazione in JSON con schema, validazione e nuovi tentativi

Crea una pipeline affidabile per estrarre testo libero in JSON con un LLM: JSON Schema, prompt con regole sui null, esempi, codice di validazione con nuovi tentativi e casi di test. Pensato per ChatGPT, Claude e Gemini. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.

Avanzato · Codice · In attesa di revisione editoriale

Prompt

Agisci come ingegnere LLM specializzato nell'estrazione di dati strutturati per sistemi in produzione.

Contesto:
- Tipo di documento in ingresso: {{documento}}
- Campi da estrarre (nome, tipo, obbligatorio o no): {{campi}}
- Linguaggio e libreria di validazione: {{linguaggio}}
- Esempio reale di input (anonimizzato):
```
{{esempio}}
```

Consegne:
1. JSON Schema completo con tipi, formati (date ISO 8601, importi come numero con valuta in un campo separato), enumerazioni e campi obbligatori.
2. Prompt di sistema per l'estrazione con regole esplicite: restituire solo JSON valido, usare null quando un dato non compare (mai dedurlo), non normalizzare i nomi propri, come gestire più valori candidati e testo ambiguo.
3. Due esempi di input e output (few-shot), uno dei quali con campi assenti.
4. Codice in {{linguaggio}} che chiami il modello, attivi l'output strutturato o la modalità JSON se il fornitore la offre, validi rispetto allo schema e ritenti al massimo due volte inviando l'errore di validazione.
5. Un campo opzionale di confidenza o di evidenza (citazione letterale dal testo) per ogni valore e quando conviene usarlo.
6. Dieci casi di test: documenti incompleti, formati di data diversi, lingue miste, valori contraddittori e istruzioni malevole nel testo.
7. Come misurare la qualità: accuratezza per campo rispetto a un set etichettato a mano.

Vincoli:
- Non inventare parametri di API: se un'opzione dipende dal fornitore, segnalala come [DA VERIFICARE nella documentazione ufficiale].
- Il modello non deve mai compilare un campo senza evidenza nel testo.
- Se i campi sono ambigui o manca l'esempio, chiedimelo prima.

Formato: sezioni numerate con blocchi di codice JSON e {{linguaggio}}.

Come usarlo

Incolla un documento reale anonimizzato e definisci bene ogni campo. Prima di elaborare in batch, esegui i casi di test e confronta i risultati con 20-50 documenti etichettati a mano.

Esempio d'uso

Documento: fatture dei fornitori da PDF convertite in testo · Campi: numero, data, partita IVA dell’emittente, imponibile, IVA, totale · Linguaggio: Python con Pydantic.

Esempio di risultato

4. Codice con validazione e nuovi tentativi

from enum import Enum
from pydantic import BaseModel, Field, ValidationError

class TipoLavoro(str, Enum):  # valori definitivi: [DA COMPLETARE]
    bagno = "bagno"
    cucina = "cucina"
    completa = "completa"
    altro = "altro"

class Richiesta(BaseModel):
    nome: str
    telefono: str | None = None
    citta: str | None = None
    tipo_lavoro: TipoLavoro | None = None
    budget_max_eur: float | None = Field(default=None, ge=0)

def estrai(testo: str, max_tentativi: int = 2) -> Richiesta:
    messaggi = [{"role": "user", "content": testo}]
    for _ in range(max_tentativi + 1):
        # Modalità JSON / output strutturato secondo il fornitore: [VERIFICARE nella documentazione ufficiale]
        grezzo = chiama_modello(SYSTEM_PROMPT, messaggi)
        try:
            return Richiesta.model_validate_json(grezzo)
        except ValidationError as errore:
            messaggi += [
                {"role": "assistant", "content": grezzo},
                {"role": "user", "content": f"JSON non valido: {errore}. Restituisci solo il JSON corretto."},
            ]
    raise ValueError("Il modello non ha restituito un JSON valido")

Output atteso per il tuo esempio:

{"nome": "Giulia", "telefono": "333 0000000", "citta": "Bologna",
 "tipo_lavoro": "bagno", "budget_max_eur": 7000}

«Circa 7.000» è una stima: con il campo facoltativo di evidenza salveremmo la citazione letterale, così una persona decide se considerarla un massimo…

Dati chiave

Categoria
Programmazione e sviluppo · Agenti IA
Tipo di output
Codice
Livello
Avanzato
Pensato per
ChatGPT, Claude e Gemini
Verificato in
In attesa di verifica editoriale
Variabili
Tipo di documento, Campi da estrarre, Linguaggio e validazione e Esempio di input
Lingua
Italiano
Prezzo
Gratuito, senza registrazione
Aggiornato
07/11/2026

Domande frequenti

Perché chiedere null invece di far dedurre il dato al modello?

Perché un valore inventato ma plausibile è più pericoloso di un campo vuoto. Con null puoi individuare i documenti incompleti e mandarli a revisione umana.

Basta la modalità JSON del fornitore?

Garantisce un JSON ben formato, non che i valori siano corretti o rispettino le tue regole di business. Mantieni la validazione con lo schema e i casi di test.

A cosa serve questo prompt?

Crea una pipeline affidabile per estrarre testo libero in JSON con un LLM: JSON Schema, prompt con regole sui null, esempi, codice di validazione con nuovi tentativi e casi di test.

Con quali strumenti di IA funziona?

È pensato per ChatGPT, Claude e Gemini. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.

Come personalizzo il prompt?

Clicca su «Personalizza» e compila le variabili (Tipo di documento, Campi da estrarre, Linguaggio e validazione e Esempio di input). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.

Serve esperienza per usarlo?

È di livello avanzato: è pensato per persone con esperienza nell'argomento, in grado di valutare e regolare il risultato.

Questo prompt è gratuito?

Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.

Posso fidarmi dell'output dell'IA?

Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.

Prompt correlati