From 82aa5ac8a5734162d16ecb9f8eb90b3ff9156739 Mon Sep 17 00:00:00 2001 From: Chester Curme Date: Thu, 27 Feb 2025 12:10:37 -0500 Subject: [PATCH] update validators --- .../langchain_openai/chat_models/base.py | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/libs/partners/openai/langchain_openai/chat_models/base.py b/libs/partners/openai/langchain_openai/chat_models/base.py index e40c5bf98d1..eb559c9521d 100644 --- a/libs/partners/openai/langchain_openai/chat_models/base.py +++ b/libs/partners/openai/langchain_openai/chat_models/base.py @@ -518,10 +518,29 @@ class BaseChatOpenAI(BaseChatModel): @model_validator(mode="before") @classmethod def validate_temperature(cls, values: Dict[str, Any]) -> Any: - """Currently o1 models only allow temperature=1.""" + """Currently o-series only allow temperature=1.""" model = values.get("model_name") or values.get("model") or "" - if model.startswith("o1") and "temperature" not in values: - values["temperature"] = 1 + if re.match(r"^o\d", model) and values.get("temperature") not in (None, 1): + temperature = values.get("temperature") + warnings.warn( + f"Received invalid temperature value of {temperature} " + f"for model {model}. Defaulting to null." + ) + values["temperature"] = None + return values + + @model_validator(mode="before") + @classmethod + def validate_reasoning_effort(cls, values: Dict[str, Any]) -> Any: + """Currently only o-series models support reasoning_effort.""" + model = values.get("model_name") or values.get("model") or "" + if not re.match(r"^o\d", model) and values.get("reasoning_effort") is not None: + reasoning_effort = values.get("reasoning_effort") + warnings.warn( + f"Reasoning effort is not supported for model '{model}'. Defaulting " + "to null." + ) + values["reasoning_effort"] = None return values @model_validator(mode="after")