From a528ea17965b7cb00ff84c2a5b75009fe5f7daf4 Mon Sep 17 00:00:00 2001 From: Jacob Lee Date: Fri, 12 Dec 2025 07:11:15 -0800 Subject: [PATCH] feat(openai): Use responses API if model is gpt-5.2-pro (#34306) --- libs/partners/openai/langchain_openai/chat_models/base.py | 7 +++++++ .../openai/tests/unit_tests/chat_models/test_base.py | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/libs/partners/openai/langchain_openai/chat_models/base.py b/libs/partners/openai/langchain_openai/chat_models/base.py index 5e21e4d0bcd..4b43236b68f 100644 --- a/libs/partners/openai/langchain_openai/chat_models/base.py +++ b/libs/partners/openai/langchain_openai/chat_models/base.py @@ -468,6 +468,12 @@ def _handle_openai_bad_request(e: openai.BadRequestError) -> None: 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) _DictOrPydanticClass: TypeAlias = dict[str, Any] | type[_BM] | type _DictOrPydantic: TypeAlias = dict | _BM @@ -1391,6 +1397,7 @@ class BaseChatOpenAI(BaseChatModel): or self.reasoning is not None or self.truncation is not None or self.use_previous_response_id + or _model_prefers_responses_api(self.model_name) ): return True return _use_responses_api(payload) diff --git a/libs/partners/openai/tests/unit_tests/chat_models/test_base.py b/libs/partners/openai/tests/unit_tests/chat_models/test_base.py index 54f2f961a33..1cfb0943566 100644 --- a/libs/partners/openai/tests/unit_tests/chat_models/test_base.py +++ b/libs/partners/openai/tests/unit_tests/chat_models/test_base.py @@ -74,6 +74,7 @@ from langchain_openai.chat_models.base import ( _format_message_content, _get_last_messages, _make_computer_call_output_from_message, + _model_prefers_responses_api, _oai_structured_outputs_parser, ) @@ -3148,3 +3149,8 @@ def test_gpt_5_1_temperature_with_reasoning_effort_none( messages = [HumanMessage(content="Hello")] payload = llm._get_request_payload(messages) 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")