Skip to content

Commit df6e084

Browse files
authored
Fix image_config.aspect_ratio not working for gemini-2.5-flash-image (#15999)
* fix image edit method * fix mypy error
1 parent ad6a0f4 commit df6e084

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

litellm/llms/vertex_ai/gemini/transformation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ def _transform_request_body(
473473
labels = {k: v for k, v in rm.items() if isinstance(v, str)}
474474

475475
filtered_params = {
476-
k: v for k, v in optional_params.items() if k in config_fields
476+
k: v for k, v in optional_params.items() if _get_equivalent_key(k, set(config_fields))
477477
}
478478

479479
generation_config: Optional[GenerationConfig] = GenerationConfig(

tests/litellm/llms/vertex_ai/gemini/test_transformation.py

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,5 +151,44 @@ async def test__transform_request_body_image_config():
151151

152152
rb: RequestBody = transformation._transform_request_body(**transform_request_params)
153153

154-
assert "imageConfig" in rb
155-
assert rb["imageConfig"] == {"aspectRatio": "16:9"}
154+
assert "generationConfig" in rb
155+
assert "imageConfig" in rb["generationConfig"]
156+
assert rb["generationConfig"]["imageConfig"] == {"aspectRatio": "16:9"}
157+
158+
159+
@pytest.mark.asyncio
160+
async def test__transform_request_body_image_config_snake_case():
161+
"""
162+
Test that Vertex AI Gemini supports the image_config parameter (snake_case) for gemini-2.5-flash-image model.
163+
This should be transformed to imageConfig with aspectRatio.
164+
"""
165+
model = "gemini-2.5-flash-image"
166+
messages = [
167+
{
168+
"role": "user",
169+
"content": [
170+
{
171+
"type": "text",
172+
"text": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"
173+
}
174+
]
175+
}
176+
]
177+
optional_params = {
178+
"image_config": {"aspect_ratio": "16:9"}
179+
}
180+
litellm_params = {}
181+
transform_request_params = {
182+
"messages": messages,
183+
"model": model,
184+
"optional_params": optional_params,
185+
"custom_llm_provider": "gemini",
186+
"litellm_params": litellm_params,
187+
"cached_content": None,
188+
}
189+
190+
rb: RequestBody = transformation._transform_request_body(**transform_request_params)
191+
192+
assert "generationConfig" in rb
193+
assert "image_config" in rb["generationConfig"]
194+
assert rb["generationConfig"]["image_config"] == {"aspect_ratio": "16:9"}

0 commit comments

Comments
 (0)