From 78678534f970a5a01dddfc979594367c58d04b44 Mon Sep 17 00:00:00 2001 From: "Guofang.Tang" <136770748@qq.com> Date: Wed, 25 Feb 2026 07:12:49 +0800 Subject: [PATCH] fix(core): treat empty tool chunk ids as missing in merge (#35414) --- libs/core/langchain_core/utils/_merge.py | 6 ++--- libs/core/tests/unit_tests/test_messages.py | 28 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/libs/core/langchain_core/utils/_merge.py b/libs/core/langchain_core/utils/_merge.py index ba7df2043cb..6a0cb38f078 100644 --- a/libs/core/langchain_core/utils/_merge.py +++ b/libs/core/langchain_core/utils/_merge.py @@ -121,9 +121,9 @@ def merge_lists(left: list | None, *others: list | None) -> list | None: "index" in e_left and e_left["index"] == e["index"] # index matches and ( # IDs not inconsistent - e_left.get("id") is None - or e.get("id") is None - or e_left["id"] == e["id"] + e_left.get("id") in (None, "") + or e.get("id") in (None, "") + or e_left.get("id") == e.get("id") ) ) ] diff --git a/libs/core/tests/unit_tests/test_messages.py b/libs/core/tests/unit_tests/test_messages.py index 1955cef093b..a13fdc62a6f 100644 --- a/libs/core/tests/unit_tests/test_messages.py +++ b/libs/core/tests/unit_tests/test_messages.py @@ -122,6 +122,34 @@ def test_message_chunks() -> None: ], ) + assert ( + AIMessageChunk( + content="", + tool_call_chunks=[ + create_tool_call_chunk(name="tool1", args="", id="1", index=0) + ], + ) + + AIMessageChunk( + content="", + tool_call_chunks=[ + create_tool_call_chunk(name=None, args='{"arg1": "val', id="", index=0) + ], + ) + + AIMessageChunk( + content="", + tool_call_chunks=[ + create_tool_call_chunk(name=None, args='ue"}', id="", index=0) + ], + ) + ) == AIMessageChunk( + content="", + tool_call_chunks=[ + create_tool_call_chunk( + name="tool1", args='{"arg1": "value"}', id="1", index=0 + ) + ], + ) + assert ( AIMessageChunk( content="",