mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
feat(openai): Use responses API if model is gpt-5.2-pro (#34306)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user