diff --git a/backend/open_webui/utils/payload.py b/backend/open_webui/utils/payload.py index f1befc53a8..962c98696f 100644 --- a/backend/open_webui/utils/payload.py +++ b/backend/open_webui/utils/payload.py @@ -328,12 +328,19 @@ def convert_chat_completions_messages_to_ollama(messages: list[dict]) -> list[di # If tool calls are present, add them to the message ollama_tool_calls = [] for tool_call in tool_calls: + arguments = tool_call.get('function', {}).get('arguments') + if isinstance(arguments, str): + try: + arguments = JSONCodec.loads(arguments) + except JSONCodec.JSONDecodeError: + arguments = {} + ollama_tool_call = { 'index': tool_call.get('index', 0), 'id': tool_call.get('id', None), 'function': { 'name': tool_call.get('function', {}).get('name', ''), - 'arguments': JSONCodec.loads(tool_call.get('function', {}).get('arguments', {})), + 'arguments': arguments if isinstance(arguments, dict) else {}, }, } ollama_tool_calls.append(ollama_tool_call)