0Pricing
Learn AI with Python · Lekcja

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: float

Uż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 v

Ograniczenia 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

  1. Podstawy FastAPI dla inżynierów ML
  2. Schematy Pydantic dla żądań i odpowiedzi
  3. Wczytywanie i udostępnianie modeli ML
  4. Konteneryzacja API modelu za pomocą Dockera
← Powrót do Learn AI with Python