v2.2.0
pydantic/pydantic-aiv2.2.0Jul 1, 2026by dsfaccini
AI Summary
This release adds support for Claude Sonnet 5, TwelveLabs Pegasus video-understanding, and various improvements to providers including OpenRouter cost tracking and Google retry options.
Key Highlights
- Claude Sonnet 5 model support
- TwelveLabs Pegasus video-understanding example
- Factory functions as lifecycle arg for Dataset.evaluate
- Prompt and completions cost fields for OpenRouter
- retry_options parameter for GoogleProvider
New Features
- Claude Sonnet 5 support
- TwelveLabs Pegasus video-understanding example
- Factory functions as lifecycle arg for Dataset.evaluate
- Prompt and completions cost fields for OpenRouter
- retry_options parameter for GoogleProvider
Full Release Notes
<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### 🚀 Features * feat: add TwelveLabs Pegasus video-understanding example by @mohit-twelvelabs in https://github.com/pydantic/pydantic-ai/pull/6061 * Add Claude Sonnet 5 (`claude-sonnet-5`) support by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/6161 * Allow factory functions as lifecycle arg for Dataset.evaluate by @nlsfnr in https://github.com/pydantic/pydantic-ai/pull/6107 * feat: Add prompt and completions cost fields to OpenRouter by @ali-corpo in https://github.com/pydantic/pydantic-ai/pull/4899 * feat: add `retry_options` parameter to `GoogleProvider` by @graydeon in https://github.com/pydantic/pydantic-ai/pull/4966 ### 🐛 Bug Fixes * Forward image `detail` from `vendor_metadata` for `GroqModel` and `MistralModel` by @pydanty[bot] in https://github.com/pydantic/pydantic-ai/pull/6014 * fix(utils): run sync callbacks inline on Pyodide/emscripten by default by @syf2211 in https://github.com/pydantic/pydantic-ai/pull/6088 * Fix `group_by_temporal` emitting first item alone when delayed past soft_max_interval by @pydanty[bot] in https://github.com/pydantic/pydantic-ai/pull/5947 * Fix missing `output_audio_tokens` in usage accumulation by @jnMetaCode in https://github.com/pydantic/pydantic-ai/pull/4594 * fix(heroku): route model names through family profiles so thinking isn't dropped by @Bartok9 in https://github.com/pydantic/pydantic-ai/pull/6070 * Guard `TogetherProvider.model_profile` against model names without a `/` by @immuhammadfurqan in https://github.com/pydantic/pydantic-ai/pull/6113 * fix(`GoogleModel`): include `CodeExecutionTool` in `include_server_side_tool_invocations` check by @aarsh767 in https://github.com/pydantic/pydantic-ai/pull/6052 * fix(groq): surface reasoning_tokens in usage details by @tcconnally in https://github.com/pydantic/pydantic-ai/pull/5986 * Fix map `downstream_join_id` double-firing the join on a non-empty iterable by @clavedeluna in https://github.com/pydantic/pydantic-ai/pull/6009 * fix: de-duplicate `output_audio_tokens` accumulation in `_incr_usage_tokens` by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/6141 * Suppress `ClosedResourceError` when cancelling a graph run mid-send by @conradlee in https://github.com/pydantic/pydantic-ai/pull/6149 * fix(ui): round-trip file `vendor_metadata` through Vercel AI & AG-UI adapters by @Bartok9 in https://github.com/pydantic/pydantic-ai/pull/5790 * Handle CRLF markdown JSON fences in `strip_markdown_fences` by @CodingFeng101 in https://github.com/pydantic/pydantic-ai/pull/6090 * fix(heroku): avoid duplicating `/v1` in `base_url` by @VectorPeak in https://github.com/pydantic/pydantic-ai/pull/6142 * Fix absolute `schema_path` handling in `Dataset.to_file` by @VectorPeak in https://github.com/pydantic/pydantic-ai/pull/6143 * Fix `deps` deserialization in non-streaming Temporal model-request activity by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/5900 ## New Contributors * @Iam-Mil made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6132 * @jnMetaCode made their first contribution in https://github.com/pydantic/pydantic-ai/pull/4594 * @mohit-twelvelabs made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6061 * @immuhammadfurqan made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6113 * @aarsh767 made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6052 * @tcconnally made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5986 * @clavedeluna made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6009 * @VectorPeak made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6140 * @nlsfnr made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6107 * @CodingFeng101 made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6090 * @ali-corpo made their first contribution in https://github.com/pydantic/pydantic-ai/pull/4899 **Full Changelog**: https://github.com/pydantic/pydantic-ai/compare/v2.1.0...v2.2.0