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.0Validate 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 resultsElenchi 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 vRigoroso 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' # fallbackConvalidare 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 v1Generare 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
- Strumenti idempotenti ed effetti collaterali
- Retry con exponential backoff
- Timeout e circuit breaker
- Convalidare gli output degli strumenti (Pydantic)