diff --git a/litellm/llms/vertex_ai/gemini/transformation.py b/litellm/llms/vertex_ai/gemini/transformation.py index 4f84586cfc19..08c91a6fad18 100644 --- a/litellm/llms/vertex_ai/gemini/transformation.py +++ b/litellm/llms/vertex_ai/gemini/transformation.py @@ -473,7 +473,7 @@ def _transform_request_body( labels = {k: v for k, v in rm.items() if isinstance(v, str)} filtered_params = { - k: v for k, v in optional_params.items() if k in config_fields + k: v for k, v in optional_params.items() if _get_equivalent_key(k, set(config_fields)) } generation_config: Optional[GenerationConfig] = GenerationConfig( diff --git a/tests/litellm/llms/vertex_ai/gemini/test_transformation.py b/tests/litellm/llms/vertex_ai/gemini/test_transformation.py index 139df0d6f09b..a0f24376614a 100644 --- a/tests/litellm/llms/vertex_ai/gemini/test_transformation.py +++ b/tests/litellm/llms/vertex_ai/gemini/test_transformation.py @@ -151,5 +151,44 @@ async def test__transform_request_body_image_config(): rb: RequestBody = transformation._transform_request_body(**transform_request_params) - assert "imageConfig" in rb - assert rb["imageConfig"] == {"aspectRatio": "16:9"} \ No newline at end of file + assert "generationConfig" in rb + assert "imageConfig" in rb["generationConfig"] + assert rb["generationConfig"]["imageConfig"] == {"aspectRatio": "16:9"} + + +@pytest.mark.asyncio +async def test__transform_request_body_image_config_snake_case(): + """ + Test that Vertex AI Gemini supports the image_config parameter (snake_case) for gemini-2.5-flash-image model. + This should be transformed to imageConfig with aspectRatio. + """ + model = "gemini-2.5-flash-image" + messages = [ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme" + } + ] + } + ] + optional_params = { + "image_config": {"aspect_ratio": "16:9"} + } + litellm_params = {} + transform_request_params = { + "messages": messages, + "model": model, + "optional_params": optional_params, + "custom_llm_provider": "gemini", + "litellm_params": litellm_params, + "cached_content": None, + } + + rb: RequestBody = transformation._transform_request_body(**transform_request_params) + + assert "generationConfig" in rb + assert "image_config" in rb["generationConfig"] + assert rb["generationConfig"]["image_config"] == {"aspect_ratio": "16:9"} \ No newline at end of file