fix(providers): use max_completion_tokens for gpt-5/o-series on flagless specs (#4261)
This commit is contained in:
@@ -929,6 +929,43 @@ def test_openai_compat_build_kwargs_uses_gpt5_safe_parameters() -> None:
|
||||
assert "temperature" not in kwargs
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("model_name", "expected_key"),
|
||||
[
|
||||
("gpt-5.4", "max_completion_tokens"),
|
||||
("o3-mini", "max_completion_tokens"),
|
||||
("gpt-4", "max_tokens"),
|
||||
],
|
||||
)
|
||||
def test_openai_compat_build_kwargs_max_completion_tokens_by_model_name(
|
||||
model_name: str,
|
||||
expected_key: str,
|
||||
) -> None:
|
||||
spec = find_by_name("custom")
|
||||
with patch("nanobot.providers.openai_compat_provider.AsyncOpenAI"):
|
||||
provider = OpenAICompatProvider(
|
||||
api_key="sk-test-key",
|
||||
default_model=model_name,
|
||||
spec=spec,
|
||||
)
|
||||
|
||||
kwargs = provider._build_kwargs(
|
||||
messages=[{"role": "user", "content": "hello"}],
|
||||
tools=None,
|
||||
model=model_name,
|
||||
max_tokens=2048,
|
||||
temperature=0.7,
|
||||
reasoning_effort=None,
|
||||
tool_choice=None,
|
||||
)
|
||||
|
||||
other_key = (
|
||||
"max_tokens" if expected_key == "max_completion_tokens" else "max_completion_tokens"
|
||||
)
|
||||
assert kwargs[expected_key] == 2048
|
||||
assert other_key not in kwargs
|
||||
|
||||
|
||||
def test_openai_compat_preserves_message_level_reasoning_fields() -> None:
|
||||
with patch("nanobot.providers.openai_compat_provider.AsyncOpenAI"):
|
||||
provider = OpenAICompatProvider()
|
||||
|
||||
Reference in New Issue
Block a user