fix(openai): update responses API model detection for pro and codex models (#35594)

This commit is contained in:
Mohammad Mohtashim
2026-03-09 18:20:20 +05:00
committed by GitHub
parent f838c78788
commit 3af0bc0141
2 changed files with 24 additions and 2 deletions

View File

@@ -533,10 +533,17 @@ def _handle_openai_api_error(e: openai.APIError) -> None:
raise
_RESPONSES_API_ONLY_PREFIXES = (
"gpt-5-pro",
"gpt-5.2-pro",
"gpt-5.4-pro",
)
def _model_prefers_responses_api(model_name: str | None) -> bool:
if not model_name:
return False
return "gpt-5.2-pro" in model_name or "codex" in model_name
return model_name.startswith(_RESPONSES_API_ONLY_PREFIXES) or "codex" in model_name
_BM = TypeVar("_BM", bound=BaseModel)

View File

@@ -3274,13 +3274,28 @@ def test_gpt_5_1_temperature_with_reasoning_effort_none(
def test_model_prefers_responses_api() -> None:
# Pro models (with and without date snapshots): Responses API only
assert _model_prefers_responses_api("gpt-5-pro")
assert _model_prefers_responses_api("gpt-5-pro-2025-10-06")
assert _model_prefers_responses_api("gpt-5.2-pro")
assert _model_prefers_responses_api("gpt-5.2-pro-2025-12-11")
assert _model_prefers_responses_api("gpt-5.4-pro")
assert _model_prefers_responses_api("gpt-5.4-pro-2026-03-05")
# Codex models: Responses API only
assert _model_prefers_responses_api("gpt-5.3-codex")
assert _model_prefers_responses_api("gpt-5.2-codex")
assert _model_prefers_responses_api("gpt-5.1-codex")
assert _model_prefers_responses_api("gpt-5.1-codex-max")
assert _model_prefers_responses_api("gpt-5.1-codex-mini")
assert _model_prefers_responses_api("gpt-5-codex")
assert not _model_prefers_responses_api("gpt-5.1")
assert _model_prefers_responses_api("codex-mini-latest")
# These should not match
assert not _model_prefers_responses_api("gpt-5")
assert not _model_prefers_responses_api("gpt-5.1")
assert not _model_prefers_responses_api("gpt-5.4")
assert not _model_prefers_responses_api("o3-pro")
assert not _model_prefers_responses_api("gpt-4.1")
assert not _model_prefers_responses_api(None)
def test_openai_structured_output_refusal_handling_responses_api() -> None: