Schemi Pydantic per richieste e risposte
BaseModel, validazione dei campi, type hint, response_model, gestione degli errori di validazione
Schemi Pydantic per richieste e risposte è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 2 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 Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Perché usare gli schemi?
I dizionari grezzi sono soggetti a errori. I modelli Pydantic definiscono la forma esatta delle richieste e delle risposte, convalidano automaticamente i tipi e documentano l'API. FastAPI li supporta nativamente.
BaseModel
Gli schemi Pydantic estendono BaseModel. Ogni attributo tipizzato diventa un campo convalidato; i tipi errati vengono rifiutati prima dell'esecuzione del codice.
from pydantic import BaseModel
class PredictRequest(BaseModel):
features: list[float]Uno schema per le richieste
Definisca ciò che i client devono inviare. In questo caso features deve essere un elenco di numeri decimali; è possibile aggiungere altri campi, ad esempio la versione del modello o un ID della richiesta.
class PredictRequest(BaseModel):
features: list[float]
model_version: str = "latest"Uno schema per le risposte
Definisca ciò che l'API restituisce, così i client ricevono un contratto stabile e documentato.
class PredictResponse(BaseModel):
prediction: float
probability: floatUso degli schemi in un endpoint
Tipizzi il parametro con il modello della richiesta: FastAPI analizza e convalida automaticamente il corpo JSON trasformandolo in un oggetto tipizzato.
from fastapi import FastAPI
app = FastAPI()
@app.post("/predict")
def predict(req: PredictRequest):
pred = model.predict([req.features])[0]
return {"prediction": pred, "probability": 0.92}Il parametro response_model
Passi response_model al decoratore della route. FastAPI convalida e filtra l'output affinché corrisponda allo schema, rimuove i campi aggiuntivi e documenta la risposta in /docs.
@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
return PredictResponse(prediction=1.0, probability=0.92)list[float] per i vettori delle feature
Tipizzare le feature come list[float] fa sì che Pydantic rifiuti stringhe o tipi misti prima dell'inferenza, rilevando gli input malformati al confine invece che nel profondo del codice del modello.
HTTPException per gli errori
Quando la convalida dei tipi ha esito positivo ma le regole di business non vengono rispettate (numero errato di feature, modello sconosciuto), sollevi HTTPException con un codice di stato e un messaggio.
from fastapi import HTTPException
@app.post("/predict")
def predict(req: PredictRequest):
if len(req.features) != 4:
raise HTTPException(status_code=422,
detail="Expected exactly 4 features")
return {"prediction": model.predict([req.features])[0]}Validatori dei campi
Un field_validator applica regole personalizzate a un campo, ad esempio rifiutando elenchi di feature vuoti, prima ancora che venga eseguita la logica dell'endpoint.
from pydantic import BaseModel, field_validator
class PredictRequest(BaseModel):
features: list[float]
@field_validator("features")
@classmethod
def not_empty(cls, v):
if not v:
raise ValueError("features cannot be empty")
return vVincoli dei campi
Utilizzi Field per vincoli dichiarativi come la lunghezza minima o gli intervalli numerici, che compaiono anche nella documentazione generata automaticamente.
from pydantic import BaseModel, Field
class PredictRequest(BaseModel):
features: list[float] = Field(min_length=1)Risposte 422 automatiche
Quando una richiesta non supera la convalida Pydantic, FastAPI restituisce automaticamente 422 Unprocessable Entity con un corpo dell'errore dettagliato, senza bisogno di codice aggiuntivo. Questo è uno dei principali vantaggi di produttività di FastAPI.
Verifica rapida
Verifichi le Sue conoscenze sugli schemi Pydantic.
Riepilogo
Ha definito gli schemi BaseModel per richieste e risposte, usato list[float] per le feature, applicato response_model, sollevato HTTPException per gli errori di business e aggiunto validatori dei campi. FastAPI restituisce automaticamente 422 per gli input non validi. Prossimo argomento: caricamento e distribuzione del modello.
Domande Frequenti
La lezione «Schemi Pydantic per richieste e risposte» è gratuita?
Sì — il testo completo di «Schemi Pydantic per richieste e risposte» è 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 Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Schemi Pydantic per richieste e risposte»?
BaseModel, validazione dei campi, type hint, response_model, gestione degli errori di validazione Eserciti Learn AI with Python 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 Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Schemi Pydantic per richieste e risposte»?
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 Learn AI with Python?
Sì. Ogni lezione Learn AI with Python 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
- Fondamenti di FastAPI per ML engineer
- Schemi Pydantic per richieste e risposte
- Caricamento e serving dei modelli ML
- Containerizzazione dell'API del modello