fix(providers): omit temperature for sonnet 5

Add sonnet-5 to the Anthropic omit-temperature model families and cover adaptive, enabled, and non-thinking request paths.

Fixes #4683
This commit is contained in:
Hamb_y
2026-07-03 15:48:46 +08:00
committed by GitHub
parent b19a744110
commit 00cc0da530
2 changed files with 22 additions and 2 deletions
+4 -2
View File
@@ -545,10 +545,12 @@ class AnthropicProvider(LLMProvider):
max_tokens = max(1, max_tokens)
thinking_enabled = bool(reasoning_effort) and reasoning_effort.lower() != "none"
# Several Anthropic models (opus-4-7, opus-4-8, fable) deprecated the
# Several Anthropic models (opus-4-7, opus-4-8, sonnet-5, fable) deprecated the
# `temperature` parameter — the API returns 400 if it is present.
_model_lower = model_name.lower()
omit_temperature = any(m in _model_lower for m in ("opus-4-7", "opus-4-8", "fable"))
omit_temperature = any(
m in _model_lower for m in ("opus-4-7", "opus-4-8", "sonnet-5", "fable")
)
kwargs: dict[str, Any] = {
"model": model_name,
@@ -115,6 +115,24 @@ def test_fable_omits_temperature_none() -> None:
assert "temperature" not in kw
def test_sonnet_5_omits_temperature_adaptive() -> None:
kw = _build(_make_provider("claude-sonnet-5"), "adaptive")
assert "temperature" not in kw
assert kw["thinking"] == {"type": "adaptive"}
def test_sonnet_5_omits_temperature_enabled() -> None:
kw = _build(_make_provider("claude-sonnet-5"), "high", max_tokens=4096)
assert "temperature" not in kw
assert kw["thinking"]["type"] == "enabled"
def test_sonnet_5_omits_temperature_none() -> None:
kw = _build(_make_provider("anthropic/claude-sonnet-5"), None)
assert "temperature" not in kw
assert "thinking" not in kw
def test_ordinary_model_sends_temperature() -> None:
kw = _build(_make_provider("claude-sonnet-4-6"), None)
assert kw["temperature"] == 0.7