00 · Foundation и диагностика0.1 · Вход и инженерный фундамент0.1.4средний

FastAPI и Pydantic

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

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

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

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

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

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

  • имя и версию модели;

  • схему признаков и допустимые диапазоны;

  • формат prediction и его смысл;

  • ошибки и их status code.

Не позволяйте клиенту передавать «произвольный словарь» прямо в 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.

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

  • Опишите PredictRequest и PredictResponse для учебной модели.

  • Добавьте ограничения хотя бы для двух признаков.

  • Проверьте схему и примеры запросов в /docs.

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