test(embeddings): add parametrized tests for dimensions drop_params behaviour

Cover six scenarios for openai_compatible_providers:
- non-text-embedding-3 model + drop_params=True  → dimensions dropped
- non-text-embedding-3 model + drop_params=False → dimensions forwarded
- text-embedding-3-* model (any drop_params)     → dimensions always kept

Regression test for #23119.
This commit is contained in:
s-zx 2026-03-10 08:26:31 +01:00
parent fe622faa04
commit 9df6e2a1de

View file

@ -474,6 +474,52 @@ def test_cohere_embedding_optional_params():
assert optional_params is not None
@pytest.mark.parametrize(
"model,custom_llm_provider,drop_params,expect_dimensions",
[
# hosted_vllm with a non-text-embedding-3 model and drop_params=True → drop
("intfloat/e5-large-v2", "hosted_vllm", True, False),
# hosted_vllm with a non-text-embedding-3 model and drop_params=False → keep
("intfloat/e5-large-v2", "hosted_vllm", False, True),
# text-embedding-3 model should always keep dimensions
("text-embedding-3-small", "openai_compatible_providers", True, True),
("text-embedding-3-small", "openai_compatible_providers", False, True),
# openrouter with a non-text-embedding-3 model and drop_params=True → drop
("jina-embeddings-v3", "openai_compatible_providers", True, False),
# openrouter without drop_params → keep (don't block providers that support dimensions)
("jina-embeddings-v3", "openai_compatible_providers", False, True),
],
)
def test_openai_compatible_embedding_dimensions_drop_params(
model, custom_llm_provider, drop_params, expect_dimensions
):
"""dimensions should only be dropped for non-text-embedding-3 models when drop_params=True.
Regression test for https://github.com/BerriAI/litellm/issues/23119 hosted_vllm
endpoints return 422 when `dimensions` is forwarded, but other compatible providers
(Jina AI, Cohere via OpenRouter) legitimately support the parameter.
"""
from litellm import get_optional_params_embeddings
result = get_optional_params_embeddings(
model=model,
custom_llm_provider=custom_llm_provider,
input="hello",
dimensions=512,
drop_params=drop_params,
)
if expect_dimensions:
assert "dimensions" in result, (
f"Expected 'dimensions' to be present for model={model!r}, "
f"drop_params={drop_params}"
)
else:
assert "dimensions" not in result, (
f"Expected 'dimensions' to be dropped for model={model!r}, "
f"drop_params={drop_params}"
)
def validate_model_cost_values(model_data, exceptions=None):
"""
Validates that cost values in model data do not exceed 1.