From e223b29d31255325f698068f9b8438a7da76b9d2 Mon Sep 17 00:00:00 2001 From: Chesars Date: Tue, 10 Mar 2026 19:19:07 -0300 Subject: [PATCH] fix(responses): add models to TypedDict and fix test state corruption - Add 'models' field to ResponsesAPIOptionalRequestParams TypedDict so the Perplexity fallback chain param is not silently filtered out by get_requested_response_api_optional_param(). Verified with curl that Perplexity's models param works (tries models in order until one succeeds). - Fix test_python_class_takes_priority_over_json: save and restore the original JSONProviderRegistry entry instead of deleting it, preventing state corruption for subsequent tests. --- litellm/types/llms/openai.py | 2 ++ .../openai_like/responses/test_openai_like_responses.py | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/litellm/types/llms/openai.py b/litellm/types/llms/openai.py index b09303b5774..ac661a1e61f 100644 --- a/litellm/types/llms/openai.py +++ b/litellm/types/llms/openai.py @@ -1155,6 +1155,8 @@ class ResponsesAPIOptionalRequestParams(TypedDict, total=False): ] # Number of partial images to generate (1-3) for streaming image generation context_management: Optional[List[ContextManagementEntry]] """Context management configuration. E.g. [{\"type\": \"compaction\", \"compact_threshold\": 200000}] for server-side compaction (minimum 1000).""" + models: Optional[List[str]] + """Model fallback chain (e.g. Perplexity). Models are tried in order until one succeeds.""" class ResponsesAPIRequestParams(ResponsesAPIOptionalRequestParams, total=False): diff --git a/tests/test_litellm/llms/openai_like/responses/test_openai_like_responses.py b/tests/test_litellm/llms/openai_like/responses/test_openai_like_responses.py index 205b2343770..fdb1420f873 100644 --- a/tests/test_litellm/llms/openai_like/responses/test_openai_like_responses.py +++ b/tests/test_litellm/llms/openai_like/responses/test_openai_like_responses.py @@ -325,6 +325,7 @@ class TestProviderConfigManagerResponsesAPI: "supported_endpoints": ["/v1/responses"], }, ) + original = JSONProviderRegistry._providers.get("perplexity") JSONProviderRegistry._providers["perplexity"] = test_config try: config = ProviderConfigManager.get_provider_responses_api_config( @@ -334,4 +335,7 @@ class TestProviderConfigManagerResponsesAPI: # Should be the Python class, not the JSON-generated one assert isinstance(config, PerplexityResponsesConfig) finally: - del JSONProviderRegistry._providers["perplexity"] + if original is not None: + JSONProviderRegistry._providers["perplexity"] = original + else: + del JSONProviderRegistry._providers["perplexity"]