What's Changed (Python SDK)
✨ Features
- feat(memory): support managed Bedrock knowledge bases in retrieve and ACL (shared with TS) by @notowen333 in #2909
- feat(offloader): add search/grep support to Python retrieval tool by @lizradway in #2878
- feat(bidi/openai): support image input via BidiImageInputEvent by @cagataycali in #2327
- feat: implement MCP progress notifications in MCPClient by @joshwand in #2290
- feat: make BedrockModel._format_request and _convert_non_streaming_to_streaming overridable by @celealramos in #2315
- feat(models)!: support mistralai 2.x in Mistral provider (breaking: requires mistralai>=2.0.0) by @pgrayy in #2917
🐛 Fixes
- fix: forward structured output request params for OpenAI Chat Completions by @gautamsirdeshmukh in #2944
- fix: pass structured output request params by @he-yufeng in #2396
- fix: support non-streaming OpenAI chat completions by @he-yufeng in #2400
- fix: report OpenAI Responses cached tokens by @fengjikui in #2663
- fix(openai-responses): surface cache read tokens in metadata chunk by @gautham18113 in #2555
- fix(openai-responses): prevent tool list mutation across API calls by @xlyoung in #2551
- fix(anthropic): bypass model_dump on content_block_stop by @chaynabors in #2953
- fix(gemini): update GeminiModel to handle empty tools in Vertex AI mode by @pshiko in #1040
- fix(ollama): avoid UnboundLocalError on empty model stream by @he-yufeng in #2823
- fix(litellm): generate toolUseId when missing from provider by @chaynabors in #2949
- fix: handle empty Bedrock content blocks by @he-yufeng in #2656
- fix: include reasoning block with empty text and non-empty signature by @gaurav71531 in #2150
- fix: preserve non-ASCII tool result text by @cyphercodes in #2653
- fix: bound tool schema normalization recursion depth by @pgrayy in #2853
- fix(tools): unwrap FieldInfo default to avoid pydantic warning by @chaynabors in #2955
- fix(agent): stop idempotency waiters from blocking thread-pool workers by @BV-Venky in #2932
- fix(agent): release invocation lock only in throw mode by @chaynabors in #2954
- fix: consume orphaned task exception on stream cancellation by @mehtarac in #2916
♻️ Refactors
- refactor(memory): type the Bedrock KB store's S3 client via boto3-stubs by @pgrayy in #2847
- refactor(sandbox): inline tool prefixing into getTools implementations (shared with TS) by @gautamsirdeshmukh in #2806
🧪 Tests & Chores
- fix(test): make gemini thinking-model tool-call integ test robust by @yonib05 in #2861
- fix(test): retry flaky guardrail output-intervention test by @yonib05 in #2869
- fix(test): raise timeout on multimodal swarm/graph integ tests to reduce flakiness by @yonib05 in #2871
- ci(python): add timeouts and apt retries to test-lint workflow by @yonib05 in #2874
- ci(python): revert mistralai upper bound to <2.0.0 by @chaynabors in #2900
- ci: tighten dependabot versioning strategy by @chaynabors in #2899
- docs(evals): updated examples to be async by @poshinchen in #2846
New Contributors
- @fengjikui made their first contribution in #2663
- @celealramos made their first contribution in #2315
- @gaurav71531 made their first contribution in #2150
- @cyphercodes made their first contribution in #2653
- @gautham18113 made their first contribution in #2555
- @xlyoung made their first contribution in #2551
- @joshwand made their first contribution in #2290
Full Changelog: python/v1.44.0...python/v1.45.0