NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1317 most downloaded on PyPI
AI Agent Framework, the Pydantic way
Last release today
25 Sep 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
2 years old
340 releases · first in 2024
This release only makes sure that pydantic-ai-examples have the right dependency versions.
This release only makes sure that pydantic-ai-examples have the right dependency versions.
Add Agent.instrument_all() method to instrument all agents by default by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/1047
Agent.instrument_all() method to instrument all agents by default by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/1047pai CLI by @Kludex in https://github.com/pydantic/pydantic-ai/pull/1031Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.33...v0.0.34
One column per month.
Make use of typing-inspection by @Viicos in https://github.com/pydantic/pydantic-ai/pull/1019
typing-inspection by @Viicos in https://github.com/pydantic/pydantic-ai/pull/1019Providers API by @Kludex in https://github.com/pydantic/pydantic-ai/pull/1013Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.32...v0.0.33
Disable instrumentation by default, add instrument param to Agent, use plain OpenTelemetry by @alexmojaki in https://github.com/pydantic/pydantic-ai/p
instrument param to Agent, use plain OpenTelemetry by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/1005gemini-2.0-pro-exp-02-05 by @barapa in https://github.com/pydantic/pydantic-ai/pull/1038Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.31...v0.0.32
Accept recursive objects in return_type by @Kludex in https://github.com/pydantic/pydantic-ai/pull/1017
return_type by @Kludex in https://github.com/pydantic/pydantic-ai/pull/1017model request span with InstrumentedModel by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/1012all_messages in agent span with all_messages_events in same format as InstrumentedModel span by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/1018Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.30...v0.0.31
Use .iter() API to fully replace existing streaming implementation by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/951
.iter() API to fully replace existing streaming implementation by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/951TestModel by @Kludex in https://github.com/pydantic/pydantic-ai/pull/1015Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.29...v0.0.30
Add max_results parameter to DuckDuckGo search tool by @HamzaFarhan in https://github.com/pydantic/pydantic-ai/pull/1003
max_results parameter to DuckDuckGo search tool by @HamzaFarhan in https://github.com/pydantic/pydantic-ai/pull/1003Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.28...v0.0.29
Allow Anthropic Models to use more broad mime types for ImageUrl by @pedroallenrevez in https://github.com/pydantic/pydantic-ai/pull/993
ImageUrl by @pedroallenrevez in https://github.com/pydantic/pydantic-ai/pull/993Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.27...v0.0.28
Add FallbackModel support by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/894
FallbackModel support by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/894Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.26...v0.0.27
Support multimodal inputs by @Kludex in https://github.com/pydantic/pydantic-ai/pull/971
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.25...v0.0.26
Add InstrumentedModel by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/892
InstrumentedModel by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/892name methods from openai and mistral models by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/925request_stream to InstrumentedModel by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/922next more ergonomic by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/833InstrumentedModel by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/945Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.24...v0.0.25
Remove now-invalid reference to graph extra from docs by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/873
async from _get_model by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/893ModelResponse.model_name from responses by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/883Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.23...v0.0.24
Fix error in evals example by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/852
o3 support for OpenAIModel by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/853AgentModel class by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/800reasoning_effort param for OpenAIModel by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/854project_id == creds_id check for vertexai by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/862model_name and system model properties by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/865Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.22...v0.0.23
Port pydantic_ai.Agent to using pydantic_graph by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/725
pydantic_ai.Agent to using pydantic_graph by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/725tool_call_id to chatbot.append if it's set by @chug2k in https://github.com/pydantic/pydantic-ai/pull/771Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.21...v0.0.22
Update index.md by @kauabh in https://github.com/pydantic/pydantic-ai/pull/759
AgentDeps refs to AgentDepsT by @zzstoatzz in https://github.com/pydantic/pydantic-ai/pull/767ModelSettings to support specialized model requests by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/766_utils.Either by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/768docstring_format and require_parameter_descriptions by @chris-dare in https://github.com/pydantic/pydantic-ai/pull/776OllamaModel in favor of usage with OpenAIModel by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/805Cohere docs and additional (live) tests by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/810Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.20...v0.0.21
Add missing allow_model_requests check by @YanSte in https://github.com/pydantic/pydantic-ai/pull/697
allow_model_requests check by @YanSte in https://github.com/pydantic/pydantic-ai/pull/697model_name to ModelResponse by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/701'deepseek-r1' to the list of Ollama Model Names by @izzyacademy in https://github.com/pydantic/pydantic-ai/pull/735o1 by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/740from_text and from_tool_call utilities that complicate snapshot testing by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/744IsNow() delta by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/746set_event_loop fixture by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/747parallel_tool_calls in ModelSettings by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/750user role system prompts o1-preview-2024-09-12 by @siavashg in https://github.com/pydantic/pydantic-ai/pull/754Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.19...v0.0.20
Docs: add asyncio to all examples that need it. by @ME-Msc in https://github.com/pydantic/pydantic-ai/pull/638
asyncio to all examples that need it. by @ME-Msc in https://github.com/pydantic/pydantic-ai/pull/638docstring_format and require_parameter_descriptions on tools by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/643phi4 to Ollama by @josead in https://github.com/pydantic/pydantic-ai/pull/668run/ run_sync docs by @KranthiGV in https://github.com/pydantic/pydantic-ai/pull/688testing-evals and RAG example by @lealre in https://github.com/pydantic/pydantic-ai/pull/694Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.18...v0.0.19
Added docs contribution docs, a troubleshooting item for docs changes by @andrewdmalone in https://github.com/pydantic/pydantic-ai/pull/600
UV_FROZEN globally in CI by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/626dynamic to system_prompt decorator, allowing reevaluation by @josead in https://github.com/pydantic/pydantic-ai/pull/560--reinstall instead of uninstall/install for docs insiders packages by @T-256 in https://github.com/pydantic/pydantic-ai/pull/627result_type on a run by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/629Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.17...v0.0.18
Multi-agent application documentation by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/541
scope to google.auth.default() by @jtbaker in https://github.com/pydantic/pydantic-ai/pull/579AgentDeps default to None. by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/592Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.16...v0.0.17
multi-agent usage by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/538
X | None = None with Gemini by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/540chat_app example by @DurandA in https://github.com/pydantic/pydantic-ai/pull/553RunContext by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/570capture_run_messages support nested agent calls by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/573TestModel handles result retries correctly by @jlowin in https://github.com/pydantic/pydantic-ai/pull/572Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.15...v0.0.16
docs: fix typo in pydantic link for /api/models/gemini/ by @lealre in https://github.com/pydantic/pydantic-ai/pull/506
ResultData, some related cleanup by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/512Agents page by @lealre in https://github.com/pydantic/pydantic-ai/pull/521last_run_messages, add capture_run_messages by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/536Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.14...v0.0.15
Fix ModelMessage discriminator in chat_app example by @DurandA in https://github.com/pydantic/pydantic-ai/pull/402
ModelMessage discriminator in chat_app example by @DurandA in https://github.com/pydantic/pydantic-ai/pull/402Cost to Usage by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/403openai:o1 model support by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/498RunContext more widely by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/500Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.13...v0.0.14
All releases prior to V1 can contain breaking changes according to semvar, but this release contains more than usual:
All releases prior to V1 can contain breaking changes according to semvar, but this release contains more than usual:
ToolReturnPart for each tool call, see https://github.com/pydantic/pydantic-ai/pull/184 and https://github.com/pydantic/pydantic-ai/pull/274tests/test_tools.py by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/229uv version by @zzstoatzz in https://github.com/pydantic/pydantic-ai/pull/236ModelSettings logic by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/227messages.py by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/255defer_build with type adapters, not custom _LazyTypeAdapter by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/253isinstance checks for message kinds by @sydney-runkle in https://github.com/pydantic/pydantic-ai/pull/252messages to RunContext by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/257list[ModelRequest | ModelResponse] by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/259Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.12...v0.0.13
docs: update README.md by @eltociear in https://github.com/pydantic/pydantic-ai/pull/165
.stream_text(delta=True) by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/178IndexError when streaming OpenAI by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/181Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.11...v0.0.12
fix agent name by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/156
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.10...v0.0.11
Adding Agent.name by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/141
Agent.name by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/141bank_support.py -- fix docstring typo by @akgerber in https://github.com/pydantic/pydantic-ai/pull/143logfire optional group by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/154Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.9...v0.0.10
readme improvements by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/109
nee -> need by @patrick91 in https://github.com/pydantic/pydantic-ai/pull/111.vscode/ to .gitignore by @zzstoatzz in https://github.com/pydantic/pydantic-ai/pull/113Agent(tools_[...]) by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/128Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.0.8...v0.0.9
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →