diff --git a/litellm/utils.py b/litellm/utils.py index 94577745e23..7327816cd89 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -3430,14 +3430,10 @@ def get_optional_params_embeddings( special_params: Final = passed_params.pop("kwargs") drop_params = passed_params.pop("drop_params", None) - if drop_params is None: - drop_params = special_params.pop("drop_params", None) if drop_params is None: drop_params = litellm.drop_params or False additional_drop_params = passed_params.pop("additional_drop_params", None) - if additional_drop_params is None: - additional_drop_params = special_params.pop("additional_drop_params", None) allowed_openai_params = passed_params.pop("allowed_openai_params", None) or [] # Remove function objects from passed_params to avoid JSON serialization errors diff --git a/tests/llm_translation/test_optional_params.py b/tests/llm_translation/test_optional_params.py index 997f5b3b73f..017857f0f77 100644 --- a/tests/llm_translation/test_optional_params.py +++ b/tests/llm_translation/test_optional_params.py @@ -1120,6 +1120,38 @@ def test_lm_studio_embedding_params(): assert len(optional_params) == 0 +@pytest.mark.parametrize("provider", ["azure", "together_ai"]) +def test_embedding_dimensions_drop_params_for_openai_compatible_provider(provider): + previous_drop_params = litellm.drop_params + try: + litellm.drop_params = False + dropped = get_optional_params_embeddings( + model=f"{provider}/dummy-model", + custom_llm_provider=provider, + dimensions=512, + drop_params=True, + ) + assert "dimensions" not in dropped + + litellm.drop_params = True + dropped_globally = get_optional_params_embeddings( + model=f"{provider}/dummy-model", + custom_llm_provider=provider, + dimensions=512, + ) + assert "dimensions" not in dropped_globally + + litellm.drop_params = False + preserved = get_optional_params_embeddings( + model=f"{provider}/dummy-model", + custom_llm_provider=provider, + dimensions=512, + ) + assert preserved["dimensions"] == 512 + finally: + litellm.drop_params = previous_drop_params + + def test_ollama_pydantic_obj(): from pydantic import BaseModel diff --git a/tests/local_testing/test_get_optional_params_embeddings.py b/tests/local_testing/test_get_optional_params_embeddings.py index 83fbfe73125..60ccfbfaebe 100644 --- a/tests/local_testing/test_get_optional_params_embeddings.py +++ b/tests/local_testing/test_get_optional_params_embeddings.py @@ -160,97 +160,3 @@ def test_openai_non_text_embedding_3_drop_params_global(): assert "dimensions" not in optional_params finally: litellm.drop_params = prev_drop_params - - -def test_azure_and_openai_compatible_drop_params(): - """ - Verify that dimensions parameter is correctly dropped on Azure and OpenAI compatible calls - when drop_params is True (either per-call or globally), while preserving it otherwise. - """ - prev_drop_params = litellm.drop_params - - # 1. Test Azure drop_params=True (per-call) - litellm.drop_params = False - model, custom_llm_provider, _, _ = get_llm_provider( - model="azure/dummy-model" - ) - optional_params = get_optional_params_embeddings( - model=model, - dimensions=512, - custom_llm_provider=custom_llm_provider, - drop_params=True, - ) - assert "dimensions" not in optional_params - - # 2. Test Azure drop_params=True (global) - litellm.drop_params = True - optional_params = get_optional_params_embeddings( - model=model, - dimensions=512, - custom_llm_provider=custom_llm_provider, - ) - assert "dimensions" not in optional_params - - # 3. Test Azure drop_params=False (preserves dimensions parameter) - litellm.drop_params = False - optional_params = get_optional_params_embeddings( - model=model, - dimensions=512, - custom_llm_provider=custom_llm_provider, - ) - assert "dimensions" in optional_params - assert optional_params["dimensions"] == 512 - - # 4. Test OpenAI compatible (Together AI) drop_params=True (per-call) - model, custom_llm_provider, _, _ = get_llm_provider( - model="together_ai/dummy-model" - ) - optional_params = get_optional_params_embeddings( - model=model, - dimensions=512, - custom_llm_provider=custom_llm_provider, - drop_params=True, - ) - assert "dimensions" not in optional_params - - # 5. Test OpenAI compatible (Together AI) drop_params=True (global) - litellm.drop_params = True - optional_params = get_optional_params_embeddings( - model=model, - dimensions=512, - custom_llm_provider=custom_llm_provider, - ) - assert "dimensions" not in optional_params - - # 6. Test OpenAI compatible (Together AI) drop_params=False (preserves dimensions parameter) - litellm.drop_params = False - optional_params = get_optional_params_embeddings( - model=model, - dimensions=512, - custom_llm_provider=custom_llm_provider, - ) - assert "dimensions" in optional_params - assert optional_params["dimensions"] == 512 - - # Restore state - litellm.drop_params = prev_drop_params - - -@pytest.mark.parametrize("provider", ["nvidia_nim", "lm_studio", "fireworks_ai"]) -def test_dedicated_openai_compatible_providers_drop_dimensions(provider): - """Keep dedicated provider mappings reachable when dimensions is dropped.""" - prev_drop_params = litellm.drop_params - litellm.drop_params = False - try: - model, custom_llm_provider, _, _ = get_llm_provider( - model=f"{provider}/dummy-model" - ) - optional_params = get_optional_params_embeddings( - model=model, - dimensions=512, - custom_llm_provider=custom_llm_provider, - drop_params=True, - ) - assert "dimensions" not in optional_params - finally: - litellm.drop_params = prev_drop_params