v2.5.0
pydantic/pydantic-aiv2.5.0Jul 4, 2026by dsfaccini
AI Summary
This release focuses on enhancing message history hardening and improving multimodal tool return handling through adapters. It includes various bug fixes for Bedrock, MoonshotAI, and integration issues with DBOS and Prefect.
Key Highlights
- Added `sanitize_messages` for inbound message-history hardening
- Fixed round-trip multimodal tool returns through AG-UI and Vercel AI adapters
- Fixed MoonshotAI Kimi `thinking` support
- Fixed Bedrock media kinds for Meta, Mistral, and Qwen
New Features
- `sanitize_messages` for inbound message-history hardening
- Round-trip multimodal tool returns through adapters
Full Release Notes
<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### 🚀 Features * Add `sanitize_messages` for inbound message-history hardening by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/6169 * Round-trip multimodal tool returns through the AG-UI and Vercel AI adapters (history and streaming) by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/5255 ### 🐛 Bug Fixes * Document why `_clean_message_history` merges consecutive `ModelRequest`s regardless of `conversation_id`/`metadata` by @adtyavrdhn in https://github.com/pydantic/pydantic-ai/pull/6221 * Align LLMJudge `_build_prompt` section order with its few-shot examples by @immuhammadfurqan in https://github.com/pydantic/pydantic-ai/pull/6111 * Reject duplicate deferred tool call IDs by @hramezani in https://github.com/pydantic/pydantic-ai/pull/6241 * Fix MoonshotAI Kimi `thinking` support and add models to `KnownModelNames` by @SuperMarioYL in https://github.com/pydantic/pydantic-ai/pull/6208 * fix(dbos,prefect): preserve runtime `toolsets` in durable runs by @Trollgeir in https://github.com/pydantic/pydantic-ai/pull/6076 * Exclude first-class token counts from `gen_ai.usage.details.*` OTel attributes to fix double-counting by @adtyavrdhn in https://github.com/pydantic/pydantic-ai/pull/6244 * fix(dbos,prefect): preserve runtime event stream handlers by @Trollgeir in https://github.com/pydantic/pydantic-ai/pull/6093 * Reject non-object agent spec inputs by @Ghraven in https://github.com/pydantic/pydantic-ai/pull/5820 * Run the sync streaming wrappers on an `anyio` portal thread; fix async `stream_text` early-break teardown by @DouweM in https://github.com/pydantic/pydantic-ai/pull/6199 * fix(bedrock): only synthesize a leading user message for models that require it by @DouweM in https://github.com/pydantic/pydantic-ai/pull/6255 * fix(bedrock): correct `bedrock_supported_media_kinds_in_tool_returns` for Meta, Mistral, and Qwen by @DouweM in https://github.com/pydantic/pydantic-ai/pull/6254 ### 📦 Dependencies * Avoid Python 3.14 `numpy` source builds in examples by @hramezani in https://github.com/pydantic/pydantic-ai/pull/6246 ## New Contributors * @pragnyanramtha made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5490 * @Sehlani042 made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6200 * @ChunkyTortoise made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5739 **Full Changelog**: https://github.com/pydantic/pydantic-ai/compare/v2.4.0...v2.5.0