What's Changed
- Drop support for Python 3.9 by @Kludex in #2725
- Deprecate
OpenAIModelProfile.openai_supports_sampling_settingsby @Kludex in #2730 - Add support for human-in-the-loop tool call approval by @DouweM in #2581
- Add
tool_calls_limittoUsageLimitsandtool_callstoRunUsageby @tradeqvest in #2633 - Add LiteLLM provider for OpenAI API compatible models by @mochow13 in #2606
- Add
identifierfield toFileUrland subclasses by @kyuam32 in #2636 - Support
NativeOutputwith Groq by @DouweM in #2772 - Add
docstring_format,require_parameter_descriptions,schema_generatortoFunctionToolsetby @g-eoj in #2601 - Gracefully handle errors in evals by @dmontagu in #2295
- Include
logfirewith pydantic-ai package by @Kludex in #2683 - Let almost all types used in docs examples be imported directly from
pydantic_aiby @DouweM in #2736 - Bump
temporalioto 1.17.0 by @DouweM in #2811 - Default
InstrumentationSettingsversionto 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
mcppackage version by @BrokenDuck in #2741 - Raise error if MCP server
__aexit__is called when_running_countis already0by @federicociner in #2696 - Fix error when streaming from Gemini includes only
executable_codeorcode_execution_resultby @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
ThinkingPartsfor separate OpenAI Responses reasoning summary parts by @DouweM in #2775 - Handle Groq
tool_use_failederrors 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-pythonto 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
MCPServerStreamableHTTPandMCPServerSSEurlto be a keyword argument by @franciscovilchezv in #2758 - Add
operation.costspan attribute to model request spans, renameModelResponse.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.partsandModelResponse.partsasSequenceby @moritzwilksch in #2798 - Always run
event_stream_handlerinside 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