fix: cover o1 max-completion token fallback

Maintainer edit: keep the GPT-5/o-series fallback on slug-boundary matching so unrelated model names are not caught by substring checks, and include o1 alongside o3/o4 because it is also an o-series chat model.
This commit is contained in:
chengyongru 2026-06-10 11:38:11 +08:00 committed by Xubin Ren
parent a779e7c29e
commit 99f7f371fa
2 changed files with 6 additions and 2 deletions

View File

@ -94,10 +94,10 @@ def _model_slug(model_name: str) -> str:
def _requires_max_completion_tokens(model_name: str) -> bool: def _requires_max_completion_tokens(model_name: str) -> bool:
"""Return True for models that reject ``max_tokens`` (GPT-5 family, o3/o4).""" """Return True for models that reject ``max_tokens`` (GPT-5 family, o-series)."""
slug = _model_slug(model_name) slug = _model_slug(model_name)
return "gpt-5" in slug or any( return "gpt-5" in slug or any(
slug == p or slug.startswith((p + "-", p + ".")) for p in ("o3", "o4") slug == p or slug.startswith((p + "-", p + ".")) for p in ("o1", "o3", "o4")
) )

View File

@ -933,8 +933,12 @@ def test_openai_compat_build_kwargs_uses_gpt5_safe_parameters() -> None:
("model_name", "expected_key"), ("model_name", "expected_key"),
[ [
("gpt-5.4", "max_completion_tokens"), ("gpt-5.4", "max_completion_tokens"),
("o1-mini", "max_completion_tokens"),
("o3-mini", "max_completion_tokens"), ("o3-mini", "max_completion_tokens"),
("o4-mini", "max_completion_tokens"),
("gpt-4", "max_tokens"), ("gpt-4", "max_tokens"),
("foo3-mini", "max_tokens"),
("foo4-mini", "max_tokens"),
], ],
) )
def test_openai_compat_build_kwargs_max_completion_tokens_by_model_name( def test_openai_compat_build_kwargs_max_completion_tokens_by_model_name(