mirror of
https://github.com/BerriAI/litellm.git
synced 2026-08-28 05:25:59 +00:00
fix: keep ultra plumbed but unasserted, and stop the bridge forwarding default
This commit is contained in:
parent
764a112d68
commit
a5dd020023
6 changed files with 52 additions and 73 deletions
|
|
@ -1114,8 +1114,9 @@ class LiteLLMResponsesTransformationHandler(CompletionTransformationBridge):
|
|||
)
|
||||
|
||||
# Level-agnostic: providers own effort validation, so an unknown level (max, ultra, future
|
||||
# ones) passes through instead of being silently dropped here.
|
||||
if reasoning_effort:
|
||||
# ones) passes through instead of being silently dropped here. "default" means no override,
|
||||
# so it maps to nothing rather than reaching a provider as a literal effort value.
|
||||
if reasoning_effort and reasoning_effort != "default":
|
||||
return (
|
||||
Reasoning(effort=reasoning_effort, summary="detailed")
|
||||
if auto_summary_enabled
|
||||
|
|
|
|||
|
|
@ -6640,8 +6640,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.6-sol": {
|
||||
"cache_read_input_token_cost": 5e-07,
|
||||
|
|
@ -6693,8 +6692,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.6-terra": {
|
||||
"cache_read_input_token_cost": 2e-07,
|
||||
|
|
@ -6746,8 +6744,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.6-luna": {
|
||||
"cache_read_input_token_cost": 2e-08,
|
||||
|
|
@ -6799,8 +6796,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -6848,8 +6844,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6-sol": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -6898,8 +6893,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6-terra": {
|
||||
"cache_read_input_token_cost": 2.2e-07,
|
||||
|
|
@ -6948,8 +6942,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6-luna": {
|
||||
"cache_read_input_token_cost": 2.2e-08,
|
||||
|
|
@ -6998,8 +6991,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -7047,8 +7039,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6-sol": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -7097,8 +7088,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6-terra": {
|
||||
"cache_read_input_token_cost": 2.2e-07,
|
||||
|
|
@ -7147,8 +7137,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6-luna": {
|
||||
"cache_read_input_token_cost": 2.2e-08,
|
||||
|
|
@ -7197,8 +7186,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.5": {
|
||||
"deprecation_date": "2027-10-26",
|
||||
|
|
@ -26430,8 +26418,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-sol": {
|
||||
"cache_creation_input_token_cost": 5e-06,
|
||||
|
|
@ -26496,8 +26483,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-terra": {
|
||||
"cache_creation_input_token_cost": 2.5e-06,
|
||||
|
|
@ -26561,8 +26547,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-luna": {
|
||||
"cache_creation_input_token_cost": 2.5e-07,
|
||||
|
|
@ -26626,8 +26611,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-cyber": {
|
||||
"cache_creation_input_token_cost": 1.5625e-05,
|
||||
|
|
|
|||
|
|
@ -6640,8 +6640,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.6-sol": {
|
||||
"cache_read_input_token_cost": 5e-07,
|
||||
|
|
@ -6693,8 +6692,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.6-terra": {
|
||||
"cache_read_input_token_cost": 2e-07,
|
||||
|
|
@ -6746,8 +6744,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.6-luna": {
|
||||
"cache_read_input_token_cost": 2e-08,
|
||||
|
|
@ -6799,8 +6796,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -6848,8 +6844,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6-sol": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -6898,8 +6893,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6-terra": {
|
||||
"cache_read_input_token_cost": 2.2e-07,
|
||||
|
|
@ -6948,8 +6942,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/us/gpt-5.6-luna": {
|
||||
"cache_read_input_token_cost": 2.2e-08,
|
||||
|
|
@ -6998,8 +6991,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -7047,8 +7039,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6-sol": {
|
||||
"cache_read_input_token_cost": 5.5e-07,
|
||||
|
|
@ -7097,8 +7088,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6-terra": {
|
||||
"cache_read_input_token_cost": 2.2e-07,
|
||||
|
|
@ -7147,8 +7137,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/eu/gpt-5.6-luna": {
|
||||
"cache_read_input_token_cost": 2.2e-08,
|
||||
|
|
@ -7197,8 +7186,7 @@
|
|||
"supports_none_reasoning_effort": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_minimal_reasoning_effort": false,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"azure/gpt-5.5": {
|
||||
"deprecation_date": "2027-10-26",
|
||||
|
|
@ -26430,8 +26418,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-sol": {
|
||||
"cache_creation_input_token_cost": 5e-06,
|
||||
|
|
@ -26496,8 +26483,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-terra": {
|
||||
"cache_creation_input_token_cost": 2.5e-06,
|
||||
|
|
@ -26561,8 +26547,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-luna": {
|
||||
"cache_creation_input_token_cost": 2.5e-07,
|
||||
|
|
@ -26626,8 +26611,7 @@
|
|||
"supports_vision": true,
|
||||
"supports_web_search": true,
|
||||
"supports_xhigh_reasoning_effort": true,
|
||||
"supports_max_reasoning_effort": true,
|
||||
"supports_ultra_reasoning_effort": true
|
||||
"supports_max_reasoning_effort": true
|
||||
},
|
||||
"gpt-5.6-cyber": {
|
||||
"cache_creation_input_token_cost": 1.5625e-05,
|
||||
|
|
|
|||
|
|
@ -702,9 +702,6 @@
|
|||
"supports_tool_search": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"supports_ultra_reasoning_effort": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"supports_url_context": {
|
||||
"type": "boolean"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1593,6 +1593,7 @@ def test_map_reasoning_effort_adds_summary_detailed(monkeypatch):
|
|||
result_passthrough = handler._map_reasoning_effort(effort)
|
||||
assert result_passthrough == Reasoning(effort=effort)
|
||||
assert handler._map_reasoning_effort("") is None
|
||||
assert handler._map_reasoning_effort("default") is None
|
||||
print("✓ Unenumerated reasoning_effort levels pass through to the provider")
|
||||
|
||||
print(
|
||||
|
|
|
|||
|
|
@ -1311,15 +1311,27 @@ def test_responses_gpt54_allow_temperature_effort_none(
|
|||
assert params["temperature"] == 0.7
|
||||
|
||||
|
||||
@pytest.mark.parametrize("effort", ["max", "ultra"])
|
||||
def test_gpt5_6_allows_opt_in_reasoning_efforts(config: OpenAIConfig, effort: str):
|
||||
def test_gpt5_6_allows_reasoning_effort_max(config: OpenAIConfig):
|
||||
params = config.map_openai_params(
|
||||
non_default_params={"reasoning_effort": effort},
|
||||
non_default_params={"reasoning_effort": "max"},
|
||||
optional_params={},
|
||||
model="gpt-5.6",
|
||||
drop_params=False,
|
||||
)
|
||||
assert params["reasoning_effort"] == effort
|
||||
assert params["reasoning_effort"] == "max"
|
||||
|
||||
|
||||
def test_gpt5_6_rejects_reasoning_effort_ultra_until_the_map_opts_in(config: OpenAIConfig):
|
||||
# ultra is plumbed as an opt-in level but no map entry asserts it: OpenAI's model guidance
|
||||
# documents effort values only up to max, and the builder guide frames ultra as multi-agent
|
||||
# orchestration. A verified supports_ultra_reasoning_effort flag lights this up with no code.
|
||||
with pytest.raises(litellm.utils.UnsupportedParamsError):
|
||||
config.map_openai_params(
|
||||
non_default_params={"reasoning_effort": "ultra"},
|
||||
optional_params={},
|
||||
model="gpt-5.6",
|
||||
drop_params=False,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("effort", ["max", "ultra"])
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue