diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index c0ab41828..17037083f 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1912,7 +1912,8 @@ async def process_chat_response( tool_result_files = [] if isinstance(tool_result, list): for item in tool_result: - if item.startswith("data:"): + # check if string + if isinstance(item, str) and item.startswith("data:"): tool_result_files.append(item) tool_result.remove(item) diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index ffaa59bfd..4746450f5 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -69,14 +69,18 @@ def get_tools( elif auth_type == "session": token = request.state.token.credentials + async def tool_function(**args): + return await execute_tool_server( + token=token, + url=tool_server_data["url"], + name=function_name, + params=args, + server_data=tool_server_data, + ) + callable = get_async_tool_function_and_apply_extra_params( - execute_tool_server, - { - "token": token, - "url": tool_server_data["url"], - "name": function_name, - "server_data": tool_server_data, - }, + tool_function, + {}, ) tool_dict = {