fix: gemini 3.0 pro does not currently support medium thinking level, updated to use high
This commit is contained in:
@@ -173,6 +173,15 @@ class GeminiModelProvider(RegistryBackedProviderMixin, ModelProvider):
|
|||||||
# Create contents structure
|
# Create contents structure
|
||||||
contents = [{"parts": parts}]
|
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
|
# Prepare generation config
|
||||||
generation_config = types.GenerateContentConfig(
|
generation_config = types.GenerateContentConfig(
|
||||||
temperature=temperature,
|
temperature=temperature,
|
||||||
@@ -184,12 +193,12 @@ class GeminiModelProvider(RegistryBackedProviderMixin, ModelProvider):
|
|||||||
generation_config.max_output_tokens = max_output_tokens
|
generation_config.max_output_tokens = max_output_tokens
|
||||||
|
|
||||||
# Add thinking configuration for models that support it
|
# 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
|
# Get model's max thinking tokens and calculate actual budget
|
||||||
model_config = capability_map.get(resolved_model_name)
|
model_config = capability_map.get(resolved_model_name)
|
||||||
if model_config and model_config.max_thinking_tokens > 0:
|
if model_config and model_config.max_thinking_tokens > 0:
|
||||||
max_thinking_tokens = model_config.max_thinking_tokens
|
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)
|
generation_config.thinking_config = types.ThinkingConfig(thinking_budget=actual_thinking_budget)
|
||||||
|
|
||||||
# Retry logic with progressive delays
|
# Retry logic with progressive delays
|
||||||
@@ -279,7 +288,7 @@ class GeminiModelProvider(RegistryBackedProviderMixin, ModelProvider):
|
|||||||
friendly_name="Gemini",
|
friendly_name="Gemini",
|
||||||
provider=ProviderType.GOOGLE,
|
provider=ProviderType.GOOGLE,
|
||||||
metadata={
|
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,
|
"finish_reason": finish_reason_str,
|
||||||
"is_blocked_by_safety": is_blocked_by_safety,
|
"is_blocked_by_safety": is_blocked_by_safety,
|
||||||
"safety_feedback": safety_feedback_details,
|
"safety_feedback": safety_feedback_details,
|
||||||
|
|||||||
Reference in New Issue
Block a user