This commit is contained in:
Hasnaat hussain 2026-08-27 17:42:21 -05:00 • committed by GitHub
commit 7c5494f796
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 63 additions and 1 deletions

View file

@ -3384,7 +3384,10 @@ def get_optional_params_embeddings(
special_params: Final = passed_params.pop("kwargs")
drop_params = passed_params.pop("drop_params", None)
resolved_drop_params = litellm.drop_params or False if drop_params is None else drop_params
additional_drop_params = passed_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
passed_params.pop("get_supported_openai_params", None)
@ -3429,7 +3432,7 @@ def get_optional_params_embeddings(
non_default_params=non_default_params,
optional_params={},
model=model,
drop_params=drop_params if drop_params is not None else False,
drop_params=resolved_drop_params,
)
# Provider-only params (e.g. Cohere input_type) are not in
# OPENAI_EMBEDDING_PARAMS, so embedding_pre_process drops them from
@ -3715,6 +3718,14 @@ def get_optional_params_embeddings(
if "extra_body" in final_params and len(final_params["extra_body"]) == 0:
final_params.pop("extra_body", None)
if (
(litellm.drop_params is True or resolved_drop_params is True)
and (custom_llm_provider == "azure" or custom_llm_provider in litellm.openai_compatible_providers)
and "text-embedding-3" not in model
and "dimensions" not in (allowed_openai_params or ())
):
final_params.pop("dimensions", None)
return final_params

View file

@ -0,0 +1,51 @@
import pytest
import litellm
@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 = litellm.utils.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 = litellm.utils.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 = litellm.utils.get_optional_params_embeddings(
model=f"{provider}/dummy-model",
custom_llm_provider=provider,
dimensions=512,
)
assert preserved["dimensions"] == 512
litellm.drop_params = True
model_supported = litellm.utils.get_optional_params_embeddings(
model=f"{provider}/text-embedding-3-small",
custom_llm_provider=provider,
dimensions=512,
)
assert model_supported["dimensions"] == 512
explicitly_allowed = litellm.utils.get_optional_params_embeddings(
model=f"{provider}/legacy-model",
custom_llm_provider=provider,
dimensions=512,
allowed_openai_params=["dimensions"],
)
assert explicitly_allowed["dimensions"] == 512
finally:
litellm.drop_params = previous_drop_params