From 395674d5037756bef25d7fa8da93525874bb5cb8 Mon Sep 17 00:00:00 2001 From: Dobiichi-Origami <56953648+Dobiichi-Origami@users.noreply.github.com> Date: Wed, 6 Nov 2024 22:58:16 +0800 Subject: [PATCH] community: re-arrange function call message parse logic for Qianfan (#27935) the [PR](https://github.com/langchain-ai/langchain/pull/26208) two month ago has a potential bug which causes malfunction of `tool_call` for `QianfanChatEndpoint` waiting for fix --- .../chat_models/baidu_qianfan_endpoint.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py b/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py index 93f32e9a83e..243ac084d37 100644 --- a/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py +++ b/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py @@ -66,17 +66,13 @@ def convert_message_to_dict(message: BaseMessage) -> dict: message_dict = {"role": "user", "content": message.content} elif isinstance(message, AIMessage): message_dict = {"role": "assistant", "content": message.content} - if "function_call" in message.additional_kwargs: - message_dict["function_call"] = message.additional_kwargs["function_call"] - elif len(message.tool_calls) != 0: + if len(message.tool_calls) != 0: tool_call = message.tool_calls[0] message_dict["function_call"] = { "name": tool_call["name"], - "args": tool_call["args"], + "arguments": json.dumps(tool_call["args"], ensure_ascii=False), } - - # If function call only, content is None not empty string - if "function_call" in message_dict and message_dict["content"] == "": + # If function call only, content is None not empty string message_dict["content"] = None elif isinstance(message, (FunctionMessage, ToolMessage)): message_dict = {