From a2451ef3840dc4b840c828ad72b5507ee63b47ec Mon Sep 17 00:00:00 2001 From: s-zx <2575376715@qq.com> Date: Wed, 11 Mar 2026 22:10:20 +0100 Subject: [PATCH] fix: drop dimensions in hosted_vllm when drop_params=True and model is not text-embedding-3 - Add dimensions drop logic in HostedVLLMEmbeddingConfig.map_openai_params() - Update test cases to use groq provider per Greptile feedback --- .../hosted_vllm/embedding/transformation.py | 12 ++++++++++-- tests/test_litellm/test_utils.py | 17 ++++++----------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/litellm/llms/hosted_vllm/embedding/transformation.py b/litellm/llms/hosted_vllm/embedding/transformation.py index 9c3e8c6c7cc..0f3fbb74cbd 100644 --- a/litellm/llms/hosted_vllm/embedding/transformation.py +++ b/litellm/llms/hosted_vllm/embedding/transformation.py @@ -163,8 +163,16 @@ class HostedVLLMEmbeddingConfig(BaseEmbeddingConfig): Map OpenAI parameters to Hosted VLLM format. """ for param, value in non_default_params.items(): - if param in self.get_supported_openai_params(model): - optional_params[param] = value + if param not in self.get_supported_openai_params(model): + continue + # Drop dimensions when drop_params=True and model is not text-embedding-3 + if ( + param == "dimensions" + and drop_params + and "text-embedding-3" not in model + ): + continue + optional_params[param] = value return optional_params def get_error_class( diff --git a/tests/test_litellm/test_utils.py b/tests/test_litellm/test_utils.py index 5929a445a30..cf354e88de2 100644 --- a/tests/test_litellm/test_utils.py +++ b/tests/test_litellm/test_utils.py @@ -477,17 +477,12 @@ def test_cohere_embedding_optional_params(): @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), + ("intfloat/e5-large-v2", "groq", True, False), # drop when drop_params=True + ("intfloat/e5-large-v2", "groq", False, True), # keep when drop_params=False + ("text-embedding-3-small", "groq", True, True), # text-embedding-3 always kept + ("text-embedding-3-small", "groq", False, True), + ("jina-embeddings-v3", "groq", True, False), + ("jina-embeddings-v3", "groq", False, True), ], ) def test_openai_compatible_embedding_dimensions_drop_params(