From b26d2250ba88708a75d65d2542783adeaa2bb0ef Mon Sep 17 00:00:00 2001 From: Mohammad Mohtashim <45242107+keenborder786@users.noreply.github.com> Date: Fri, 4 Jul 2025 23:44:16 +0500 Subject: [PATCH] core[patch]: Int Combine when Merging Dicts (#31572) - **Description:** Combining the Int Types by adding them which makes the most sense. - **Issue:** #31565 --- libs/core/langchain_core/utils/_merge.py | 2 ++ libs/core/tests/unit_tests/utils/test_utils.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/libs/core/langchain_core/utils/_merge.py b/libs/core/langchain_core/utils/_merge.py index e300259819e..4200ca304d6 100644 --- a/libs/core/langchain_core/utils/_merge.py +++ b/libs/core/langchain_core/utils/_merge.py @@ -64,6 +64,8 @@ def merge_dicts(left: dict[str, Any], *others: dict[str, Any]) -> dict[str, Any] merged[right_k] = merge_lists(merged[right_k], right_v) elif merged[right_k] == right_v: continue + elif isinstance(merged[right_k], int): + merged[right_k] += right_v else: msg = ( f"Additional kwargs key {right_k} already exists in left dict and " diff --git a/libs/core/tests/unit_tests/utils/test_utils.py b/libs/core/tests/unit_tests/utils/test_utils.py index b9364517ce5..048addf0e28 100644 --- a/libs/core/tests/unit_tests/utils/test_utils.py +++ b/libs/core/tests/unit_tests/utils/test_utils.py @@ -9,6 +9,7 @@ import pytest from pydantic import SecretStr from langchain_core import utils +from langchain_core.outputs import GenerationChunk from langchain_core.utils import ( check_package_version, from_env, @@ -375,3 +376,10 @@ def test_using_secret_from_env_as_default_factory( with pytest.raises(ValueError, match="Did not find FOOFOOFOOBAR"): OhMy() + + +def test_generation_chunk_addition_type_error() -> None: + chunk1 = GenerationChunk(text="", generation_info={"len": 0}) + chunk2 = GenerationChunk(text="Non-empty text", generation_info={"len": 14}) + result = chunk1 + chunk2 + assert result == GenerationChunk(text="Non-empty text", generation_info={"len": 14})