From 6ec49ea7ddfa3c36139c9d28ca6521b1656c84b7 Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Fri, 21 Aug 2026 18:25:39 -0700 Subject: [PATCH] fix(map): stop claiming max reasoning effort for gpt-5.6 on chat completions /v1/chat/completions rejects reasoning_effort=max on every gpt-5.6 snapshot with "Unsupported value: 'reasoning_effort' does not support 'max' with this model. Supported values are: 'none', 'low', 'medium', 'high', and 'xhigh'", so the 16 gpt-5.6 entries that asserted supports_max_reasoning_effort had model groups advertising a level routing would always get a 400 for. The flag reads as chat-surface capability everywhere else in the map: before this branch no openai or azure entry carried it at all, only anthropic-family ones whose chat endpoint really does take max. Dropping it lines the gpt-5.6 advertisement up with what the endpoint accepts and lets the chat gate refuse the level with our own error instead of forwarding it into a provider 400. /v1/responses does accept max for gpt-5.6 and is unaffected: the responses config gates none alone, so the cursor thinking-max variant keeps resolving. --- ...odel_prices_and_context_window_backup.json | 48 +++++++------------ model_prices_and_context_window.json | 48 +++++++------------ .../llms/openai/test_gpt5_transformation.py | 30 ++++++++++-- 3 files changed, 57 insertions(+), 69 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index e6c76983e91..c36018feb9d 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -6639,8 +6639,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.6-sol": { "cache_read_input_token_cost": 5e-07, @@ -6691,8 +6690,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.6-terra": { "cache_read_input_token_cost": 2e-07, @@ -6743,8 +6741,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.6-luna": { "cache_read_input_token_cost": 2e-08, @@ -6795,8 +6792,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6": { "cache_read_input_token_cost": 5.5e-07, @@ -6843,8 +6839,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6-sol": { "cache_read_input_token_cost": 5.5e-07, @@ -6892,8 +6887,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6-terra": { "cache_read_input_token_cost": 2.2e-07, @@ -6941,8 +6935,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6-luna": { "cache_read_input_token_cost": 2.2e-08, @@ -6990,8 +6983,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6": { "cache_read_input_token_cost": 5.5e-07, @@ -7038,8 +7030,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6-sol": { "cache_read_input_token_cost": 5.5e-07, @@ -7087,8 +7078,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6-terra": { "cache_read_input_token_cost": 2.2e-07, @@ -7136,8 +7126,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6-luna": { "cache_read_input_token_cost": 2.2e-08, @@ -7185,8 +7174,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.5": { "deprecation_date": "2027-10-26", @@ -26417,8 +26405,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-sol": { "cache_creation_input_token_cost": 5e-06, @@ -26482,8 +26469,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-terra": { "cache_creation_input_token_cost": 2.5e-06, @@ -26546,8 +26532,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-luna": { "cache_creation_input_token_cost": 2.5e-07, @@ -26610,8 +26595,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-cyber": { "cache_creation_input_token_cost": 1.5625e-05, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index e6c76983e91..c36018feb9d 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -6639,8 +6639,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.6-sol": { "cache_read_input_token_cost": 5e-07, @@ -6691,8 +6690,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.6-terra": { "cache_read_input_token_cost": 2e-07, @@ -6743,8 +6741,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.6-luna": { "cache_read_input_token_cost": 2e-08, @@ -6795,8 +6792,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6": { "cache_read_input_token_cost": 5.5e-07, @@ -6843,8 +6839,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6-sol": { "cache_read_input_token_cost": 5.5e-07, @@ -6892,8 +6887,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6-terra": { "cache_read_input_token_cost": 2.2e-07, @@ -6941,8 +6935,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/us/gpt-5.6-luna": { "cache_read_input_token_cost": 2.2e-08, @@ -6990,8 +6983,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6": { "cache_read_input_token_cost": 5.5e-07, @@ -7038,8 +7030,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6-sol": { "cache_read_input_token_cost": 5.5e-07, @@ -7087,8 +7078,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6-terra": { "cache_read_input_token_cost": 2.2e-07, @@ -7136,8 +7126,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/eu/gpt-5.6-luna": { "cache_read_input_token_cost": 2.2e-08, @@ -7185,8 +7174,7 @@ "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "supports_max_reasoning_effort": true + "supports_minimal_reasoning_effort": false }, "azure/gpt-5.5": { "deprecation_date": "2027-10-26", @@ -26417,8 +26405,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-sol": { "cache_creation_input_token_cost": 5e-06, @@ -26482,8 +26469,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-terra": { "cache_creation_input_token_cost": 2.5e-06, @@ -26546,8 +26532,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-luna": { "cache_creation_input_token_cost": 2.5e-07, @@ -26610,8 +26595,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_xhigh_reasoning_effort": true }, "gpt-5.6-cyber": { "cache_creation_input_token_cost": 1.5625e-05, diff --git a/tests/test_litellm/llms/openai/test_gpt5_transformation.py b/tests/test_litellm/llms/openai/test_gpt5_transformation.py index 5af767f0a86..f2fc7934164 100644 --- a/tests/test_litellm/llms/openai/test_gpt5_transformation.py +++ b/tests/test_litellm/llms/openai/test_gpt5_transformation.py @@ -1311,14 +1311,34 @@ def test_responses_gpt54_allow_temperature_effort_none( assert params["temperature"] == 0.7 -def test_gpt5_6_allows_reasoning_effort_max(config: OpenAIConfig): - params = config.map_openai_params( - non_default_params={"reasoning_effort": "max"}, - optional_params={}, +@pytest.mark.parametrize("model", ["gpt-5.6", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"]) +def test_gpt5_6_rejects_reasoning_effort_max_on_chat_completions(config: OpenAIConfig, model: str): + """/v1/chat/completions answers max with "Unsupported value: 'reasoning_effort' does not support + 'max' with this model. Supported values are: 'none', 'low', 'medium', 'high', and 'xhigh'" on + every gpt-5.6 snapshot, so no gpt-5.6 map entry asserts supports_max_reasoning_effort and the + level is refused here instead of being forwarded into a provider 400.""" + with pytest.raises(litellm.utils.UnsupportedParamsError): + config.map_openai_params( + non_default_params={"reasoning_effort": "max"}, + optional_params={}, + model=model, + drop_params=False, + ) + + +def test_gpt5_6_keeps_reasoning_effort_max_on_the_responses_api( + responses_config: OpenAIResponsesAPIConfig, +): + """/v1/responses accepts max for gpt-5.6, and that is the surface the cursor thinking-max + variant resolves onto, so the responses path keeps carrying the level chat refuses.""" + params = responses_config.map_openai_params( + response_api_optional_params=ResponsesAPIOptionalRequestParams( + reasoning={"effort": "max"}, + ), model="gpt-5.6", drop_params=False, ) - assert params["reasoning_effort"] == "max" + assert params["reasoning"] == {"effort": "max"} def test_gpt5_6_rejects_reasoning_effort_ultra_until_the_map_opts_in(config: OpenAIConfig):