0Pricing
AI Agents · Lezione

Convalidare gli output degli strumenti (Pydantic)

Analizzi ogni output degli strumenti attraverso un modello Pydantic e segnali immediatamente le risposte non valide.

Convalidare gli output degli strumenti (Pydantic) è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 4 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 Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Fidarsi, ma verificare

I risultati degli strumenti provengono dal mondo esterno: API, pagine web, modelli. Una risposta malformata o imprevista può mandare in errore l'agente o, peggio, fornire silenziosamente dati errati all'LLM.

Convalidi ogni risultato degli strumenti rispetto a uno schema.

Modelli Pydantic

Definisca le strutture previste:

from pydantic import BaseModel, HttpUrl

class SearchResult(BaseModel):
    title: str
    url: HttpUrl
    snippet: str
    score: float = 0.0

Validate at the Boundary

from pydantic import ValidationError

def search(query):
    raw = requests.post('https://api.tavily.com/search', json={'query': query}).json()
    results = []
    for r in raw.get('results', []):
        try:
            results.append(SearchResult.model_validate(r))
        except ValidationError as e:
            log.warning('Bad search result skipped: %s', e)
    return results

Elenchi con convalida del modello

Convalidi l'intera risposta:

from pydantic import BaseModel
class SearchResponse(BaseModel):
    results: list[SearchResult]

response = SearchResponse.model_validate(raw)

Validatori dei campi

Controlli personalizzati all'interno dei campi:

from pydantic import field_validator

class SearchResult(BaseModel):
    score: float

    @field_validator('score')
    @classmethod
    def score_in_range(cls, v):
        if not 0 <= v <= 1:
            raise ValueError('score out of [0,1]')
        return v

Rigoroso o permissivo

Per impostazione predefinita, Pydantic converte i tipi (string -> int quando possibile). Per controlli rigorosi:

from pydantic import StrictInt

class User(BaseModel):
    age: StrictInt   # rejects '25' (string)

Default Values for Missing Fields

class Tool(BaseModel):
    name: str
    description: str = 'No description provided'   # fallback

Convalidare l'output strutturato dell'LLM

Costringa il modello a restituire JSON conforme a uno schema Pydantic: consulti la lezione Structured Outputs. Convalidi nuovamente al confine come ulteriore livello di difesa.

Convalidare gli argomenti degli strumenti

Convalidi tool_call.arguments del modello prima dell'esecuzione:

class SearchArgs(BaseModel):
    query: str
    k: int = 5

args = SearchArgs.model_validate_json(tool_call.function.arguments)
results = search(args.query, args.k)

Errori di convalida come risultati degli strumenti

Se la convalida non riesce, restituisca l'errore al modello, così potrà riprovare con argomenti corretti:

try:
    args = SearchArgs.model_validate_json(...)
except ValidationError as e:
    return {'error': f'Invalid arguments: {e}'}

Versionamento degli schemi

Quando cambia lo schema dell'output di uno strumento, ne crei una nuova versione:

class SearchResultV2(BaseModel):
    title: str
    url: HttpUrl
    relevance: float       # was 'score' in v1

Generare uno schema JSON da Pydantic

Per definire lo schema di uno strumento, lo ricavi dalla classe Pydantic:

schema = SearchArgs.model_json_schema()
# Use directly as the 'parameters' for an OpenAI tool definition.

Obiettivo della convalida

Perché utilizzare Pydantic per ogni output degli strumenti?

Riepilogo

Pydantic a ogni confine: argomenti degli strumenti in ingresso, output degli strumenti in uscita e output strutturati dell'LLM. Gli errori espliciti sono preferibili alla corruzione silenziosa.

Domande Frequenti

La lezione «Convalidare gli output degli strumenti (Pydantic)» è gratuita?

Sì — il testo completo di «Convalidare gli output degli strumenti (Pydantic)» è 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 Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Convalidare gli output degli strumenti (Pydantic)»?

Analizzi ogni output degli strumenti attraverso un modello Pydantic e segnali immediatamente le risposte non valide. Eserciti AI Agents 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 Agents?

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

Quanto tempo richiede la lezione «Convalidare gli output degli strumenti (Pydantic)»?

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 Agents?

Sì. Ogni lezione AI Agents 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. Strumenti idempotenti ed effetti collaterali
  2. Retry con exponential backoff
  3. Timeout e circuit breaker
  4. Convalidare gli output degli strumenti (Pydantic)
← Torna a AI Agents