fix: omit None config values from Gemini GenerateContentConfig (#5528)

This commit is contained in:
Hrushikesh Yadav
2026-06-16 11:54:42 +05:30
committed by GitHub
parent bb69b036b5
commit 30d172e826
2 changed files with 51 additions and 6 deletions
+42
View File
@@ -187,3 +187,45 @@ def test_parse_response_empty_parts_with_tools(mock_gemini_client: Mock):
result = llm._parse_response(mock_response, tools=[{"function": {"name": "test"}}])
assert result == {"content": None, "tool_calls": []}
def test_none_config_values_omitted_from_generation_config(mock_gemini_client: Mock):
"""When temperature/max_tokens/top_p are None, they must not be passed
to GenerateContentConfig (verified via model_fields_set)."""
config = BaseLlmConfig(model="gemini-2.0-flash", temperature=None, max_tokens=None, top_p=None)
llm = GeminiLLM(config)
mock_part = Mock(text="ok")
mock_content = Mock(parts=[mock_part])
mock_candidate = Mock(content=mock_content)
mock_response = Mock(candidates=[mock_candidate])
mock_gemini_client.models.generate_content.return_value = mock_response
llm.generate_response([{"role": "user", "content": "hi"}])
config_arg = mock_gemini_client.models.generate_content.call_args.kwargs["config"]
assert "temperature" not in config_arg.model_fields_set
assert "max_output_tokens" not in config_arg.model_fields_set
assert "top_p" not in config_arg.model_fields_set
def test_explicit_config_values_passed_to_generation_config(mock_gemini_client: Mock):
"""When temperature/max_tokens/top_p are explicitly set, they must appear."""
config = BaseLlmConfig(model="gemini-2.0-flash", temperature=0.5, max_tokens=200, top_p=0.9)
llm = GeminiLLM(config)
mock_part = Mock(text="ok")
mock_content = Mock(parts=[mock_part])
mock_candidate = Mock(content=mock_content)
mock_response = Mock(candidates=[mock_candidate])
mock_gemini_client.models.generate_content.return_value = mock_response
llm.generate_response([{"role": "user", "content": "hi"}])
config_arg = mock_gemini_client.models.generate_content.call_args.kwargs["config"]
assert "temperature" in config_arg.model_fields_set
assert config_arg.temperature == 0.5
assert "max_output_tokens" in config_arg.model_fields_set
assert config_arg.max_output_tokens == 200
assert "top_p" in config_arg.model_fields_set
assert config_arg.top_p == 0.9