diff --git a/libs/core/langchain_core/utils/_merge.py b/libs/core/langchain_core/utils/_merge.py index 4200ca304d6..63d49de953c 100644 --- a/libs/core/langchain_core/utils/_merge.py +++ b/libs/core/langchain_core/utils/_merge.py @@ -97,7 +97,7 @@ def merge_lists(left: Optional[list], *others: Optional[list]) -> Optional[list] to_merge = [ i for i, e_left in enumerate(merged) - if e_left["index"] == e["index"] + if "index" in e_left and e_left["index"] == e["index"] ] if to_merge: # TODO: Remove this once merge_dict is updated with special diff --git a/libs/core/tests/unit_tests/test_messages.py b/libs/core/tests/unit_tests/test_messages.py index 58822433d7a..0656a2f2e97 100644 --- a/libs/core/tests/unit_tests/test_messages.py +++ b/libs/core/tests/unit_tests/test_messages.py @@ -1019,6 +1019,11 @@ def test_tool_message_str() -> None: ("foo", [["bar"]], ["foo", "bar"]), (["foo"], ["bar"], ["foobar"]), (["foo"], [["bar"]], ["foo", "bar"]), + ( + [{"text": "foo"}], + [[{"index": 0, "text": "bar"}]], + [{"text": "foo"}, {"index": 0, "text": "bar"}], + ), ], ) def test_merge_content(