diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 4d8a85283..97a220d9c 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1191,33 +1191,42 @@ async def process_chat_response( tool_calls_display_content = "" for tool_call in tool_calls: + tool_call_id = tool_call.get("id", "") + tool_name = tool_call.get("function", {}).get( + "name", "" + ) + tool_arguments = tool_call.get("function", {}).get( + "arguments", "" + ) + tool_result = None for result in results: - tool_call_id = result.get("tool_call_id", "") - tool_name = "" - - if tool_call.get("id", "") == tool_call_id: - tool_name = tool_call.get("function", {}).get( - "name", "" - ) - tool_result = result + if tool_call_id == result.get("tool_call_id", ""): + tool_result = result.get("content", None) break if tool_result: - tool_calls_display_content = f"{tool_calls_display_content}\nExecuted `{tool_name}` with the following arguments:\n```\n{tool_call.get('function', {}).get('arguments', '')}\n```\n> {tool_result.get('content', '')}" + tool_calls_display_content = f'{tool_calls_display_content}\n
\nTool Executed\n
' else: - tool_calls_display_content = f"{tool_calls_display_content}\nExecuted `{tool_call.get('function', {}).get('name', '')}` with the following arguments:\n```\n{tool_call.get('function', {}).get('arguments', '')}\n```" + tool_calls_display_content = f'{tool_calls_display_content}\n
\nExecuting...\n
' if not raw: - content = f'{content}\n
\nTool Executed\n{tool_calls_display_content}\n
\n' + content = f"{content}\n{tool_calls_display_content}\n" else: tool_calls_display_content = "" for tool_call in tool_calls: - tool_calls_display_content = f"{tool_calls_display_content}\nExecuting `{tool_call.get('function', {}).get('name', '')}` with the following arguments:\n```\n{tool_call.get('function', {}).get('arguments', '')}\n```" + tool_name = tool_call.get("function", {}).get( + "name", "" + ) + tool_arguments = tool_call.get("function", {}).get( + "arguments", "" + ) + + tool_calls_display_content = f'{tool_calls_display_content}\n
\nExecuting...\n
' if not raw: - content = f'{content}\n
\nTool Executing...\n{tool_calls_display_content}\n
\n' + content = f"{content}\n{tool_calls_display_content}\n" elif block["type"] == "reasoning": reasoning_display_content = "\n".join( diff --git a/src/lib/components/chat/Messages/Markdown.svelte b/src/lib/components/chat/Messages/Markdown.svelte index 4340c3a0d..472e53e59 100644 --- a/src/lib/components/chat/Messages/Markdown.svelte +++ b/src/lib/components/chat/Messages/Markdown.svelte @@ -11,7 +11,7 @@ const dispatch = createEventDispatcher(); - export let id; + export let id = ''; export let content; export let model = null; export let save = false; diff --git a/src/lib/components/common/Collapsible.svelte b/src/lib/components/common/Collapsible.svelte index cc5249409..515458115 100644 --- a/src/lib/components/common/Collapsible.svelte +++ b/src/lib/components/common/Collapsible.svelte @@ -1,4 +1,6 @@