Schematy Pydantic dla żądań i odpowiedzi
BaseModel, walidacja pól, adnotacje typów, response_model, obsługa błędów walidacji.
Schematy Pydantic dla żądań i odpowiedzi to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Po co schematy?
Surowe słowniki są podatne na błędy. Modele Pydantic definiują dokładny kształt żądań i odpowiedzi, automatycznie weryfikują typy oraz dokumentują API. FastAPI obsługuje je natywnie.
BaseModel
Schematy Pydantic dziedziczą po BaseModel. Każdy typowany atrybut staje się weryfikowanym polem; nieprawidłowe typy są odrzucane, zanim zostanie wykonany Państwa kod.
from pydantic import BaseModel
class PredictRequest(BaseModel):
features: list[float]Schemat żądania
Proszę zdefiniować dane, które klient musi wysłać. W tym przypadku features musi być listą liczb zmiennoprzecinkowych; można też dodać pola takie jak wersja modelu lub identyfikator żądania.
class PredictRequest(BaseModel):
features: list[float]
model_version: str = "latest"Schemat odpowiedzi
Proszę zdefiniować dane zwracane przez API, aby klienci otrzymywali stabilny i udokumentowany kontrakt.
class PredictResponse(BaseModel):
prediction: float
probability: floatUżywanie schematów w endpoincie
Proszę określić typ parametru za pomocą modelu żądania, a FastAPI automatycznie przeanalizuje i zweryfikuje treść JSON, zamieniając ją na obiekt o określonym typie.
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}Parametr response_model
Proszę przekazać response_model do dekoratora trasy. FastAPI weryfikuje dane wyjściowe i filtruje je tak, aby odpowiadały schematowi, usuwając dodatkowe pola oraz dokumentując odpowiedź w /docs.
@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
return PredictResponse(prediction=1.0, probability=0.92)list[float] dla wektorów cech
Określenie typu cech jako list[float] sprawia, że Pydantic odrzuca ciągi znaków i wartości mieszanych przed rozpoczęciem inferencji, wykrywając nieprawidłowe dane wejściowe na granicy systemu, a nie głęboko w kodzie modelu.
HTTPException dla błędów
Gdy typy przejdą weryfikację, ale reguły biznesowe zawiodą (nieprawidłowa liczba cech lub nieznany model), należy zgłosić HTTPException z kodem statusu i komunikatem.
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]}Walidatory pól
field_validator wymusza niestandardowe reguły dotyczące pola, na przykład odrzuca puste listy cech, zanim w ogóle zostanie uruchomiona logika endpointu.
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 vOgraniczenia pól
Proszę używać Field do deklaratywnego określania ograniczeń, takich jak minimalna długość lub zakresy liczbowe. Ograniczenia te pojawią się również w automatycznie generowanej dokumentacji.
from pydantic import BaseModel, Field
class PredictRequest(BaseModel):
features: list[float] = Field(min_length=1)Automatyczne odpowiedzi 422
Gdy żądanie nie przejdzie walidacji Pydantic, FastAPI automatycznie zwraca 422 Unprocessable Entity ze szczegółową treścią błędu — bez potrzeby pisania dodatkowego kodu. To jedna z największych zalet FastAPI pod względem produktywności.
Szybki sprawdzian
Sprawdź swoją wiedzę na temat schematów Pydantic.
Podsumowanie
Zdefiniowano schematy BaseModel dla żądań i odpowiedzi, użyto list[float] dla cech, zastosowano response_model, zgłaszano HTTPException w przypadku błędów biznesowych i dodano walidatory pól. FastAPI automatycznie zwraca kod 422 dla nieprawidłowych danych wejściowych. Następny temat: wczytywanie i udostępnianie modelu.
Często zadawane pytania
Czy lekcja „Schematy Pydantic dla żądań i odpowiedzi” jest bezpłatna?
Tak — pełny tekst „Schematy Pydantic dla żądań i odpowiedzi” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Schematy Pydantic dla żądań i odpowiedzi”?
BaseModel, walidacja pól, adnotacje typów, response_model, obsługa błędów walidacji. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Schematy Pydantic dla żądań i odpowiedzi”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy FastAPI dla inżynierów ML
- Schematy Pydantic dla żądań i odpowiedzi
- Wczytywanie i udostępnianie modeli ML
- Konteneryzacja API modelu za pomocą Dockera