fix(azure): drop unsupported gpt-5.5 temperature

This commit is contained in:
Devin AI 2026-07-14 07:07:47 +00:00
parent b200d664ee
commit f81732bd5b
2 changed files with 88 additions and 0 deletions

View file

@ -18,6 +18,11 @@ class AzureOpenAIGPT5Config(AzureOpenAIConfig, OpenAIGPT5Config):
GPT5_SERIES_ROUTE = "gpt5_series/"
@classmethod
def _rejects_non_default_temperature(cls, model: str) -> bool:
model_name = model.split("/")[-1]
return model_name.startswith(("gpt-5.5", "gpt-5.6"))
@classmethod
def _supports_reasoning_effort_level(cls, model: str, level: str) -> bool:
"""Override to handle gpt5_series/ prefix used for Azure routing.
@ -93,6 +98,20 @@ class AzureOpenAIGPT5Config(AzureOpenAIConfig, OpenAIGPT5Config):
drop_params: bool,
api_version: str = "",
) -> dict:
temperature_value = non_default_params.get("temperature")
if self._rejects_non_default_temperature(model) and temperature_value not in (None, 1):
if litellm.drop_params is True or drop_params is True:
non_default_params = {key: value for key, value in non_default_params.items() if key != "temperature"}
else:
raise UnsupportedParamsError(
status_code=400,
message=(
f"Azure OpenAI {model} does not support temperature={temperature_value}. "
"Only temperature=1 is supported. "
"To drop unsupported params set `litellm.drop_params = True`"
),
)
reasoning_effort_value = non_default_params.get("reasoning_effort") or optional_params.get("reasoning_effort")
effective_effort = _get_effort_level(reasoning_effort_value)

View file

@ -50,6 +50,75 @@ def test_azure_gpt5_temperature_error(config: AzureOpenAIGPT5Config):
)
@pytest.mark.parametrize(
"model",
[
"azure/gpt-5.5",
"azure/gpt-5.5-2026-04-23",
"azure/gpt-5.6",
"azure/gpt-5.6-luna",
"azure/gpt-5.6-sol",
"azure/gpt-5.6-terra",
"gpt5_series/gpt-5.6-luna",
],
)
def test_azure_gpt5_5_and_5_6_non_default_temperature(
config: AzureOpenAIGPT5Config,
model: str,
monkeypatch: pytest.MonkeyPatch,
):
assert (
config.map_openai_params(
non_default_params={"temperature": 0.3},
optional_params={},
model=model,
drop_params=True,
)
== {}
)
monkeypatch.setattr(litellm, "drop_params", True)
assert (
config.map_openai_params(
non_default_params={"temperature": 0.3},
optional_params={},
model=model,
drop_params=False,
)
== {}
)
monkeypatch.setattr(litellm, "drop_params", False)
with pytest.raises(litellm.utils.UnsupportedParamsError):
config.map_openai_params(
non_default_params={"temperature": 0.3},
optional_params={},
model=model,
drop_params=False,
)
@pytest.mark.parametrize(
("model", "temperature"),
[
("azure/gpt-5.4", 0.3),
("azure/gpt-5.5", 1),
("azure/gpt-5.6-sol", 1.0),
],
)
def test_azure_gpt5_temperature_supported_values_unchanged(
config: AzureOpenAIGPT5Config,
model: str,
temperature: float,
):
assert config.map_openai_params(
non_default_params={"temperature": temperature},
optional_params={},
model=model,
drop_params=False,
)["temperature"] == temperature
def test_azure_gpt5_series_transform_request(config: AzureOpenAIGPT5Config):
request = config.transform_request(
model="gpt5_series/gpt-5",