Indatavalidering i FastAPI

Driftsättning av AI i produktion med FastAPI

Matt Eckerle

Software and Data Engineering Leader

Validera indata

Flödesschema som visar ML-prediktion med FastAPI

Driftsättning av AI i produktion med FastAPI

Varför validera indata?

 

  • Validering för dataintegritet
  • Förhindrar fel i applikationen
  • Integreras med Pydantic
  • Erbjuder kraftfulla verktyg för datavalidering

 

En logotyp för Pydantic

Driftsättning av AI i produktion med FastAPI

Pydantic för fördefinierade funktioner

Fältvalidering med Pydantic

Driftsättning av AI i produktion med FastAPI

Anpassad validering med Pydantic

Anpassad validering med Pydantic

Driftsättning av AI i produktion med FastAPI

Tydlig felrapportering

Felrapportering vid validering

Driftsättning av AI i produktion med FastAPI

Pydantics fältvaliderare

  • Endpoint för användarregistrering

  • Validering av användarnamnet som anges:

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Driftsättning av AI i produktion med FastAPI

Lägga till anpassade validerare

class User(BaseModel):
    username: str = Field(..., 
                          min_length=3, 
                          max_length=50)
    age: int

@field_validator('age') def age_criteria(cls, age): if age < 13: raise ValueError('User must be at least 13') return age
Driftsättning av AI i produktion med FastAPI

Anpassade validerare i praktiken

Giltig förfrågan:

{"username": "john_doe", "age": 25}
Valid user: username='john_doe' age=25

Ogiltig förfrågan:

{"username": "too_young", "age": 10}
Validation error for {'username': 'too_young', 'age': 10}: User must be at least 13
Driftsättning av AI i produktion med FastAPI

Allt satt ihop

Felrapportering vid validering

  • Fältvaliderare för användarnamn
  • Anpassad validerare för ålder
  • Felmeddelande vid misslyckad validering
Driftsättning av AI i produktion med FastAPI

Allt satt ihop

@app.post("/users")
def create_user(user: User):
    return {"message": "User created",
            "user": user.model_dump()}

Utdata:

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Driftsättning av AI i produktion med FastAPI

Nu kör vi en övning!

Driftsättning av AI i produktion med FastAPI

Preparing Video For Download...