AI Prompt Engineering · Lezione

Validatori di schemi e regole

Applicare i vincoli.

Lezione 3 di 413 passaggi

Validatori di schemi e regole è una lezione AI Prompt Engineering gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Prompt Engineering, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Prompt Engineering include 4 lezioni in totale.

I validatori fanno rispettare il contratto

Un validatore è una protezione che verifica l’output rispetto a una specifica esplicita: un JSON Schema, un insieme di regole di business o entrambi. A differenza di un classificatore di moderazione, un validatore è deterministico e completamente verificabile; lo stesso input produce sempre lo stesso esito.

Livello di validazione dello schema

Il primo validatore verifica che l’output rispetti il contratto strutturale. Raccolga tutti gli errori, non solo il primo, affinché il feedback per la correzione sia completo.

import jsonschema
def schema_errors(obj, schema):
    v = jsonschema.Draft202012Validator(schema)
    return [f"{list(e.path) or 'root'}: {e.message}"
            for e in v.iter_errors(obj)]

Oltre lo schema: regole di business

Gli schemi non possono esprimere ogni cosa. Uno schema può indicare che discount è un numero, ma non che non debba superare il subtotale. I validatori di regole codificano nel codice questi invarianti tra campi e di dominio.

RULES = [
  ('discount_le_subtotal', lambda o: o['discount'] <= o['subtotal']),
  ('total_consistent', lambda o: o['total'] == o['subtotal'] - o['discount']),
  ('currency_supported', lambda o: o['currency'] in SUPPORTED)
]
def rule_errors(o):
    return [name for name, fn in RULES if not fn(o)]

Modelli tipizzati come validatori

Una libreria di modelli tipizzati (ad esempio Pydantic) svolge sia il ruolo di generatore di schemi sia quello di validatore, con validatori personalizzati per le regole. Il fallimento del parsing è l’esito.

from pydantic import BaseModel, field_validator

class Order(BaseModel):
    subtotal: float
    discount: float
    total: float

    @field_validator('discount')
    @classmethod
    def discount_ok(cls, v, info):
        if v < 0:
            raise ValueError('discount must be non-negative')
        return v

Validatori di grounding e delle citazioni

Per gli output RAG, verifichi che le affermazioni siano supportate dal contesto fornito. Richieda al modello di citare gli ID delle fonti, quindi verifichi che ogni ID citato esista e che le porzioni riportate compaiano effettivamente nella fonte. Rifiuti le risposte che citano fonti mancanti o inventate.

def citations_valid(answer, sources):
    for cite in answer['citations']:
        if cite['source_id'] not in sources:
            return False
        if cite['quote'] not in sources[cite['source_id']]:
            return False
    return True

Controlli referenziali e tra sistemi

Alcune regole richiedono consultazioni esterne: l’ID dell’ordine indicato esiste? Il prodotto è disponibile? La data rientra in una finestra temporale valida? Questi validatori interrogano i vostri sistemi. Li mantenga veloci (con cache e richieste raggruppate), perché si trovano nel percorso della risposta.

def order_exists(o):
    return db.exists('SELECT 1 FROM orders WHERE id = %s', o['order_id'])

Esiti con livello di gravità

Non tutte le violazioni hanno la stessa gravità. Associ ogni regola a un livello di gravità, così la pipeline può scegliere l’azione appropriata: blocchi completamente le violazioni critiche, rigeneri l’output in caso di problemi di qualità e consenta il passaggio con un avviso per le violazioni minori.

RULE_SEVERITY = {
  'discount_le_subtotal': 'critical',
  'total_consistent': 'critical',
  'tone_professional': 'warning'
}

Comporre i validatori in ordine

Esegua i validatori a partire dai più economici e interrompa il processo al primo errore bloccante: schema, poi regole in memoria, quindi consultazioni esterne e infine eventuali verifiche affidate a un modello. In questo modo riduce i costi nel percorso di rifiuto più frequente.

def validate_all(obj):
    errs = schema_errors(obj, SCHEMA)
    if errs: return Reject(errs, 'critical')
    errs = rule_errors(obj)
    if errs: return Reject(errs, max_severity(errs))
    if not order_exists(obj): return Reject(['order_id'], 'critical')
    return Accept()

I validatori alimentano il feedback per la correzione

Il valore di un validatore si moltiplica quando i suoi messaggi alimentano il ciclo di correzione. Generi errori utilizzabili programmaticamente, indicando il percorso del campo, la regola non superata e il valore problematico, così il modello può correggere con precisione in un solo passaggio.

{'errors': [
  {'path': 'discount', 'rule': 'discount_le_subtotal',
   'got': 120, 'limit': 100}
]}

Testare i validatori

Un validatore difettoso può accettare silenziosamente un output errato o bloccare un output corretto. Testi ogni regola con fixture positive e negative e aggiunga test basati sulle proprietà per gli invarianti numerici. La suite dei validatori è codice critico per la produzione, non uno script.

def test_discount_rule():
    assert rule_errors({'discount':10,'subtotal':100,'total':90}) == []
    assert 'discount_le_subtotal' in rule_errors(
        {'discount':120,'subtotal':100,'total':-20})

Validatori e decodifica vincolata

La decodifica vincolata previene gli errori strutturali durante la generazione, ma non può imporre la semantica, perché non conosce le vostre regole di business. I validatori rilevano le violazioni semantiche dopo la generazione. Utilizzi entrambi: decodifica per la struttura, validatori per il significato e ciclo di correzione per riconciliare i risultati.

Verifica rapida

Un JSON Schema indica discount e subtotal come numeri. Il modello restituisce discount 120 con subtotal 100. Quale livello dovrebbe rilevare questo problema?

Riepilogo

Validatori di schema e di regole:

  • La validazione dello schema copre la struttura; i validatori di regole coprono la semantica.
  • I modelli tipizzati generano gli schemi e validano in un unico punto.
  • Aggiunga controlli di grounding, citazione e riferimento per RAG e flussi di dati.
  • Assegni un livello di gravità, componga i controlli a partire dai più economici e fornisca errori precisi per la correzione.
  • Testi i validatori come codice critico per la produzione.

Prossimo argomento: la validazione tramite autocritica, in cui il modello verifica il proprio output.

Gratis per iniziare

Impara AI Prompt Engineering con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
53
Lezioni
199

Domande Frequenti

La lezione «Validatori di schemi e regole» è gratuita?

Sì — il testo completo di «Validatori di schemi e regole» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Prompt Engineering, passa a CoddyKit PRO. Il corso AI Prompt Engineering include 4 lezioni in totale.

Cosa imparerò in «Validatori di schemi e regole»?

Applicare i vincoli. Eserciti AI Prompt Engineering con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Prompt Engineering?

Non è richiesta alcuna esperienza precedente. AI Prompt Engineering su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Validatori di schemi e regole»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Prompt Engineering?

Sì. Ogni lezione AI Prompt Engineering include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Cosa sono le guardrail
  2. Filtraggio dell'input e dell'output
  3. Validatori di schemi e regole
  4. Validazione tramite autocritica
← Torna a AI Prompt Engineering