feat(openai): Use responses API if model is gpt-5.2-pro (#34306)

This commit is contained in:
Jacob Lee
2025-12-12 07:11:15 -08:00
committed by GitHub
parent bf6a5eb122
commit a528ea1796
2 changed files with 13 additions and 0 deletions

View File

@@ -468,6 +468,12 @@ def _handle_openai_bad_request(e: openai.BadRequestError) -> None:
raise raise
def _model_prefers_responses_api(model_name: str | None) -> bool:
if not model_name:
return False
return "gpt-5.2-pro" in model_name
_BM = TypeVar("_BM", bound=BaseModel) _BM = TypeVar("_BM", bound=BaseModel)
_DictOrPydanticClass: TypeAlias = dict[str, Any] | type[_BM] | type _DictOrPydanticClass: TypeAlias = dict[str, Any] | type[_BM] | type
_DictOrPydantic: TypeAlias = dict | _BM _DictOrPydantic: TypeAlias = dict | _BM
@@ -1391,6 +1397,7 @@ class BaseChatOpenAI(BaseChatModel):
or self.reasoning is not None or self.reasoning is not None
or self.truncation is not None or self.truncation is not None
or self.use_previous_response_id or self.use_previous_response_id
or _model_prefers_responses_api(self.model_name)
): ):
return True return True
return _use_responses_api(payload) return _use_responses_api(payload)

View File

@@ -74,6 +74,7 @@ from langchain_openai.chat_models.base import (
_format_message_content, _format_message_content,
_get_last_messages, _get_last_messages,
_make_computer_call_output_from_message, _make_computer_call_output_from_message,
_model_prefers_responses_api,
_oai_structured_outputs_parser, _oai_structured_outputs_parser,
) )
@@ -3148,3 +3149,8 @@ def test_gpt_5_1_temperature_with_reasoning_effort_none(
messages = [HumanMessage(content="Hello")] messages = [HumanMessage(content="Hello")]
payload = llm._get_request_payload(messages) payload = llm._get_request_payload(messages)
assert "temperature" not in payload assert "temperature" not in payload
def test_model_prefers_responses_api() -> None:
assert _model_prefers_responses_api("gpt-5.2-pro")
assert not _model_prefers_responses_api("gpt-5.1")