Перевірка введення у FastAPI

Розгортання AI у продакшні з FastAPI

Matt Eckerle

Software and Data Engineering Leader

Перевірка вхідних даних

Блок-схема прогнозу ML з FastAPI

Розгортання AI у продакшні з FastAPI

Навіщо перевіряти введення?

 

  • Перевірка цілісності даних
  • Запобігання помилкам в застосунку
  • Інтеграція з Pydantic
  • Потужні інструменти для валідації даних

 

Логотип Pydantic

Розгортання AI у продакшні з FastAPI

Pydantic для заздалегідь визначених функцій

Перевірка полів за допомогою pydantic

Розгортання AI у продакшні з FastAPI

Кастомна перевірка з pydantic

Користувацька перевірка за допомогою pydantic

Розгортання AI у продакшні з FastAPI

Акуратне повідомлення про помилки

Звіт про помилки під час перевірки

Розгортання AI у продакшні з FastAPI

Валідатори полів у Pydantic

  • Кінцева точка реєстрації користувача

  • Перевірка імені користувача, яке вводять користувачі:

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Розгортання AI у продакшні з FastAPI

Додавання власних валідаторів

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
Розгортання AI у продакшні з FastAPI

Кастомні валідатори в дії

Коректний запит:

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

Некоректний запит:

{"username": "too_young", "age": 10}
Validation error for {'username': 'too_young', 'age': 10}: User must be at least 13
Розгортання AI у продакшні з FastAPI

Об'єднаймо все разом

Звіт про помилки під час перевірки

  • Валідатор поля для username
  • Кастомний валідатор для age
  • Повідомлення про помилку при провалі перевірки
Розгортання AI у продакшні з FastAPI

Об'єднаймо все разом

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

Вивід:

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Розгортання AI у продакшні з FastAPI

Давайте потренуємось!

Розгортання AI у продакшні з FastAPI

Preparing Video For Download...