fix: gemini 3.0 pro does not currently support medium thinking level, updated to use high

This commit is contained in:
Fahad
2025-11-18 20:32:05 +04:00
parent fbe2005055
commit 18464a8b54

View File

@@ -173,6 +173,15 @@ class GeminiModelProvider(RegistryBackedProviderMixin, ModelProvider):
# Create contents structure
contents = [{"parts": parts}]
# Gemini 3 Pro Preview currently rejects medium thinking budgets; bump to high.
effective_thinking_mode = thinking_mode
if resolved_model_name == "gemini-3-pro-preview" and thinking_mode == "medium":
logger.debug(
"Overriding thinking mode 'medium' with 'high' for %s due to launch limitation",
resolved_model_name,
)
effective_thinking_mode = "high"
# Prepare generation config
generation_config = types.GenerateContentConfig(
temperature=temperature,
@@ -184,12 +193,12 @@ class GeminiModelProvider(RegistryBackedProviderMixin, ModelProvider):
generation_config.max_output_tokens = max_output_tokens
# Add thinking configuration for models that support it
if capabilities.supports_extended_thinking and thinking_mode in self.THINKING_BUDGETS:
if capabilities.supports_extended_thinking and effective_thinking_mode in self.THINKING_BUDGETS:
# Get model's max thinking tokens and calculate actual budget
model_config = capability_map.get(resolved_model_name)
if model_config and model_config.max_thinking_tokens > 0:
max_thinking_tokens = model_config.max_thinking_tokens
actual_thinking_budget = int(max_thinking_tokens * self.THINKING_BUDGETS[thinking_mode])
actual_thinking_budget = int(max_thinking_tokens * self.THINKING_BUDGETS[effective_thinking_mode])
generation_config.thinking_config = types.ThinkingConfig(thinking_budget=actual_thinking_budget)
# Retry logic with progressive delays
@@ -279,7 +288,7 @@ class GeminiModelProvider(RegistryBackedProviderMixin, ModelProvider):
friendly_name="Gemini",
provider=ProviderType.GOOGLE,
metadata={
"thinking_mode": thinking_mode if capabilities.supports_extended_thinking else None,
"thinking_mode": effective_thinking_mode if capabilities.supports_extended_thinking else None,
"finish_reason": finish_reason_str,
"is_blocked_by_safety": is_blocked_by_safety,
"safety_feedback": safety_feedback_details,