v2.17.0
pydantic/pydantic-aiv2.17.0Jul 24, 2026by dsfaccini
AI Summary
Enables support for arbitrary fields in `RequestUsage` and `RunUsage` for future pricing updates. Optimizes OpenTelemetry serialization and fixes `ContentFilterError` handling.
Key Highlights
- Make `RequestUsage` and `RunUsage` support arbitrary fields
- Cache per-message OTel serialization to avoid cost
- Fix `ContentFilterError` for real Model Armor response blocks
New Features
- Arbitrary fields in usage tracking
- OpenTelemetry serialization caching
- Model Armor moderation fixes
Full Release Notes
<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### š Features * Make `RequestUsage` and `RunUsage` support arbitrary fields for upcoming genai-prices by @alexmojaki in https://github.com/pydantic/pydantic-ai/pull/6683 * Cache per-message OTel serialization to avoid `O(n²)` instrumentation cost by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/6635 ### š Bug Fixes * Fix `ContentFilterError` for real Model Armor response blocks (`finishReason: MODEL_ARMOR`) and record moderation wire-truth cassettes by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/6679 **Full Changelog**: https://github.com/pydantic/pydantic-ai/compare/v2.16.0...v2.17.0