fix(anthropic): handle runtime model fallback in caching middleware #33850
+313
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes a bug in
AnthropicPromptCachingMiddlewarewherecache_controlparameters remain in the request afterModelFallbackMiddlewareswitches to non-Anthropic models at runtime, causingTypeErrorin other providers.When using
AnthropicPromptCachingMiddlewarewithModelFallbackMiddleware:ModelFallbackMiddlewareswitchesrequest.modelto OpenAI (or other provider)cache_controlparameters remain inrequest.model_settingsTypeError: Completions.create() got an unexpected keyword argument 'cache_control'Solution: Add cleanup logic to remove
cache_controlparameters when the middleware detects a non-Anthropic model. This enables graceful fallback to any provider without Anthropic-specific settings causing errors. *The error is raised in the Prompt Caching Middleware. The solution should also be made in the same Middleware.Changes
_remove_cache_control()method to safely remove cache settingswrap_model_call()to clean up for non-Anthropic modelsawrap_model_call()with same logic (async version)Example Usage
Issue
Fixes #33709
Dependencies
None - no new dependencies added.
Testing
All tests pass:
make format- passedmake lint- passedmake test- unit tests pass