MLOps Path

0.1.4 · блок 0

FastAPI и Pydantic

FastAPI и Pydantic

Зачем это нужно

Модель принимает массивы и числа, а клиент отправляет HTTP и JSON. FastAPI и Pydantic создают явный, проверяемый контракт между ними: сервис либо получает корректные данные, либо возвращает понятную ошибку до вызова модели.

Основные идеи

FastAPI связывает URL и Python-функции, формирует OpenAPI-описание и документацию. Это удобный тонкий слой для inference API.

Pydantic-модели описывают вход и выход. Они валидируют типы, обязательные поля и ограничения, а также становятся частью документации API.

Контракт inference включает:

Не позволяйте клиенту передавать «произвольный словарь» прямо в model.predict: schema должна отсеять неверные данные и предотвратить train/serve skew.

Как это выглядит на практике


from fastapi import FastAPI
from pydantic import BaseModel, Field

app = FastAPI()

class PredictRequest(BaseModel):
    age: int = Field(ge=18, le=120)
    income: float = Field(ge=0)

class PredictResponse(BaseModel):
    probability: float = Field(ge=0, le=1)
    model_version: str

@app.post("/predict", response_model=PredictResponse)
def predict(request: PredictRequest) -> PredictResponse:
    return PredictResponse(probability=0.42, model_version="baseline-1")

Запрос с отрицательным доходом вернёт 422, а не попадёт в модель. Документация будет доступна в /docs.

Что сделать после занятия

Официальные материалы

Открыть интерактивную версию