NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #293 most downloaded on PyPI
AI Agent Framework, the Pydantic way, slim package
Last release 2 days ago
19 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
329 releases · first in 2024
One column per month.
Add FastMCPToolset by @strawgate in https://github.com/pydantic/pydantic-ai/pull/2784
FastMCPToolset by @strawgate in https://github.com/pydantic/pydantic-ai/pull/2784OpenAIModelProfile.openai_responses_requires_function_call_status_none flag to satisfy vLLM Responses API by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3246ToolCallPart.args resulting from TestModel(custom_output_args=...) is always a dict by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3254Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.5.0...v1.6.0
Introduce new graph API in beta by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2982
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.4.0...v1.5.0
Support OpenAI and Anthropic native MCP support via MCPServerTool builtin tool by @Artui in https://github.com/pydantic/pydantic-ai/pull/3101, https:/
MCPServerTool builtin tool by @Artui in https://github.com/pydantic/pydantic-ai/pull/3101, https://github.com/pydantic/pydantic-ai/pull/3239Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.3.0...v1.4.0
docs: Replace deprecated Cohere model 'command' with 'command-r7b-12-… by @sijanonly in https://github.com/pydantic/pydantic-ai/pull/3201
IncompleteToolCall when token limit is reached during generation of tool call by @erhuve in https://github.com/pydantic/pydantic-ai/pull/3137AbstractBuiltinTool serializable and work with durable execution by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3176.serve example by @desertaxle in https://github.com/pydantic/pydantic-ai/pull/3192api_flavor, fixes anthropic usage extraction by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/3226gateway/<upstream_provider>: as provider name prefix for Gateway by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3229http_client option to GoogleProvider, support api_key for Vertex AI, and use Pydantic AI's cached httpx client by default by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3217Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.2.0...v1.3.0
Nothing published for this version
Strip markdown fences when generating evals datasets by @jlegewie in https://github.com/pydantic/pydantic-ai/pull/3141
final_result agent span attribute after streaming by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3170Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.1.0...v1.2.0
Add support for durable execution with Prefect by @desertaxle in https://github.com/pydantic/pydantic-ai/pull/3074, https://github.com/pydantic/pydant
previous_response_id from OpenAI Responses API by @GDaamn in https://github.com/pydantic/pydantic-ai/pull/2756DocumentUrl and BinaryContent on OpenAI by @pulphix in https://github.com/pydantic/pydantic-ai/pull/2851ToolDefinition.metadata for use in filtering by @ChuckJonas in https://github.com/pydantic/pydantic-ai/pull/2880name be overridden contextually by @MinuraPunchihewa in https://github.com/pydantic/pydantic-ai/pull/3094instructions by @mwildehahn in https://github.com/pydantic/pydantic-ai/pull/2926AgentRunResult.response convenience method to get latest model response by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2970ModelResponse.text, thinking, files, images, tool_calls, and builtin_tool_calls convenience methods by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2970Agent.run_stream_events() convenience method wrapping run(event_stream_handler=...) by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3084description arg to tool function decorators by @zhcn000000 in https://github.com/pydantic/pydantic-ai/pull/3153Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.18...v1.1.0
Add render method to EvaluationReport class by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/3116
render method to EvaluationReport class by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/3116previous_response_id when unset instead of sending null to OpenAI Responses by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3134ToolCallPart.id field for OpenAI Responses by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3151Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.17...v1.0.18
Let builtin_tools be specified at agent run time by @safina57 in https://github.com/pydantic/pydantic-ai/pull/3009
builtin_tools be specified at agent run time by @safina57 in https://github.com/pydantic/pydantic-ai/pull/3009BinaryImage work with inline-snapshot by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/3125InstrumentationSettings(version=3) by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/3127Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.16...v1.0.17
Add support for datetime.time/timedelta to format_as_xml by @nurikk in https://github.com/pydantic/pydantic-ai/pull/3087
Sequence[ModelMessage] instead of list for method arg types by @moritzwilksch in https://github.com/pydantic/pydantic-ai/pull/3040FileUrl.force_download flag in OpenAI Chat and Responses models by @nicolas-chaulet in https://github.com/pydantic/pydantic-ai/pull/3106FileUrl and BinaryContent without identifier are valid by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3110Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.15...v1.0.16
Support image generation and output with Google and OpenAI by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2970
AgentRunResult.response convenience method to get latest model response by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2970ModelResponse.text, thinking, files, images, tool_calls, and builtin_tool_calls convenience methods by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2970Agent.run_stream_events() convenience method wrapping run(event_stream_handler=...) by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3084FunctionToolResultEvent by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3082MCPServer id and tool_prefix in load_mcp_servers by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3052format_as_xml by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3064Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.14...v1.0.15
Remove leftover debug print statement by @KostyaGukish in https://github.com/pydantic/pydantic-ai/pull/3070
print statement by @KostyaGukish in https://github.com/pydantic/pydantic-ai/pull/3070new_messages by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3075Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.13...v1.0.14
feat: Otel instrumentation version 3 by @bitnahian in https://github.com/pydantic/pydantic-ai/pull/3021
Model.settings with model_settings in direct mode by @moritzwilksch in https://github.com/pydantic/pydantic-ai/pull/2980server_info in MCPServer by @Whadup in https://github.com/pydantic/pydantic-ai/pull/3055Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.12...v1.0.13
Support Anthropic built-in memory tool by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3042
DocumentUrl and BinaryContent on OpenAI by @pulphix in https://github.com/pydantic/pydantic-ai/pull/2851structuredContent MCP tool result when present by @shaheerzaman in https://github.com/pydantic/pydantic-ai/pull/2854.messages, .toolsets types in top-level pydantic_ai to aid IDE auto-import by @moritzwilksch in https://github.com/pydantic/pydantic-ai/pull/2957pydantic_evals.Dataset.evaluate_sync by @m7mdhka in https://github.com/pydantic/pydantic-ai/pull/3022finish_reason and document Ollama Cloud by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3045Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.11...v1.0.12
Support OpenAI image detail on ImageUrl and BinaryContent via vendor_metadata by @moritzwilksch in https://github.com/pydantic/pydantic-ai/pull/2987
ImageUrl and BinaryContent via vendor_metadata by @moritzwilksch in https://github.com/pydantic/pydantic-ai/pull/2987claude-sonnet-4-5 to known model names by @DouweM in https://github.com/pydantic/pydantic-ai/pull/3033operation.cost metric to instrumented models by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/3013OutputObjectDefinition public on pydantic_ai.output by @moritzwilksch in https://github.com/pydantic/pydantic-ai/pull/2991pyproject.toml to be PEP639 compliant by @Kludex in https://github.com/pydantic/pydantic-ai/pull/3001Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.10...v1.0.11
Fix OTel for built-in tools returning a list (e.g. Anthropic web search) by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2959
Agent(retries=...) description by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2963format_as_xml and add option to include field titles and descriptions as attributes by @giacbrd in https://github.com/pydantic/pydantic-ai/pull/2313Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.9...v1.0.10
Stream built-in tool calls from OpenAI, Google, Anthropic and return them on next request (required for OpenAI reasoning) by @DouweM in https://github
RunContext.max_retries and .last_attempt by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2952StreamedResponse.model_name for Azure OpenAI with content filter by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2951ModelSettings (e.g. openai_reasoning_effort) by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2938Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.8...v1.0.9
Tools can now return AG-UI events separate from result sent to model by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2922
new_messages() and capture_run_messages() when history processors are used by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2921Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.7...v1.0.8
Added MCP metadata and annotations to ToolDefinition.metadata for use in filtering by @ChuckJonas in https://github.com/pydantic/pydantic-ai/pull/2880
ToolDefinition.metadata for use in filtering by @ChuckJonas in https://github.com/pydantic/pydantic-ai/pull/2880ModelRequest, make its content available in RunContext.prompt by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2891FunctionToolset take default values for strict, sequential, requires_approval, metadata by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2909mcp or logfire to use Temporal or DBOS by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2908new_messages() when deferred_tool_results is used with message_history ending in ToolReturnParts by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2913Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.6...v1.0.7
Add support for previous_response_id from Responses API by @GDaamn in https://github.com/pydantic/pydantic-ai/pull/2756
previous_response_id from Responses API by @GDaamn in https://github.com/pydantic/pydantic-ai/pull/2756Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.5...v1.0.6
Don't lose Azure OpenAI Responses encrypted_content if no summary was included by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2874
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.4...v1.0.5
Add Pydantic AI Gateway provider by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2816, https://github.com/pydantic/pydantic-ai/pull/2863
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.3...v1.0.4
Include thinking parts in subsequent model requests to improve performance and cache hit rates by @DouweM in https://github.com/pydantic/pydantic-ai/p
on_complete callback to AG-UI functions to get access to AgentRunResult by @ChuckJonas in https://github.com/pydantic/pydantic-ai/pull/2429ModelSettings.seed in GoogleModel by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2842with agent.sequential_tool_calls(): contextmanager and use it in DBOSAgent by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2856ModelResponse fields are set from actual model response when streaming by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2848{"response': "<JSON string>"} by @shaheerzaman in https://github.com/pydantic/pydantic-ai/pull/2836NativeOutput with FunctionModel by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2843WebSearchTool is used with OpenAIChatModel and unsupported model by @safina57 in https://github.com/pydantic/pydantic-ai/pull/2824Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.2...v1.0.3
Add support for durable execution with DBOS by @qianl15 in https://github.com/pydantic/pydantic-ai/pull/2638
GoogleModelSettings.google_cached_content to pass cached_content by @Hojland in https://github.com/pydantic/pydantic-ai/pull/2832ModelResponse.finish_reason and set provider_response_id while streaming by @fatelei in https://github.com/pydantic/pydantic-ai/pull/2590gen_ai.response.id by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2831Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.1...v1.0.2
The following breaking change was slated to go into v1.0.0 but accidentally left out. Because it's a security issue, an uncommonly used feature, and f…
The following breaking change was slated to go into v1.0.0 but accidentally left out. Because it's a security issue, an uncommonly used feature, and few people will have updated to v1 yet within 24 hours, we decided it was justified to make an exception to the no-breaking-changes policy to get it out ASAP.
Python evaluator from pydantic_evals for security reasons by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2808eval-type-backport dependency by @Viicos in https://github.com/pydantic/pydantic-ai/pull/2814Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v1.0.0...v1.0.1
The following breaking change was accidentally left out of v1.0.0:
Python evaluator from pydantic_evals for security reasonsDeprecate OpenAIModelProfile.openai_supports_sampling_settings by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2730
OpenAIModelProfile.openai_supports_sampling_settings by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2730tool_calls_limit to UsageLimits and tool_calls to RunUsage by @tradeqvest in https://github.com/pydantic/pydantic-ai/pull/2633identifier field to FileUrl and subclasses by @kyuam32 in https://github.com/pydantic/pydantic-ai/pull/2636NativeOutput with Groq by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2772docstring_format, require_parameter_descriptions, schema_generator to FunctionToolset by @g-eoj in https://github.com/pydantic/pydantic-ai/pull/2601logfire with pydantic-ai package by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2683pydantic_ai by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2736temporalio to 1.17.0 by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2811InstrumentationSettings version to 2 by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/2726mcp package version by @BrokenDuck in https://github.com/pydantic/pydantic-ai/pull/2741__aexit__ is called when _running_count is already 0 by @federicociner in https://github.com/pydantic/pydantic-ai/pull/2696executable_code or code_execution_result by @binaryCrossEntropy in https://github.com/pydantic/pydantic-ai/pull/2719Agent.__aenter__ returns Self, use default instrumentation for MCP sampling model by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/2765ThinkingParts for separate OpenAI Responses reasoning summary parts by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2775tool_use_failed errors by getting model to retry by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2774mcp-run-python to its own repo by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/2776MCPServerStreamableHTTP and MCPServerSSE url to be a keyword argument by @franciscovilchezv in https://github.com/pydantic/pydantic-ai/pull/2758operation.cost span attribute to model request spans, rename ModelResponse.price() to .cost() by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/2767ModelResponses stored in a DB can still be deserialized by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2792ModelRequest.parts and ModelResponse.parts as Sequence by @moritzwilksch in https://github.com/pydantic/pydantic-ai/pull/2798event_stream_handler inside Temporal activity by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2806Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.8.1...v1.0.0
cases and averages attributes from pydantic_evals spansModelRequest.parts and ModelResponse.parts types from list to SequenceInstrumentationSettings version to 2AsyncRetrying or Retrying object to AsyncTenacityTransport or TenacityTransport instead of RetryConfigDeprecate OpenAIModelProfile.openai_supports_sampling_settings by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2730
OpenAIModelProfile.openai_supports_sampling_settings by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2730InstrumentationSettings version to 2 by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/2726Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.8.1...v1.0.0b1
Deprecate specifying a model name without a provider prefix, and the vertexai provider name by @DouweM in https://github.com/pydantic/pydantic-ai/pull…
gen_ai.system_instructions attribute to agent run spans by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/2699temporalio to 1.16.0 by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2703StreamedRunResult methods to be consistent with AgentStream by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2692vertexai provider name by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2711ModelResponse.provider_request_id to provider_response_id by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2710message_history parameter documentation for CLI methods by @ryx2 in https://github.com/pydantic/pydantic-ai/pull/2695Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.8.0...v0.8.1
Add elicitation callback support to MCP servers by @yamanahlawat in https://github.com/pydantic/pydantic-ai/pull/2373
message_history parameter to agent.to_cli() by @ryx2 in https://github.com/pydantic/pydantic-ai/pull/2674FileUrl.media_type by @mwildehahn in https://github.com/pydantic/pydantic-ai/pull/2677Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.7.6...v0.8.0
BREAKING CHANGE: Fix tenacity implementation for improved retry behavior by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2670
all_messages_events with pydantic_ai.all_messages for InstrumentationSettings(version=2) by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/2658OpenAIModel in favor of OpenAIChatModel by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2676Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.7.5...v0.7.6
Handle 'STOP' finish_reason in GeminiStreamedResponse by @ArneZsng in https://github.com/pydantic/pydantic-ai/pull/2631
price() method to ModelResponse by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2584span_id and trace_id to EvaluationReport by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2627AnthropicProvider when using Bedrock by @akoshel in https://github.com/pydantic/pydantic-ai/pull/2490content is always set for assistant tool call messages for OpenAI. by @vimota in https://github.com/pydantic/pydantic-ai/pull/2641Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.7.4...v0.7.5
Fix bug with google model safety handling by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2066
takes_ctx arg to Tool.from_schema by @dedeswim in https://github.com/pydantic/pydantic-ai/pull/2615Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.7.3...v0.7.4
Deprecate Usage in favour of RequestUsage and RunUsage by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/2378
Usage in favour of RequestUsage and RunUsage by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/2378FallbackModel accept string model names by @vikigenius in https://github.com/pydantic/pydantic-ai/pull/2564system_prompt_role from OpenAIModel to OpenAIModelProfile by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2573/cp command to CLI to copy last response to clipboard by @07pepa in https://github.com/pydantic/pydantic-ai/pull/2386_provider.name instead of _system by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2596Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.7.2...v0.7.3
Let message history end on ModelResponse and execute pending tool calls by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2562
get_tools ahead of agent run span by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2545AnthropicModel by @jerry-reevo in https://github.com/pydantic/pydantic-ai/pull/2544OllamaProvider by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2554profile and settings to HuggingfaceModel by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2554Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.7.1...v0.7.2
Add new OpenAI GPT-5 models by @medaminezghal in https://github.com/pydantic/pydantic-ai/pull/2503
"openai-responses" model inference string by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2528UsageLimits.count_tokens_before_request using Gemini count_tokens API by @kauabh in https://github.com/pydantic/pydantic-ai/pull/2137FallbackModel to respect each model's model settings by @jerry-reevo in https://github.com/pydantic/pydantic-ai/pull/2540Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.7.0...v0.7.1
Let Agent be run in a Temporal workflow by moving model requests, tool calls, and MCP to Temporal activities by @DouweM in https://github.com/pydantic
event_stream_handler to agent and run methods by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2458AbstractAgent and WrapperAgent by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2458Agent.override(tools=...) by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2458Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.6.2...v0.7.0
Add builtin_tools to Agent by @mattbrandman in https://github.com/pydantic/pydantic-ai/pull/2102
builtin_tools to Agent by @mattbrandman in https://github.com/pydantic/pydantic-ai/pull/2102Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.6.1...v0.6.2
Automatically use OpenAI strict mode for strict-compatible native output types by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2447
InlineDefsJsonSchemaTransformer public by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2455ThinkingParts back to Anthropic used through Bedrock by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2454AWS_BEARER_TOKEN_BEDROCK API key env var by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2456Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.6.0...v0.6.1
BREAKING CHANGE: Remove next() method from Graph by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2440
next() method from Graph by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2440data from FinalResult by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2443get_data and validate_structured_result from StreamedRunResult by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2445griffe_warnings_deprecated by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2444format_as_xml module by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2446result_type parameter and similar from Agent by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2441GoogleGLAProvider and GoogleVertexProvider by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2450Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.5.1...v0.6.0
Deprecate GeminiModel in favor of GoogleModel by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2416
GeminiModel in favor of GoogleModel by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2416httpx on GoogleProvider by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2438Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.5.0...v0.5.1
Breaking Change: The EvaluationReport.print and EvaluationReport.console_table methods now require most arguments be passed by keyword. by @dmontagu i…
EvaluationReport.print and EvaluationReport.console_table methods now require most arguments be passed by keyword. by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2163source field of an EvaluationResult is now of type EvaluatorSpec rather than the actual source Evaluator instance, to help with serialization/deserialization by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2388BaseModels use OpenAI strict JSON mode by defaulting to additionalProperties=False by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2419test_download_item_no_content_type test failing on macOS by @strawgate in https://github.com/pydantic/pydantic-ai/pull/2404install.md by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2412Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.11...v0.5.0
Add convenience functions to handle AG-UI requests with request-specific deps by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2397
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.10...v0.4.11
Fix parallel tool calling with tools returning ToolReturn with content by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2365
priority service_tier to OpenAIModelSettings and respect it in OpenAIResponsesModel by @akenarsari in https://github.com/pydantic/pydantic-ai/pull/2368Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.9...v0.4.10
Ensure AG-UI state is isolated between requests by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2343
default in tool schema with Gemini by @strawgate in https://github.com/pydantic/pydantic-ai/pull/2309Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.8...v0.4.9
Add tenacity utilities/integration for improved retry handling by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2282
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.7...v0.4.8
Add MoonshotAI provider with Kimi-K2 model support by @zachmayer in https://github.com/pydantic/pydantic-ai/pull/2211
MCPServer sse_read_timeout to read_timeout and pass to ClientSession by @AntSan813 in https://github.com/pydantic/pydantic-ai/pull/2240None created timestamp coming from OpenRouter API by @R0boji in https://github.com/pydantic/pydantic-ai/pull/2247Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.6...v0.4.7
Enable URL and binary PDF for Mistral by @pintaf in https://github.com/pydantic/pydantic-ai/pull/2267
FileUrl.format to find the extension by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2280CLAUDE.md by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2281_estimate_string_tokens by @misrasaurabh1 in https://github.com/pydantic/pydantic-ai/pull/2156Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.5...v0.4.6
Add async with self in agent_to_a2a by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2266
async with self in agent_to_a2a by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2266format_as_xml defaults by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/2228Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.4...v0.4.5
Add Toolsets and Deferred Tools by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2024
AgentRunResult._set_output_tool_return by 18798% by @misrasaurabh1 in https://github.com/pydantic/pydantic-ai/pull/2196Usage.opentelemetry_attributes by 85% by @misrasaurabh1 in https://github.com/pydantic/pydantic-ai/pull/2198Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.3...v0.4.4
Include content.1571 by @adtyavrdhn in https://github.com/pydantic/pydantic-ai/pull/2180
duckduckgo-search is renamed to ddgs by @basnijholt in https://github.com/pydantic/pydantic-ai/pull/2172tool_return_ta by @adtyavrdhn in https://github.com/pydantic/pydantic-ai/pull/2186Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.2...v0.4.3
Let model settings be passed to model classes by @svilupp in https://github.com/pydantic/pydantic-ai/pull/2136
settings be passed to model classes by @svilupp in https://github.com/pydantic/pydantic-ai/pull/2136StructuredDict for structured outputs with custom JSON schema by @fswair in https://github.com/pydantic/pydantic-ai/pull/2157Agent.iter() by @erosennin in https://github.com/pydantic/pydantic-ai/pull/2168_ensure_decodeable by 634% by @misrasaurabh1 in https://github.com/pydantic/pydantic-ai/pull/2155Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.1...v0.4.2
Support evaluating sync tasks by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/2150
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.4.0...v0.4.1
BREAKING CHANGE: Make EvaluationReport and ReportCase into generic dataclasses by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/1799
EvaluationReport and ReportCase into generic dataclasses by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/1799ToolDefinition.description optional and fix Bedrock description handling by @dmontagu in https://github.com/pydantic/pydantic-ai/pull/1507Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.7...v0.4.0
Raise consistent deprecation warnings by @Viicos in https://github.com/pydantic/pydantic-ai/pull/2148
AgentStream.stream_output (available inside agent.iter) stream validated output data instead of raising validation errors by @DouweM in https://github.com/pydantic/pydantic-ai/pull/2134model_request_stream_sync to direct API by @hewliyang in https://github.com/pydantic/pydantic-ai/pull/2116Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.6...v0.3.7
Deprecate {FunctionToolCallEvent,FunctionToolResultEvent}.call_id in favor of tool_call_id by @proever in https://github.com/pydantic/pydantic-ai/pull…
{FunctionToolCallEvent,FunctionToolResultEvent}.call_id in favor of tool_call_id by @proever in https://github.com/pydantic/pydantic-ai/pull/2028RetryPromptPart not tied to a tool call contains validation feedback rather than a user message by @hovi in https://github.com/pydantic/pydantic-ai/pull/2008Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.5...v0.3.6
Fix deprecation warning under Pydantic 2.11 by @medaminezghal in https://github.com/pydantic/pydantic-ai/pull/2076
GoogleProvider by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2031ThinkingPart to preceed TextPart in OpenAIResponsesModel by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2043Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.4...v0.3.5
Scrubbing sensitive content by @adtyavrdhn in https://github.com/pydantic/pydantic-ai/pull/2014
ThinkingPart back when using tool calls by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2072Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.3...v0.3.4
Support NativeOutput and PromptedOutput modes in addition to ToolOutput by @DouweM in https://github.com/pydantic/pydantic-ai/pull/1628
NativeOutput and PromptedOutput modes in addition to ToolOutput by @DouweM in https://github.com/pydantic/pydantic-ai/pull/1628UserPromptNode by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2052Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.2...v0.3.3
Support MCP sampling by @samuelcolvin in https://github.com/pydantic/pydantic-ai/pull/1884
Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.1...v0.3.2
Update Google models by @tacoo in https://github.com/pydantic/pydantic-ai/pull/2010
ThinkingPart when delta contains signature by @Kludex in https://github.com/pydantic/pydantic-ai/pull/2012Full Changelog: https://github.com/pydantic/pydantic-ai/compare/v0.3.0...v0.3.1
Your coding agent can read these notes before it upgrades. Set up the MCP server →