v1.0.0 (2025-09-04)
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
toUsageLimits
andtool_calls
toRunUsage
by @tradeqvest in #2633 - Add LiteLLM provider for OpenAI API compatible models by @mochow13 in #2606
- Add
identifier
field toFileUrl
and subclasses by @kyuam32 in #2636 - Support
NativeOutput
with Groq by @DouweM in #2772 - Add
docstring_format
,require_parameter_descriptions
,schema_generator
toFunctionToolset
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 already0
by @federicociner in #2696 - Fix error when streaming from Gemini includes only
executable_code
orcode_execution_result
by @binaryCrossEntropy in #2719 - Close original response when retrying HTTP request by @DouweM in #2753
Agent.__aenter__
returnsSelf
, 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
andMCPServerSSE
url
to be a keyword argument by @franciscovilchezv in #2758 - Add
operation.cost
span attribute to model request spans, renameModelResponse.price()
to.cost()
by @alexmojaki in #2767 - Ensure that old
ModelResponse
s stored in a DB can still be deserialized by @DouweM in #2792 - Type
ModelRequest.parts
andModelResponse.parts
asSequence
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
- @BrokenDuck made their first contribution in #2741
- @federicociner made their first contribution in #2696
- @g-eoj made their first contribution in #2601
- @binaryCrossEntropy made their first contribution in #2719
- @Trollgeir made their first contribution in #2729
- @kyuam32 made their first contribution in #2636
- @richhuth made their first contribution in #2680
- @frednijsvrt made their first contribution in #2763
- @celeritatem made their first contribution in #2779
- @mochow13 made their first contribution in #2606
- @franciscovilchezv made their first contribution in #2758
- @moritzwilksch made their first contribution in #2798
Full Changelog: v0.8.1...v1.0.0