·1 мин. чтения

PydanticAI: типизированные AI-агенты на Python с валидацией данных

PydanticAI от авторов Pydantic — строго типизированный фреймворк для AI-агентов. Обзор и настройка с PlusVibe API.

PydanticAI: типизированные AI-агенты на Python с валидацией данных

PydanticAI: AI-агенты с Pydantic-строгостью

PydanticAI — фреймворк от команды Pydantic (авторов самой популярной Python-библиотеки валидации данных, 100M+ скачиваний/месяц). Главная идея: применить строгость и предсказуемость Pydantic к AI-агентам — ошибки типов на этапе разработки, не в продакшне.

→ GitHub репозиторий PydanticAI

Почему разработчики выбирают PydanticAI

  • Типизированные ответы: агент всегда возвращает TypedDict или Pydantic-модель — никаких dict["key"] без проверки
  • Валидация инструментов: параметры инструментов автоматически валидируются через Pydantic
  • Dependency injection: зависимости типизированы и тестируемы через mock
  • Streamed structured output: стриминг результата с валидацией по ходу
  • Совместимость с mypy/pyright: полная поддержка статического анализа

Установка и быстрый старт с PlusVibe

pip install pydantic-ai
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIModel
from pydantic import BaseModel

class WeatherReport(BaseModel):
    city: str
    temperature: float
    description: str
    wind_speed_kmh: float

model = OpenAIModel(
    "gpt-5.5-turbo",
    base_url="https://plusvibeapi.ru/v1",
    api_key="sk-pv-ваш_ключ"
)

agent = Agent(model, result_type=WeatherReport)
result = agent.run_sync("Погода в Москве сейчас?")
print(result.data)  # WeatherReport(city='Москва', temperature=18.5, ...)
# IDE знает тип: result.data.temperature — float, не Any

Агент с инструментами и dependency injection

from pydantic_ai import Agent, RunContext
from dataclasses import dataclass

@dataclass
class DbConnection:
    host: str
    db_name: str

agent = Agent(model, deps_type=DbConnection)

@agent.tool
async def get_user(ctx: RunContext[DbConnection], user_id: int) -> dict:
    # ctx.deps — типизированный DbConnection
    return await fetch_from_db(ctx.deps, user_id)

result = await agent.run(
    "Найди пользователя 42",
    deps=DbConnection(host="localhost", db_name="users")
)

Тестирование без реальных API-вызовов

from pydantic_ai import models
from pydantic_ai.models.test import TestModel

with models.override(TestModel()):
    result = agent.run_sync("тест")  # мок, не тратит токены
    # TestModel возвращает предсказуемые данные для unit-тестов

PydanticAI vs LangChain vs CrewAI

КритерийPydanticAILangChainCrewAI
ТипизацияСтрогая (Pydantic)Слабая (Any)Слабая
ТестируемостьВысокаяСредняяСредняя
МультиагентностьБазоваяLangGraphОсновная фича
Размер библиотекиМаленькийОгромныйСредний
Для productionОтличноХорошоХорошо

PydanticAI + PlusVibe = строгие агенты из России

OpenAI-совместимый, рублёвые цены, без VPN.

Получить ключ →
PydanticAItyped AI agents PythonPydanticAI OpenAIAI агенты типизацияPydanticAI Россия

Попробуйте PlusVibe API

OpenAI-совместимый API: GPT, Claude, Gemini, видео и изображения — один рублёвый ключ. Работает из России без VPN, оплата рублями.

Читайте также