Что такое Pydantic AI и зачем он нужен
Один урок — одна мысль: Pydantic AI превращает «болтовню с нейросетью» в надёжную деталь приложения.
Проблема, которую он решает
Когда ты вызываешь LLM напрямую через API, модель отвечает текстом в свободной форме. Для чата это нормально. Но в приложении — например, в твоих умных формах — тебе нужен не текст, а предсказуемый результат: заявка с полями «имя, телефон, запрос», решение «квалифицирован лид или нет», список действий.
И тут начинаются костыли: «ответь строго в JSON», парсинг ответа, обработка случаев, когда модель ответила не тем форматом, повторные запросы… Каждый проект изобретает этот велосипед заново.
Pydantic AI — это Python-фреймворк от команды Pydantic, который берёт всю эту грязную работу на себя. Ты описываешь, какой результат нужен, а фреймворк гарантирует, что получишь именно его — или честную ошибку.
Кто такие Pydantic и почему это важно
Pydantic — самая популярная библиотека валидации данных в Python. Она проверяет, что данные соответствуют описанной структуре: «здесь строка, здесь число от 1 до 30». На ней построен FastAPI, её используют внутри своих SDK OpenAI и Google. То есть Pydantic AI сделали не сторонние энтузиасты, а авторы инструмента, на котором уже стоит половина AI-индустрии — это их официальный агентский фреймворк.
Их формулировка: принести в разработку с ИИ «ощущение FastAPI» — строгость, автодополнение, минимум магии.
Как это выглядит
Минимальный агент — несколько строк:
from pydantic_ai import Agent
agent = Agent(
'anthropic:claude-sonnet-4-6',
instructions='Отвечай кратко, одним предложением.',
)
result = agent.run_sync('Откуда пошло выражение «hello world»?')
print(result.output)
Строка 'anthropic:claude-sonnet-4-6' — это выбор модели. Поменяй её на 'openai:gpt-5.2' — и весь остальной код не изменится.
А вот главная магия — структурированный вывод. Описываешь нужный результат как модель данных, и агент обязан его вернуть:
from pydantic import BaseModel
from pydantic_ai import Agent
class Lead(BaseModel):
name: str
phone: str
interest: str
qualified: bool
agent = Agent('openai:gpt-5.2', output_type=Lead)
result = agent.run_sync('Диалог с посетителем: ...')
# result.output — это гарантированно объект Lead, не «примерно JSON»
Ключевые возможности одним списком
- Model-agnostic — около 30 провайдеров: OpenAI, Anthropic, Google, DeepSeek, Groq, OpenRouter и любой OpenAI-совместимый API (твой MyRouter — тоже).
- Структурированный вывод — результат в виде проверенной структуры данных, с автоматическими повторными попытками при ошибке.
- Инструменты (tools) — агент может вызывать твои функции: искать в базе, дёргать API, считать.
- Мультиагентность — агенты вызывают друг друга или передают управление по очереди.
- MCP — подключение готовых MCP-серверов как источников инструментов.
- Наблюдаемость — через Pydantic Logfire видно каждый шаг агента: запросы, токены, задержки.
- Тестируемость — встроенная
TestModelпозволяет гонять логику без API-ключей и затрат.
Полный список — в официальном обзоре.
Когда использовать, а когда нет
| Pydantic AI оправдан | Избыточен |
|---|---|
| Нужен строгий формат ответа: заявки, отчёты, классификация, извлечение данных | Простой чат «вопрос — ответ текстом», один вызов API |
| Агент должен вызывать функции: базу, CRM, поиск | Разовый скрипт, где проще распарсить текст руками |
| Несколько шагов или несколько агентов в связке | Проект не на Python (Pydantic AI — только Python) |
| Продакшн: нужны повторы при сбоях, лимиты, логи, тесты | Прототип на 30 минут в чате с Claude |