From c7c254a740924e8e4fd43d02d891b3f8d62c0ed9 Mon Sep 17 00:00:00 2001 From: Felipe Musse Date: Tue, 28 Apr 2026 13:51:42 +0100 Subject: [PATCH] Store flag in model config --- .../vertex_and_google_ai_studio_gemini.py | 11 +- ...odel_prices_and_context_window_backup.json | 62 +++++--- litellm/types/utils.py | 1 + litellm/utils.py | 14 ++ model_prices_and_context_window.json | 134 +++++++----------- 5 files changed, 111 insertions(+), 111 deletions(-) diff --git a/litellm/llms/vertex_ai/gemini/vertex_and_google_ai_studio_gemini.py b/litellm/llms/vertex_ai/gemini/vertex_and_google_ai_studio_gemini.py index c2cec6d9043..06d8d4ec17b 100644 --- a/litellm/llms/vertex_ai/gemini/vertex_and_google_ai_studio_gemini.py +++ b/litellm/llms/vertex_ai/gemini/vertex_and_google_ai_studio_gemini.py @@ -91,6 +91,7 @@ from litellm.utils import ( ModelResponse, is_base64_encoded, supports_reasoning, + supports_thinking_budget_zero, ) from ....utils import _remove_additional_properties, _remove_strict_from_schema @@ -924,11 +925,15 @@ class VertexGeminiConfig(VertexAIBaseConfig, BaseConfig): @staticmethod def _model_supports_thinking_budget_zero(model: Optional[str]) -> bool: - """Only Flash-family Gemini 2.x models accept thinkingBudget=0 to disable thinking. - Pro models reject it with a 400 INVALID_ARGUMENT error.""" + """Returns True if the model accepts thinkingBudget=0 to disable thinking. + Reads from model_prices_and_context_window.json via supports_thinking_budget_zero; + falls back to False (safe default) when the model is unknown.""" if model is None: return False - return "flash" in model.lower() + try: + return supports_thinking_budget_zero(model) + except Exception: + return False @staticmethod def _validate_thinking_config_conflicts( diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 5cccd5f00af..bcac953da08 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -9431,7 +9431,6 @@ "us": 1.1, "fast": 6.0 }, - "supports_max_reasoning_effort": true, "supports_minimal_reasoning_effort": true }, "claude-opus-4-7-20260416": { @@ -9466,7 +9465,6 @@ "us": 1.1, "fast": 6.0 }, - "supports_max_reasoning_effort": true, "supports_minimal_reasoning_effort": true }, "claude-sonnet-4-20250514": { @@ -12006,7 +12004,8 @@ "litellm_provider": "deepinfra", "mode": "chat", "supports_tool_choice": true, - "supports_function_calling": true + "supports_function_calling": true, + "supports_thinking_budget_zero": true }, "deepinfra/google/gemini-2.5-pro": { "max_tokens": 1000000, @@ -14289,7 +14288,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini-2.5-flash-image": { "cache_read_input_token_cost": 3e-08, @@ -14339,7 +14339,8 @@ "supports_vision": true, "supports_web_search": false, "tpm": 8000000, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini-3-pro-image-preview": { "input_cost_per_image": 0.0011, @@ -14561,7 +14562,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini-2.5-flash-lite-preview-09-2025": { "cache_read_input_token_cost": 1e-08, @@ -14611,7 +14613,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini-2.5-flash-preview-09-2025": { "cache_read_input_token_cost": 7.5e-08, @@ -14661,7 +14664,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini-live-2.5-flash-preview-native-audio-09-2025": { "cache_read_input_token_cost": 7.5e-08, @@ -14812,7 +14816,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini-2.5-pro": { "cache_read_input_token_cost": 1.25e-07, @@ -15761,7 +15766,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-image": { "cache_read_input_token_cost": 3e-08, @@ -15817,7 +15823,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini/gemini-3-pro-image-preview": { "input_cost_per_image": 0.0011, @@ -15996,7 +16003,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-lite-preview-09-2025": { "cache_read_input_token_cost": 1e-08, @@ -16048,7 +16056,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-preview-09-2025": { "cache_read_input_token_cost": 7.5e-08, @@ -16100,7 +16109,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini/gemini-flash-latest": { "cache_read_input_token_cost": 7.5e-08, @@ -16257,7 +16267,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-preview-tts": { "input_cost_per_token": 3e-07, @@ -25343,7 +25354,8 @@ "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", "supports_function_calling": true, "supports_response_schema": true, - "supports_vision": true + "supports_vision": true, + "supports_thinking_budget_zero": true }, "oci/google.gemini-2.5-flash-lite": { "input_cost_per_token": 7.5e-08, @@ -25356,7 +25368,8 @@ "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", "supports_function_calling": true, "supports_response_schema": true, - "supports_vision": true + "supports_vision": true, + "supports_thinking_budget_zero": true }, "oci/cohere.embed-english-v3.0": { "input_cost_per_token": 1e-07, @@ -26150,7 +26163,8 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "supports_thinking_budget_zero": true }, "openrouter/google/gemini-2.5-pro": { "input_cost_per_audio_token": 7e-07, @@ -27893,7 +27907,8 @@ "mode": "responses", "supports_web_search": true, "supports_reasoning": false, - "supports_function_calling": true + "supports_function_calling": true, + "supports_thinking_budget_zero": true }, "perplexity/xai/grok-4-1-fast-non-reasoning": { "litellm_provider": "perplexity", @@ -28457,7 +28472,8 @@ "supports_vision": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_response_schema": true + "supports_response_schema": true, + "supports_thinking_budget_zero": true }, "replicate/openai/gpt-oss-120b": { "input_cost_per_token": 1.8e-07, @@ -31136,7 +31152,8 @@ "supports_vision": true, "supports_function_calling": true, "supports_tool_choice": true, - "supports_response_schema": true + "supports_response_schema": true, + "supports_thinking_budget_zero": true }, "vercel_ai_gateway/google/gemini-2.5-pro": { "input_cost_per_token": 2.5e-06, @@ -32645,7 +32662,8 @@ "supports_url_context": true, "supports_vision": true, "supports_web_search": false, - "tpm": 8000000 + "tpm": 8000000, + "supports_thinking_budget_zero": true }, "vertex_ai/gemini-3-pro-image-preview": { "input_cost_per_image": 0.0011, diff --git a/litellm/types/utils.py b/litellm/types/utils.py index a212d56c1ae..a65f4a9905e 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -142,6 +142,7 @@ class ProviderSpecificModelInfo(TypedDict, total=False): supports_minimal_reasoning_effort: Optional[bool] supports_xhigh_reasoning_effort: Optional[bool] supports_max_reasoning_effort: Optional[bool] + supports_thinking_budget_zero: Optional[bool] class SearchContextCostPerQuery(TypedDict, total=False): diff --git a/litellm/utils.py b/litellm/utils.py index e1ad1db63ef..1df751f915f 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -2738,6 +2738,20 @@ def supports_reasoning(model: str, custom_llm_provider: Optional[str] = None) -> ) +def supports_thinking_budget_zero( + model: str, custom_llm_provider: Optional[str] = None +) -> bool: + """ + Check if the model accepts thinkingBudget=0 to disable thinking. + Flash-family Gemini 2.x models support this; Pro models reject it with 400. + """ + return _supports_factory( + model=model, + custom_llm_provider=custom_llm_provider, + key="supports_thinking_budget_zero", + ) + + def supports_native_structured_output( model: str, custom_llm_provider: Optional[str] = None ) -> bool: diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 4d8f3a984f7..1826caddcf0 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -8046,17 +8046,16 @@ }, "bedrock/us-east-1/minimax.minimax-m2.5": { "input_cost_per_token": 3e-07, + "output_cost_per_token": 1.2e-06, "litellm_provider": "bedrock", "max_input_tokens": 1000000, "max_output_tokens": 8192, "max_tokens": 8192, "mode": "chat", - "source": "https://aws.amazon.com/bedrock/pricing/", "supports_function_calling": true, - "supports_reasoning": true, "supports_system_messages": true, "supports_tool_choice": true, - "output_cost_per_token": 1.2e-06 + "source": "https://aws.amazon.com/bedrock/pricing/" }, "bedrock/us-east-1/moonshotai.kimi-k2-thinking": { "input_cost_per_token": 6e-07, @@ -8664,17 +8663,16 @@ }, "bedrock/us-west-2/minimax.minimax-m2.5": { "input_cost_per_token": 3e-07, + "output_cost_per_token": 1.2e-06, "litellm_provider": "bedrock", "max_input_tokens": 1000000, "max_output_tokens": 8192, "max_tokens": 8192, "mode": "chat", - "source": "https://aws.amazon.com/bedrock/pricing/", "supports_function_calling": true, - "supports_reasoning": true, "supports_system_messages": true, "supports_tool_choice": true, - "output_cost_per_token": 1.2e-06 + "source": "https://aws.amazon.com/bedrock/pricing/" }, "bedrock/us-west-2/moonshotai.kimi-k2-thinking": { "input_cost_per_token": 6e-07, @@ -9445,7 +9443,6 @@ "us": 1.1, "fast": 6.0 }, - "supports_max_reasoning_effort": true, "supports_minimal_reasoning_effort": true }, "claude-opus-4-7-20260416": { @@ -9480,7 +9477,6 @@ "us": 1.1, "fast": 6.0 }, - "supports_max_reasoning_effort": true, "supports_minimal_reasoning_effort": true }, "claude-sonnet-4-20250514": { @@ -12020,7 +12016,8 @@ "litellm_provider": "deepinfra", "mode": "chat", "supports_tool_choice": true, - "supports_function_calling": true + "supports_function_calling": true, + "supports_thinking_budget_zero": true }, "deepinfra/google/gemini-2.5-pro": { "max_tokens": 1000000, @@ -14303,7 +14300,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini-2.5-flash-image": { "cache_read_input_token_cost": 3e-08, @@ -14353,7 +14351,8 @@ "supports_vision": true, "supports_web_search": false, "tpm": 8000000, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini-3-pro-image-preview": { "input_cost_per_image": 0.0011, @@ -14575,7 +14574,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini-2.5-flash-lite-preview-09-2025": { "cache_read_input_token_cost": 1e-08, @@ -14625,7 +14625,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini-2.5-flash-preview-09-2025": { "cache_read_input_token_cost": 7.5e-08, @@ -14675,7 +14676,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini-live-2.5-flash-preview-native-audio-09-2025": { "cache_read_input_token_cost": 7.5e-08, @@ -14826,7 +14828,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini-2.5-pro": { "cache_read_input_token_cost": 1.25e-07, @@ -15775,7 +15778,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-image": { "cache_read_input_token_cost": 3e-08, @@ -15831,7 +15835,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini/gemini-3-pro-image-preview": { "input_cost_per_image": 0.0011, @@ -16010,7 +16015,8 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true + "supports_service_tier": true, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-lite-preview-09-2025": { "cache_read_input_token_cost": 1e-08, @@ -16062,7 +16068,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-preview-09-2025": { "cache_read_input_token_cost": 7.5e-08, @@ -16114,7 +16121,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini/gemini-flash-latest": { "cache_read_input_token_cost": 7.5e-08, @@ -16271,7 +16279,8 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - } + }, + "supports_thinking_budget_zero": true }, "gemini/gemini-2.5-flash-preview-tts": { "input_cost_per_token": 3e-07, @@ -22697,14 +22706,13 @@ }, "minimax.minimax-m2.5": { "input_cost_per_token": 3e-07, + "output_cost_per_token": 1.2e-06, "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 8192, "max_tokens": 8192, "mode": "chat", - "output_cost_per_token": 1.2e-06, "supports_function_calling": true, - "supports_reasoning": true, "supports_system_messages": true, "supports_tool_choice": true, "source": "https://aws.amazon.com/bedrock/pricing/" @@ -25349,7 +25357,8 @@ "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", "supports_function_calling": true, "supports_response_schema": true, - "supports_vision": true + "supports_vision": true, + "supports_thinking_budget_zero": true }, "oci/google.gemini-2.5-flash-lite": { "input_cost_per_token": 7.5e-08, @@ -25362,7 +25371,8 @@ "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", "supports_function_calling": true, "supports_response_schema": true, - "supports_vision": true + "supports_vision": true, + "supports_thinking_budget_zero": true }, "oci/cohere.embed-english-v3.0": { "input_cost_per_token": 1e-07, @@ -26180,7 +26190,8 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "supports_thinking_budget_zero": true }, "openrouter/google/gemini-2.5-pro": { "input_cost_per_audio_token": 7e-07, @@ -27945,7 +27956,8 @@ "mode": "responses", "supports_web_search": true, "supports_reasoning": false, - "supports_function_calling": true + "supports_function_calling": true, + "supports_thinking_budget_zero": true }, "perplexity/xai/grok-4-1-fast-non-reasoning": { "litellm_provider": "perplexity", @@ -28509,7 +28521,8 @@ "supports_vision": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_response_schema": true + "supports_response_schema": true, + "supports_thinking_budget_zero": true }, "replicate/openai/gpt-oss-120b": { "input_cost_per_token": 1.8e-07, @@ -31190,7 +31203,8 @@ "supports_vision": true, "supports_function_calling": true, "supports_tool_choice": true, - "supports_response_schema": true + "supports_response_schema": true, + "supports_thinking_budget_zero": true }, "vercel_ai_gateway/google/gemini-2.5-pro": { "input_cost_per_token": 2.5e-06, @@ -32699,7 +32713,8 @@ "supports_url_context": true, "supports_vision": true, "supports_web_search": false, - "tpm": 8000000 + "tpm": 8000000, + "supports_thinking_budget_zero": true }, "vertex_ai/gemini-3-pro-image-preview": { "input_cost_per_image": 0.0011, @@ -34758,17 +34773,17 @@ }, "zai.glm-5": { "input_cost_per_token": 1e-06, + "output_cost_per_token": 3.2e-06, "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 3.2e-06, - "source": "https://aws.amazon.com/bedrock/pricing/", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "source": "https://aws.amazon.com/bedrock/pricing/" }, "zai/glm-5": { "cache_creation_input_token_cost": 0, @@ -39551,20 +39566,6 @@ } ] }, - "zai.glm-5": { - "input_cost_per_token": 1e-06, - "output_cost_per_token": 3.2e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "source": "https://aws.amazon.com/bedrock/pricing/" - }, "bedrock/us-east-1/zai.glm-5": { "input_cost_per_token": 1e-06, "output_cost_per_token": 3.2e-06, @@ -39593,45 +39594,6 @@ "supports_tool_choice": true, "source": "https://aws.amazon.com/bedrock/pricing/" }, - "minimax.minimax-m2.5": { - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "source": "https://aws.amazon.com/bedrock/pricing/" - }, - "bedrock/us-east-1/minimax.minimax-m2.5": { - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "source": "https://aws.amazon.com/bedrock/pricing/" - }, - "bedrock/us-west-2/minimax.minimax-m2.5": { - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "source": "https://aws.amazon.com/bedrock/pricing/" - }, "bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 1.5e-06, "cache_read_input_token_cost": 1.2e-07,