
Pydantic AI review
Typed Python agent framework from the Pydantic team, with validated outputs and any model
Verdict
Pydantic AI is the cleanest choice for Python developers who want agents that behave like ordinary typed code, with validated outputs, dependency injection and tests. It works with nearly every model provider, and durable runs come through Temporal, DBOS, Prefect or Restate rather than a store of its own.
Best for
Python teams that want typed, testable agents and structured outputs they can trust
Not for
Teams that want a visual builder or a ready-made multi-agent team abstraction
Pros
- Outputs are validated against Pydantic models
- Works with nearly every model provider and local servers
- First-party durable execution with Temporal, DBOS, Prefect and Restate
- OpenTelemetry tracing that works with any backend
Cons
- Multi-agent setups are built by hand from delegation, handoffs or graphs
- Only a simple web chat UI, no visual builder or debugger
- Ships often, so pin versions and read the changelog when you upgrade
Is Pydantic AI right for your project?
Describe what you need and AI will check the fit against this review.
Pydantic AI features and capabilities
Typed, validated outputs
You give the agent a Pydantic model as its output type and every run comes back validated, so the rest of your code can rely on the shape of the data.
Any model by name
Switching between OpenAI, Anthropic, Gemini, Bedrock, Ollama and others is a change to one string, with fallbacks between models.
Approvals with deferred tools
Tools can require approval, and the run stops and resumes with the person's decision, or hands the call to a frontend or a background worker.
Durable execution
Under Temporal, DBOS, Prefect or Restate, model calls and tool calls are checkpointed, so an agent survives crashes and restarts.
Capabilities and MCP
Tools, instructions and hooks are bundled as reusable capabilities, and MCP servers plug in the same way.
- Any model providerWorks with OpenAI, Anthropic, Google and local models, not one vendor
- Yes
- Multi-agentSeveral agents can hand off or work together
- YesDelegation through tools, handoffs or graphs
- MCP toolsCan use tools from MCP servers
- Yes
- Durable stateSaves progress so a run can resume after a crash or a pause
- YesVia Temporal, DBOS, Prefect or Restate
- Human approvalCan pause for a person to approve or edit before continuing
- Yes
- TracingShows each step, tool call and token use
- YesOpenTelemetry; Logfire is optional and hosted
- Visual studioA UI to build, run or debug agents
- PartlyA web chat UI for trying agents, no builder
At a glance
- Type
- Agent framework
- Stack
- Python 3.11+
- SSO
- No
- Roles and permissions
- No
- Audit logs
- No
Free vs paid editions
What you get when you self-host, and what needs a paid plan.
Pydantic AI, Pydantic Evals, Pydantic Graph and the Harness add-ons are free and open source. The company sells Logfire, a hosted tracing service with a free personal plan and a Team plan from $49 a month, and an AI gateway. The framework's tracing is plain OpenTelemetry, so any backend works.
Self-hosting Pydantic AI
Pydantic AI needs Python 3.11 or later. Durable execution needs one of the supported engines, such as Temporal or DBOS with SQLite or Postgres.
New cloud server to ready
54 s
Research task, median of 3
37.7 s, 132 MB peak
Version tested
2.57.0 · Oct 18, 2026
- The slim package with OpenAI support installed in 16 seconds, the fastest of the seven, and the agent itself is the shortest: a model, a prompt and two plain functions as tools.
- The first runs failed with a 402 from OpenRouter, because Pydantic AI asked for up to 65,536 output tokens and the account couldn't cover that. Setting max_tokens to 1,024 fixed it, and I used the same cap for every framework.
- All three runs then passed, taking 24 to 44 seconds and $0.001 to $0.005 each, the slowest median of the seven.
# tools.py holds the shared web_search and read_page functions over Geekflare's APIs,
# common.py the model name, OpenRouter key, system prompt and task.
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openrouter import OpenRouterProvider
import tools
from common import KEY, MODEL, SYSTEM
model = OpenAIChatModel(MODEL, provider=OpenRouterProvider(api_key=KEY))
agent = Agent(model, system_prompt=SYSTEM, tools=[tools.web_search, tools.read_page], model_settings={"temperature": 0, "max_tokens": 1024})
def run(task: str) -> str:
return agent.run_sync(task).outputThe latest stable release is Scrapy 2.19.0, released 10 September 2026 (the release notes give 2026-09-10, and GitHub lists it as "Latest").
Two notable changes:
- A new RemoteControl extension lets you inspect and control a running crawl over HTTP.
- The default priority queue is now DownloaderAwarePriorityQueue.
Sources: https://docs.scrapy.org/en/latest/news.html and https://github.com/scrapy/scrapy/releases
I took the changes from the search result summaries; the full release notes page was cut off before the 2.19.0 section, so I did not verify them in the complete notes.