diff --git a/libs/core/langchain_core/utils/_merge.py b/libs/core/langchain_core/utils/_merge.py index e300259819e30..4200ca304d6a0 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 258b447409b97..ae2404abd19e7 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 @@ 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, @@ -395,3 +396,10 @@ class OhMy(BaseModel): 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})