From 3686bcbd966ff1ef13e5fdbde28aa0e630ddd5c4 Mon Sep 17 00:00:00 2001 From: Shivangi Sharma <132820332+Shivangisharma4@users.noreply.github.com> Date: Thu, 19 Feb 2026 05:00:02 +0530 Subject: [PATCH] fix(core): accept int temperature in _get_ls_params for LangSmith tracing (#35302) --- libs/core/langchain_core/language_models/chat_models.py | 6 ++++-- libs/core/langchain_core/language_models/llms.py | 6 ++++-- .../unit_tests/language_models/chat_models/test_base.py | 7 +++++++ .../tests/unit_tests/language_models/llms/test_base.py | 7 +++++++ 4 files changed, 22 insertions(+), 4 deletions(-) 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