Схемы Pydantic для запросов и ответов
BaseModel, проверка полей, аннотации типов, response_model, обработка ошибок проверки
«Схемы Pydantic для запросов и ответов» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Зачем нужны схемы?
Необработанные словари часто приводят к ошибкам. Модели Пайдантик задают точную структуру запросов и ответов, автоматически проверяют типы и документируют Ваш API. FastAPI поддерживает их напрямую.
Модель BaseModel
Схемы Pydantic наследуются от BaseModel. Каждый типизированный атрибут становится проверяемым полем; значения неправильных типов отклоняются до запуска Вашего кода.
from pydantic import BaseModel
class PredictRequest(BaseModel):
features: list[float]Схема запроса
Определите, что должны отправлять клиенты. Здесь features должен быть списком чисел с плавающей точкой; также можно добавить такие поля, как версия модели или идентификатор запроса.
class PredictRequest(BaseModel):
features: list[float]
model_version: str = "latest"Схема ответа
Определите, что возвращает Ваш API, чтобы клиенты получали стабильный документированный контракт.
class PredictResponse(BaseModel):
prediction: float
probability: floatИспользование схемы в конечной точке
Укажите в типе параметра свою модель запроса, и FastAPI автоматически разберёт и проверит тело JSON-запроса, преобразовав его в типизированный объект.
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}Параметр модели ответа
Передайте модель ответа декоратору маршрута. FastAPI проверяет результат и отбирает поля в соответствии со схемой, удаляя лишние поля и документируя ответ в /docs.
@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
return PredictResponse(prediction=1.0, probability=0.92)Список чисел с плавающей точкой для векторов признаков
Типизация признаков как list[float] означает, что Pydantic отклонит строки и смешанные типы до вывода модели, обнаружив некорректные входные данные на границе, а не глубоко внутри кода модели.
Исключение HTTP для ошибок
Если проверка типов пройдена, но нарушены бизнес-правила (неверное количество признаков или неизвестная модель), вызовите исключение HTTP с кодом состояния и сообщением.
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]}Проверяющие функции полей
field_validator применяет пользовательские правила к полю, например отклоняет пустые списки признаков ещё до запуска логики конечной точки.
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Ограничения полей
Используйте Field для декларативных ограничений, таких как минимальная длина или числовые диапазоны; они также отображаются в автоматически созданной документации.
from pydantic import BaseModel, Field
class PredictRequest(BaseModel):
features: list[float] = Field(min_length=1)Автоматические ответы 422
Если запрос не проходит проверку Pydantic, FastAPI автоматически возвращает ответ 422 Unprocessable Entity с подробным телом ошибки — дополнительный код не требуется. Это одно из главных преимуществ FastAPI для повышения продуктивности.
Быстрая проверка
Проверьте свои знания схем Pydantic.
Повторение
Вы определили схемы BaseModel для запросов и ответов, использовали list[float] для признаков, применили модель ответа, вызвали исключение HTTP для бизнес-ошибок и добавили проверяющие функции полей. FastAPI автоматически возвращает 422 для некорректных входных данных. Далее: загрузка и обслуживание модели.
Часто задаваемые вопросы
Урок «Схемы Pydantic для запросов и ответов» бесплатный?
Да — полный текст урока «Схемы Pydantic для запросов и ответов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Схемы Pydantic для запросов и ответов»?
BaseModel, проверка полей, аннотации типов, response_model, обработка ошибок проверки Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Схемы Pydantic для запросов и ответов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы FastAPI для инженеров машинного обучения
- Схемы Pydantic для запросов и ответов
- Загрузка и предоставление моделей машинного обучения
- Контейнеризация API модели с Docker