mirror of
https://github.com/tiennm99/litellm.git
synced 2026-08-08 12:24:04 +00:00
address greptile review: remove unused import, normalize model lookup, add xhigh tests
- Remove unused _get_model_info_helper import - Normalize model via get_llm_provider in _is_reasoning_effort_level_explicitly_disabled so provider-prefixed names (openai/gpt-5.4-mini) resolve correctly - Add test_gpt5_4_mini_allows_reasoning_effort_xhigh - Add test_gpt5_4_nano_allows_reasoning_effort_xhigh - Add test_gpt5_4_mini_provider_prefixed_rejects_minimal - Extend test_gpt5_minimal_explicitly_disabled_check for openai/gpt-5.4-mini
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
from typing import Optional, Union
|
||||
|
||||
import litellm
|
||||
from litellm.utils import _get_model_cost_key, _get_model_info_helper, _supports_factory
|
||||
from litellm.utils import _get_model_cost_key, _supports_factory
|
||||
|
||||
from .gpt_transformation import OpenAIGPTConfig
|
||||
|
||||
@@ -125,11 +125,16 @@ class OpenAIGPT5Config(OpenAIGPTConfig):
|
||||
supported (i.e. this method returns False = not disabled).
|
||||
|
||||
Use this for opt-out checks where unknown models should be allowed through.
|
||||
Normalizes the model via get_llm_provider so provider-prefixed names
|
||||
(e.g. openai/gpt-5.4-mini) resolve correctly.
|
||||
"""
|
||||
try:
|
||||
normalized_model, _, _, _ = litellm.get_llm_provider(
|
||||
model=model, custom_llm_provider=None
|
||||
)
|
||||
key = f"supports_{level}_reasoning_effort"
|
||||
cost_key = _get_model_cost_key(model)
|
||||
entry = litellm.model_cost.get(cost_key or model) or {}
|
||||
cost_key = _get_model_cost_key(normalized_model)
|
||||
entry = litellm.model_cost.get(cost_key or normalized_model) or {}
|
||||
val = entry.get(key)
|
||||
return val is False
|
||||
except Exception:
|
||||
|
||||
@@ -324,6 +324,28 @@ def test_gpt5_4_pro_allows_reasoning_effort_xhigh(config: OpenAIConfig):
|
||||
assert params["reasoning_effort"] == "xhigh"
|
||||
|
||||
|
||||
def test_gpt5_4_mini_allows_reasoning_effort_xhigh(config: OpenAIConfig):
|
||||
"""gpt-5.4-mini supports reasoning_effort='xhigh'."""
|
||||
params = config.map_openai_params(
|
||||
non_default_params={"reasoning_effort": "xhigh"},
|
||||
optional_params={},
|
||||
model="gpt-5.4-mini",
|
||||
drop_params=False,
|
||||
)
|
||||
assert params["reasoning_effort"] == "xhigh"
|
||||
|
||||
|
||||
def test_gpt5_4_nano_allows_reasoning_effort_xhigh(config: OpenAIConfig):
|
||||
"""gpt-5.4-nano supports reasoning_effort='xhigh'."""
|
||||
params = config.map_openai_params(
|
||||
non_default_params={"reasoning_effort": "xhigh"},
|
||||
optional_params={},
|
||||
model="gpt-5.4-nano",
|
||||
drop_params=False,
|
||||
)
|
||||
assert params["reasoning_effort"] == "xhigh"
|
||||
|
||||
|
||||
def test_gpt5_4_allows_reasoning_effort_minimal(config: OpenAIConfig):
|
||||
"""gpt-5.4 supports reasoning_effort='minimal'."""
|
||||
params = config.map_openai_params(
|
||||
@@ -368,6 +390,17 @@ def test_gpt5_4_nano_rejects_reasoning_effort_minimal(config: OpenAIConfig):
|
||||
)
|
||||
|
||||
|
||||
def test_gpt5_4_mini_provider_prefixed_rejects_minimal(config: OpenAIConfig):
|
||||
"""openai/gpt-5.4-mini correctly rejects minimal (model lookup normalizes prefix)."""
|
||||
with pytest.raises(litellm.utils.UnsupportedParamsError):
|
||||
config.map_openai_params(
|
||||
non_default_params={"reasoning_effort": "minimal"},
|
||||
optional_params={},
|
||||
model="openai/gpt-5.4-mini",
|
||||
drop_params=False,
|
||||
)
|
||||
|
||||
|
||||
def test_gpt5_drops_reasoning_effort_minimal_when_requested(config: OpenAIConfig):
|
||||
"""reasoning_effort='minimal' is dropped for unsupported models when drop_params=True."""
|
||||
params = config.map_openai_params(
|
||||
@@ -414,6 +447,7 @@ def test_gpt5_minimal_explicitly_disabled_check(gpt5_config: OpenAIGPT5Config):
|
||||
|
||||
Models with supports_minimal_reasoning_effort=false → disabled.
|
||||
Models with supports_minimal_reasoning_effort=true (or missing) → not disabled.
|
||||
Provider-prefixed models (openai/gpt-5.4-mini) are normalized before lookup.
|
||||
"""
|
||||
assert gpt5_config._is_reasoning_effort_level_explicitly_disabled(
|
||||
"gpt-5.4-mini", "minimal"
|
||||
@@ -421,6 +455,9 @@ def test_gpt5_minimal_explicitly_disabled_check(gpt5_config: OpenAIGPT5Config):
|
||||
assert gpt5_config._is_reasoning_effort_level_explicitly_disabled(
|
||||
"gpt-5.4-nano", "minimal"
|
||||
)
|
||||
assert gpt5_config._is_reasoning_effort_level_explicitly_disabled(
|
||||
"openai/gpt-5.4-mini", "minimal"
|
||||
)
|
||||
assert not gpt5_config._is_reasoning_effort_level_explicitly_disabled(
|
||||
"gpt-5.4", "minimal"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user