From 2a2c0d1a9411eddfe1298f3d2bf448d192c1a6cf Mon Sep 17 00:00:00 2001 From: Oguz Vuruskaner Date: Wed, 3 Jul 2024 09:11:37 -0700 Subject: [PATCH] community[deepinfra]: fix tool call parsing. (#23162) This PR includes fix for DeepInfra tool call parsing. --- .../langchain_community/chat_models/deepinfra.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libs/community/langchain_community/chat_models/deepinfra.py b/libs/community/langchain_community/chat_models/deepinfra.py index 9bad6b251bf..788324d895f 100644 --- a/libs/community/langchain_community/chat_models/deepinfra.py +++ b/libs/community/langchain_community/chat_models/deepinfra.py @@ -45,6 +45,7 @@ from langchain_core.messages import ( HumanMessageChunk, SystemMessage, SystemMessageChunk, + ToolMessage, ) from langchain_core.messages.tool import ToolCall from langchain_core.outputs import ( @@ -92,7 +93,7 @@ def _parse_tool_calling(tool_call: dict) -> ToolCall: Returns: """ - name = tool_call.get("name", "") + name = tool_call["function"].get("name", "") args = json.loads(tool_call["function"]["arguments"]) id = tool_call.get("id") return ToolCall(name=name, args=args, id=id) @@ -181,6 +182,13 @@ def _convert_message_to_dict(message: BaseMessage) -> dict: "content": message.content, "name": message.name, } + elif isinstance(message, ToolMessage): + message_dict = { + "role": "tool", + "content": message.content, + "name": message.name, # type: ignore[dict-item] + "tool_call_id": message.tool_call_id, + } else: raise ValueError(f"Got unknown type {message}") if "name" in message.additional_kwargs: