From 5f6f3e662ef35c943e6edfe7f0537cb623abf5f8 Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Mon, 27 Apr 2026 18:29:31 +0530 Subject: [PATCH] Fix greptile review --- .../llms/gemini/realtime/transformation.py | 1 - .../test_gemini_realtime_transformation.py | 40 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/litellm/llms/gemini/realtime/transformation.py b/litellm/llms/gemini/realtime/transformation.py index 1ae0706920e..edc6dac6f4a 100644 --- a/litellm/llms/gemini/realtime/transformation.py +++ b/litellm/llms/gemini/realtime/transformation.py @@ -1079,7 +1079,6 @@ class GeminiRealtimeConfig(BaseRealtimeConfig): logging_session_id, realtime_response_transform_input["session_configuration_request"], ) - session_configuration_request = json.dumps(transformed_message) returned_message.append(transformed_message) elif openai_event == ResponsesAPIStreamEvents.FUNCTION_CALL_ARGUMENTS_DONE: # Handle toolCall from Gemini diff --git a/tests/test_litellm/llms/gemini/realtime/test_gemini_realtime_transformation.py b/tests/test_litellm/llms/gemini/realtime/test_gemini_realtime_transformation.py index 8c2aebe3fb0..97b9d58597e 100644 --- a/tests/test_litellm/llms/gemini/realtime/test_gemini_realtime_transformation.py +++ b/tests/test_litellm/llms/gemini/realtime/test_gemini_realtime_transformation.py @@ -49,6 +49,46 @@ def test_gemini_realtime_transformation_session_created(): assert transformed_message["response"][0]["type"] == "session.created" +def test_session_created_does_not_overwrite_session_configuration_request(): + config = GeminiRealtimeConfig() + + session_configuration_request_str = json.dumps( + { + "setup": { + "model": "models/gemini-2.5-flash-native-audio", + "generationConfig": {"responseModalities": ["AUDIO"]}, + } + } + ) + setup_complete_message = {"setupComplete": {}} + + logging_obj = MagicMock() + logging_obj.litellm_trace_id = "trace_123" + + transformed = config.transform_realtime_response( + json.dumps(setup_complete_message), + "gemini-2.5-flash-native-audio", + logging_obj, + realtime_response_transform_input={ + "session_configuration_request": session_configuration_request_str, + "current_output_item_id": None, + "current_response_id": None, + "current_conversation_id": None, + "current_delta_chunks": [], + "current_item_chunks": [], + "current_delta_type": None, + }, + ) + + # Must keep original setup payload (with "setup"), not overwrite with session.created event. + assert transformed["session_configuration_request"] == session_configuration_request_str + + # Also verify emitted session.created reflects audio modality from setup payload. + session_created = transformed["response"][0] + assert session_created["type"] == "session.created" + assert "audio" in session_created["session"]["modalities"] + + def test_gemini_realtime_transformation_content_delta(): config = GeminiRealtimeConfig() assert config is not None