fix(gemini): forward toolConfig in image generation request body

This commit is contained in:
mateo-berri
2026-06-12 05:05:40 +00:00
parent 83c218153f
commit e1a4e79bda
4 changed files with 37 additions and 0 deletions
@@ -148,6 +148,8 @@ class GoogleImageGenConfig(BaseImageGenerationConfig):
}
if tools := optional_params.get("tools"):
request_body["tools"] = tools
if tool_config := optional_params.get("toolConfig"):
request_body["toolConfig"] = tool_config
return request_body
else:
# For other Imagen models, use the original Imagen format
@@ -253,6 +253,8 @@ class VertexAIGeminiImageGenerationConfig(BaseImageGenerationConfig, VertexLLM):
if tools := optional_params.get("tools"):
request_body["tools"] = tools
if tool_config := optional_params.get("toolConfig"):
request_body["toolConfig"] = tool_config
return request_body
@@ -276,6 +276,19 @@ def test_gemini_image_generation_preserves_tool_config_side_effect():
"retrievalConfig": {"latLng": {"latitude": 37.7, "longitude": -122.4}}
}
request = config.transform_image_generation_request(
model="gemini-3.1-flash-image-preview",
prompt="Generate an image of a coffee shop nearby",
optional_params=mapped,
litellm_params={},
headers={},
)
assert request["tools"] == [{"googleMaps": {}}]
assert request["toolConfig"] == {
"retrievalConfig": {"latLng": {"latitude": 37.7, "longitude": -122.4}}
}
def test_gemini_image_generation_usage_without_output_details_treats_output_as_image():
config = GoogleImageGenConfig()
@@ -157,6 +157,26 @@ class TestVertexAIGeminiImageGenerationConfig:
)
assert request["tools"] == [{"googleSearch": {}}]
def test_transform_image_generation_request_forwards_tool_config(self):
"""Test request transformation forwards toolConfig side-effects from tool mapping"""
mapped = self.config.map_openai_params(
{"tools": [{"googleMaps": {"latitude": 37.7, "longitude": -122.4}}]},
{},
"gemini-3.1-flash-image-preview",
False,
)
request = self.config.transform_image_generation_request(
model="gemini-3.1-flash-image-preview",
prompt="Generate an image of a coffee shop nearby",
optional_params=mapped,
litellm_params={},
headers={},
)
assert request["tools"] == [{"googleMaps": {}}]
assert request["toolConfig"] == {
"retrievalConfig": {"latLng": {"latitude": 37.7, "longitude": -122.4}}
}
def test_transform_image_generation_request_with_candidate_count(self):
"""Test request transformation with candidate_count"""
request = self.config.transform_image_generation_request(