diff --git a/libs/core/langchain_core/language_models/chat_models.py b/libs/core/langchain_core/language_models/chat_models.py index 7e11c491d6f..32f198532e6 100644 --- a/libs/core/langchain_core/language_models/chat_models.py +++ b/libs/core/langchain_core/language_models/chat_models.py @@ -812,9 +812,11 @@ class BaseChatModel(BaseLanguageModel[AIMessage], ABC): ls_params["ls_model_name"] = self.model_name # temperature - if "temperature" in kwargs and isinstance(kwargs["temperature"], float): + if "temperature" in kwargs and isinstance(kwargs["temperature"], (int, float)): ls_params["ls_temperature"] = kwargs["temperature"] - elif hasattr(self, "temperature") and isinstance(self.temperature, float): + elif hasattr(self, "temperature") and isinstance( + self.temperature, (int, float) + ): ls_params["ls_temperature"] = self.temperature # max_tokens diff --git a/libs/core/langchain_core/language_models/llms.py b/libs/core/langchain_core/language_models/llms.py index 5aa287ada8e..fa034675d89 100644 --- a/libs/core/langchain_core/language_models/llms.py +++ b/libs/core/langchain_core/language_models/llms.py @@ -351,9 +351,11 @@ class BaseLLM(BaseLanguageModel[str], ABC): ls_params["ls_model_name"] = self.model_name # temperature - if "temperature" in kwargs and isinstance(kwargs["temperature"], float): + if "temperature" in kwargs and isinstance(kwargs["temperature"], (int, float)): ls_params["ls_temperature"] = kwargs["temperature"] - elif hasattr(self, "temperature") and isinstance(self.temperature, float): + elif hasattr(self, "temperature") and isinstance( + self.temperature, (int, float) + ): ls_params["ls_temperature"] = self.temperature # max_tokens diff --git a/libs/core/tests/unit_tests/language_models/chat_models/test_base.py b/libs/core/tests/unit_tests/language_models/chat_models/test_base.py index eedb5d393a8..5686b1a5b58 100644 --- a/libs/core/tests/unit_tests/language_models/chat_models/test_base.py +++ b/libs/core/tests/unit_tests/language_models/chat_models/test_base.py @@ -1206,6 +1206,13 @@ def test_get_ls_params() -> None: ls_params = llm._get_ls_params(temperature=0.2) assert ls_params["ls_temperature"] == 0.2 + # Test integer temperature values (regression test for issue #35300) + ls_params = llm._get_ls_params(temperature=0) + assert ls_params["ls_temperature"] == 0 + + ls_params = llm._get_ls_params(temperature=1) + assert ls_params["ls_temperature"] == 1 + ls_params = llm._get_ls_params(max_tokens=2048) assert ls_params["ls_max_tokens"] == 2048 diff --git a/libs/core/tests/unit_tests/language_models/llms/test_base.py b/libs/core/tests/unit_tests/language_models/llms/test_base.py index e5547a617a7..7ca52e43394 100644 --- a/libs/core/tests/unit_tests/language_models/llms/test_base.py +++ b/libs/core/tests/unit_tests/language_models/llms/test_base.py @@ -272,6 +272,13 @@ def test_get_ls_params() -> None: ls_params = llm._get_ls_params(temperature=0.2) assert ls_params["ls_temperature"] == 0.2 + # Test integer temperature values (regression test for issue #35300) + ls_params = llm._get_ls_params(temperature=0) + assert ls_params["ls_temperature"] == 0 + + ls_params = llm._get_ls_params(temperature=1) + assert ls_params["ls_temperature"] == 1 + ls_params = llm._get_ls_params(max_tokens=2048) assert ls_params["ls_max_tokens"] == 2048