diff --git a/libs/core/langchain_core/messages/ai.py b/libs/core/langchain_core/messages/ai.py index c81187dc3f6..27ae49dca9f 100644 --- a/libs/core/langchain_core/messages/ai.py +++ b/libs/core/langchain_core/messages/ai.py @@ -358,7 +358,10 @@ class AIMessageChunk(AIMessage, BaseMessageChunk): for chunk in self.tool_call_chunks: try: - args_ = parse_partial_json(chunk["args"]) if chunk["args"] != "" else {} # type: ignore[arg-type] + if chunk["args"] is not None and chunk["args"] != "": + args_ = parse_partial_json(chunk["args"]) + else: + args_ = {} if isinstance(args_, dict): tool_calls.append( create_tool_call( diff --git a/libs/core/tests/unit_tests/test_messages.py b/libs/core/tests/unit_tests/test_messages.py index 0656a2f2e97..807f52ae10d 100644 --- a/libs/core/tests/unit_tests/test_messages.py +++ b/libs/core/tests/unit_tests/test_messages.py @@ -455,9 +455,9 @@ def test_message_chunk_to_message() -> None: tool_calls=[ create_tool_call(name="tool1", args={"a": 1}, id="1"), create_tool_call(name="tool2", args={}, id="2"), + create_tool_call(name="tool3", args={}, id="3"), ], invalid_tool_calls=[ - create_invalid_tool_call(name="tool3", args=None, id="3", error=None), create_invalid_tool_call(name="tool4", args="abc", id="4", error=None), ], )