Skip to content

Releases: pydantic/pydantic-ai

v1.0.5 (2025-09-11)

12 Sep 01:19
b00646d
Compare
Choose a tag to compare

What's Changed

  • Don't lose Azure OpenAI Responses encrypted_content if no summary was included by @DouweM in #2874
  • Store OpenAI Responses text part ID to prevent error with reasoning by @DouweM in #2882
  • Make OpenAIResponsesModel work with reasoning from other models and modified history by @DouweM in #2881

Full Changelog: v1.0.4...v1.0.5

v1.0.4 (2025-09-11)

11 Sep 17:37
ec87153
Compare
Choose a tag to compare

What's Changed

  • Add Pydantic AI Gateway provider by @Kludex in #2816, #2863
  • Fix OpenAI Responses API tool calls with reasoning by @DouweM in #2869
  • Support OpenAI Responses API returning encrypted reasoning content without summary by @DouweM in #2866
  • Don't ask for OpenAI Responses API to include encrypted reasoning content for models that don't support it by @DouweM in #2867
  • docs: update builtin-tools md by @tberends in #2857

New Contributors

Full Changelog: v1.0.3...v1.0.4

v1.0.3 (2025-09-10)

10 Sep 23:58
bee76e6
Compare
Choose a tag to compare

What's Changed

  • Include thinking parts in subsequent model requests to improve performance and cache hit rates by @DouweM in #2823
  • Add on_complete callback to AG-UI functions to get access to AgentRunResult by @ChuckJonas in #2429
  • Support ModelSettings.seed in GoogleModel by @DouweM in #2842
  • Add with agent.sequential_tool_calls(): contextmanager and use it in DBOSAgent by @DouweM in #2856
  • Ensure ModelResponse fields are set from actual model response when streaming by @DouweM in #2848
  • Send AG-UI thinking start and end events by @DouweM in #2855
  • Support models that return output tool args as {"response': "<JSON string>"} by @shaheerzaman in #2836
  • Support NativeOutput with FunctionModel by @DouweM in #2843
  • Raise error when WebSearchTool is used with OpenAIChatModel and unsupported model by @safina57 in #2824

New Contributors

Full Changelog: v1.0.2...v1.0.3

v1.0.2 (2025-09-08)

09 Sep 00:33
0047a68
Compare
Choose a tag to compare

What's Changed

  • Add support for durable execution with DBOS by @qianl15 in #2638
  • Support sequential tool calling by @strawgate in #2718
  • Add GoogleModelSettings.google_cached_content to pass cached_content by @Hojland in #2832
  • Add ModelResponse.finish_reason and set provider_response_id while streaming by @fatelei in #2590
  • Add support for gen_ai.response.id by @Kludex in #2831
  • Only send tool choice to Bedrock Converse API for Anthropic and Nova models by @DouweM in #2819
  • Handle errors in cost calculation in InstrumentedModel by @alexmojaki in #2834

New Contributors

Full Changelog: v1.0.1...v1.0.2

v1.0.1 (2025-09-05)

05 Sep 15:09
55c6814
Compare
Choose a tag to compare

Breaking Changes

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.

  • Remove Python evaluator from pydantic_evals for security reasons by @dmontagu in #2808

Other Changes

Full Changelog: v1.0.0...v1.0.1

v1.0.0 (2025-09-04)

05 Sep 00:15
78f3b7a
Compare
Choose a tag to compare

What's Changed

  • Drop support for Python 3.9 by @Kludex in #2725
  • Deprecate OpenAIModelProfile.openai_supports_sampling_settings by @Kludex in #2730
  • Add support for human-in-the-loop tool call approval by @DouweM in #2581
  • Add tool_calls_limit to UsageLimits and tool_calls to RunUsage by @tradeqvest in #2633
  • Add LiteLLM provider for OpenAI API compatible models by @mochow13 in #2606
  • Add identifier field to FileUrl and subclasses by @kyuam32 in #2636
  • Support NativeOutput with Groq by @DouweM in #2772
  • Add docstring_format, require_parameter_descriptions, schema_generator to FunctionToolset by @g-eoj in #2601
  • Gracefully handle errors in evals by @dmontagu in #2295
  • Include logfire with pydantic-ai package by @Kludex in #2683
  • Let almost all types used in docs examples be imported directly from pydantic_ai by @DouweM in #2736
  • Bump temporalio to 1.17.0 by @DouweM in #2811
  • Default InstrumentationSettings version to 2 by @alexmojaki in #2726
  • Remove cases and averages from eval span by @DouweM in #2715
  • Make many more dataclasses kw-only by @dmontagu in #2738
  • Don't emit empty AG-UI thinking message events by @DouweM in #2754
  • Update mcp package version by @BrokenDuck in #2741
  • Raise error if MCP server __aexit__ is called when _running_count is already 0 by @federicociner in #2696
  • Fix error when streaming from Gemini includes only executable_code or code_execution_result by @binaryCrossEntropy in #2719
  • Close original response when retrying HTTP request by @DouweM in #2753
  • Agent.__aenter__ returns Self, use default instrumentation for MCP sampling model by @alexmojaki in #2765
  • Fix Anthropic streaming usage counting by @DouweM in #2771
  • Create separate ThinkingParts for separate OpenAI Responses reasoning summary parts by @DouweM in #2775
  • Handle Groq tool_use_failed errors by getting model to retry by @DouweM in #2774
  • Raise error when trying to use Google built-in tools with user/output tools by @DouweM in #2777
  • Move mcp-run-python to its own repo by @samuelcolvin in #2776
  • Fix Azure OpenAI streaming when async content filter is enabled by @frednijsvrt in #2763
  • Don't emit AG-UI text message content events with empty text part deltas by @celeritatem in #2779
  • Handle streaming thinking signature deltas from Bedrock Converse API by @DouweM in #2785
  • Don't require MCPServerStreamableHTTP and MCPServerSSE url to be a keyword argument by @franciscovilchezv in #2758
  • Add operation.cost span attribute to model request spans, rename ModelResponse.price() to .cost() by @alexmojaki in #2767
  • Ensure that old ModelResponses stored in a DB can still be deserialized by @DouweM in #2792
  • Type ModelRequest.parts and ModelResponse.parts as Sequence by @moritzwilksch in #2798
  • Always run event_stream_handler inside Temporal activity by @DouweM in #2806
  • Document that various functions need to be async to be used with Temporal by @DouweM in #2809

New Contributors

Full Changelog: v0.8.1...v1.0.0

v1.0.0b1 (2025-08-30)

30 Aug 17:02
b3cf6d7
Compare
Choose a tag to compare
v1.0.0b1 (2025-08-30) Pre-release
Pre-release

What's Changed

  • Drop support for Python 3.9 by @Kludex in #2725
  • Add support for human-in-the-loop tool call approval by @DouweM in #2581
  • Deprecate OpenAIModelProfile.openai_supports_sampling_settings by @Kludex in #2730
  • Gracefully handle errors in evals by @dmontagu in #2295
  • Include logfire with pydantic-ai package by @Kludex in #2683
  • Remove errors when passing Retrying instead of RetryConfig to TenacityTransport by @DouweM in #2717
  • Default InstrumentationSettings version to 2 by @alexmojaki in #2726
  • Remove cases and averages from eval span by @DouweM in #2715
  • Make many more dataclasses kw-only by @dmontagu in #2738

Full Changelog: v0.8.1...v1.0.0b1

v0.8.1 (2025-08-29)

29 Aug 14:42
7e0b4fc
Compare
Choose a tag to compare

What's Changed

  • Add gen_ai.system_instructions attribute to agent run spans by @alexmojaki in #2699
  • Bump temporalio to 1.16.0 by @DouweM in #2703
  • Rename StreamedRunResult methods to be consistent with AgentStream by @DouweM in #2692
  • Deprecate specifying a model name without a provider prefix, and the vertexai provider name by @DouweM in #2711
  • Rename ModelResponse.provider_request_id to provider_response_id by @DouweM in #2710
  • docs: Add message_history parameter documentation for CLI methods by @ryx2 in #2695

Full Changelog: v0.8.0...v0.8.1

v0.8.0 (2025-08-26)

26 Aug 23:32
a2f0eab
Compare
Choose a tag to compare

What's Changed

  • Add elicitation callback support to MCP servers by @yamanahlawat in #2373
  • Add message_history parameter to agent.to_cli() by @ryx2 in #2674
  • Properly deserialize complex tool arguments with Temporal by @DouweM in #2686
  • Fix serialization / deserialization of FileUrl.media_type by @mwildehahn in #2677
  • Handle missing token details in vLLM/OpenAI-compatible APIs by @DouweM in #2669
  • Make AgentStreamEvent union of ModelResponseStreamEvent and HandleResponseEvent by @DouweM in #2689

Full Changelog: v0.7.6...v0.8.0

v0.7.6 (2025-08-26)

26 Aug 12:57
d273775
Compare
Choose a tag to compare

What's Changed

  • Replace all_messages_events with pydantic_ai.all_messages for InstrumentationSettings(version=2) by @alexmojaki in #2658
  • Fix inability to call response.raise_for_status in AsyncTenacityTransport by @dmontagu in #2668
  • Deprecate OpenAIModel in favor of OpenAIChatModel by @Kludex in #2676
  • anthropic: drop new lines on empty system prompt by @Kludex in #2678
  • fix(bedrock): skip SystemPromptPart with empty content by @essamgouda97 in #2672
  • BREAKING CHANGE: Fix tenacity implementation for improved retry behavior by @dmontagu in #2670
  • Add Cerebras provider by @Kludex in #2643

New Contributors

Full Changelog: v0.7.5...v0.7.6