Что это
Pydantic - библиотека для проверки данных в Python. Вы описываете ожидаемые поля и ограничения, а она либо создает подходящий объект, либо сообщает, где входные данные не прошли проверку. Это удобно для заявок, ответов API и результатов извлечения информации моделью.
Проверка структуры не равна проверке фактов. Правильно оформленная сумма может быть выдумана, а существующий идентификатор - принадлежать другому клиенту. Сверка с источником, права доступа и разрешение на действие остаются отдельными этапами.
Эта карточка о Pydantic Validation. Pydantic AI и Logfire - другие продукты. Библиотека сама не вызывает нейросеть и не заставляет ее отвечать по схеме: она проверяет уже полученные данные.
Ключевые параметры
- Категория: Инструменты разработчика
- Сложность: Для разработчика
- Запуск: Около 30 минут
- Open-source: Да
- Данные: Высокий контроль
- Чувствительные данные: Только с настройками
Сильные стороны
- Схема строится из аннотаций Python и остается рядом с кодом обработки.
- Ошибки указывают поле и причину отказа, что помогает исправлять входные данные.
- Из модели можно получить JSON Schema и сериализовать проверенные значения.
- Пользовательские валидаторы позволяют добавить проверки, специфичные для задачи.
Ограничения
- Без strict-режима некоторые значения приводятся к нужному типу; это следует учитывать явно.
- Лишние поля по умолчанию игнорируются, а не отклоняются; для отказа нужен extra="forbid".
- Схема не подтверждает фактическую правильность, полномочия пользователя или безопасность действия.
- Примеры Pydantic v1 и v2 различаются; перенос старого кода требует проверки методов и поведения.
Как использовать
1. Подготовка. Создайте отдельное окружение Python и установите Pydantic v2 командой python -m pip install "pydantic>=2,<3". Возьмите учебную заявку с order_id и quantity, без персональных данных.
2. Настройка. Создайте класс Order(BaseModel) с order_id: str и quantity: PositiveInt. Импортируйте BaseModel, ConfigDict и PositiveInt из pydantic. Внутри класса задайте model_config = ConfigDict(strict=True, extra="forbid").
3. Первый результат. Выполните Order.model_validate({"order_id":"demo-1","quantity":2}).model_dump(). Получите словарь с двумя проверенными полями; это результат валидации, а не обращение к модели или базе заказов.
4. Проверка. По отдельности передайте quantity=0, quantity="2", отсутствующий order_id и лишнее поле. Каждый такой вариант должен дать ValidationError при выбранной настройке. Обработайте отказ до записи в рабочую систему; факт существования заказа проверяйте отдельно.
Примеры сценариев
- Не допустить пустого обязательного поля в заявке.
- Отклонить строку вместо числа в строгом контракте.
- Сравнить схему данных интеграции с ожидаемыми полями.
Доступ и оплата
- Модель оплаты: Open-source
- Бесплатный тариф: Да
- Работа в РФ: Да
- VPN: Не нужен
- Русский интерфейс: Не известно
- Русский язык: Не известно
Библиотека бесплатна по MIT и может работать локально без VPN после установки. Это не обещание доступности внешних API или сервисов экосистемы. Под API здесь понимается программный интерфейс Python, а не готовый HTTP-сервис.
Когда не подходит
- Проверять достоверность ответа только по типам
- Заменять авторизацию валидацией
- Создать AI-агента без отдельной логики
Альтернативы
Zod решает похожую задачу в TypeScript. Instructor связывает извлечение данных моделью с проверкой схемы. Guardrails AI добавляет специализированные проверки LLM-сценариев. Они не являются взаимозаменяемыми пакетами.