mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-17 23:51:30 +00:00
fix(vertex_ai): forward dimensions parameter in multimodalembedding requests
The `dimensions` parameter was correctly mapped to `outputDimensionality` in `optional_params` but never placed in the request body. The Vertex AI predict endpoint expects it under a `parameters` field. Add `parameters` dict to `VertexMultimodalEmbeddingRequest` TypedDict and populate it from `optional_params` in `transform_embedding_request`. Fixes #24392
This commit is contained in:
parent
f5194b5ce3
commit
7805f38cce
3 changed files with 40 additions and 2 deletions
|
|
@ -201,6 +201,11 @@ class VertexAIMultimodalEmbeddingConfig(BaseEmbeddingConfig):
|
|||
|
||||
request_data["instances"] = [vertex_request_instance]
|
||||
|
||||
if "outputDimensionality" in optional_params:
|
||||
request_data["parameters"] = {
|
||||
"outputDimensionality": optional_params["outputDimensionality"]
|
||||
}
|
||||
|
||||
return cast(dict, request_data)
|
||||
|
||||
def transform_embedding_response(
|
||||
|
|
|
|||
|
|
@ -514,8 +514,9 @@ class Instance(TypedDict, total=False):
|
|||
video: InstanceVideo
|
||||
|
||||
|
||||
class VertexMultimodalEmbeddingRequest(TypedDict):
|
||||
instances: List[Instance]
|
||||
class VertexMultimodalEmbeddingRequest(TypedDict, total=False):
|
||||
instances: Required[List[Instance]]
|
||||
parameters: dict
|
||||
|
||||
|
||||
class VideoEmbedding(TypedDict):
|
||||
|
|
|
|||
|
|
@ -135,3 +135,35 @@ class TestVertexMultimodalEmbedding:
|
|||
]
|
||||
result = self.config.process_openai_embedding_input(input_data)
|
||||
assert result == expected_output, f"Expected {expected_output}, but got {result}"
|
||||
|
||||
def test_dimensions_parameter_forwarded_as_output_dimensionality(self):
|
||||
"""Test that the dimensions parameter is forwarded as outputDimensionality
|
||||
in the request body parameters field.
|
||||
|
||||
Fixes: https://github.com/BerriAI/litellm/issues/24392
|
||||
"""
|
||||
optional_params = {}
|
||||
optional_params = self.config.map_openai_params(
|
||||
non_default_params={"dimensions": 128},
|
||||
optional_params=optional_params,
|
||||
model="multimodalembedding",
|
||||
drop_params=False,
|
||||
)
|
||||
request = self.config.transform_embedding_request(
|
||||
model="multimodalembedding",
|
||||
input="Hello world",
|
||||
optional_params=optional_params,
|
||||
headers={},
|
||||
)
|
||||
assert "parameters" in request, "Request should contain 'parameters' field"
|
||||
assert request["parameters"]["outputDimensionality"] == 128
|
||||
|
||||
def test_no_parameters_field_when_dimensions_not_set(self):
|
||||
"""Test that no parameters field is added when dimensions is not set."""
|
||||
request = self.config.transform_embedding_request(
|
||||
model="multimodalembedding",
|
||||
input="Hello world",
|
||||
optional_params={},
|
||||
headers={},
|
||||
)
|
||||
assert "parameters" not in request
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue