diff --git a/libs/core/langchain_core/messages/utils.py b/libs/core/langchain_core/messages/utils.py index d6971e2ebd0..735300650a6 100644 --- a/libs/core/langchain_core/messages/utils.py +++ b/libs/core/langchain_core/messages/utils.py @@ -286,6 +286,9 @@ def _create_message_from_message_type( message = FunctionMessage(content=content, **kwargs) elif message_type == "tool": artifact = kwargs.get("additional_kwargs", {}).pop("artifact", None) + status = kwargs.get("additional_kwargs", {}).pop("status", None) + if status is not None: + kwargs["status"] = status message = ToolMessage(content=content, artifact=artifact, **kwargs) elif message_type == "remove": message = RemoveMessage(**kwargs) diff --git a/libs/core/tests/unit_tests/test_messages.py b/libs/core/tests/unit_tests/test_messages.py index 9f0f43474e9..3b341be1c9f 100644 --- a/libs/core/tests/unit_tests/test_messages.py +++ b/libs/core/tests/unit_tests/test_messages.py @@ -740,6 +740,7 @@ def test_convert_to_messages() -> None: "tool_call_id": "tool_id2", "content": "Bye!", "artifact": {"foo": 123}, + "status": "success", }, {"role": "remove", "id": "message_to_remove", "content": ""}, { @@ -773,7 +774,12 @@ def test_convert_to_messages() -> None: ], ), ToolMessage(tool_call_id="tool_id", content="Hi!"), - ToolMessage(tool_call_id="tool_id2", content="Bye!", artifact={"foo": 123}), + ToolMessage( + tool_call_id="tool_id2", + content="Bye!", + artifact={"foo": 123}, + status="success", + ), RemoveMessage(id="message_to_remove"), HumanMessage( content="Now the turn for Larry to ask a question about the book!",