diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py
index 32681294d..356c044af 100644
--- a/backend/open_webui/utils/middleware.py
+++ b/backend/open_webui/utils/middleware.py
@@ -1183,36 +1183,41 @@ async def process_chat_response(
elif block["type"] == "tool_calls":
attributes = block.get("attributes", {})
- block_content = block.get("content", [])
+ tool_calls = block.get("content", [])
results = block.get("results", [])
if results:
- result_display_content = ""
+ tool_calls_display_content = ""
+ for tool_call in tool_calls:
- for result in results:
- tool_call_id = result.get("tool_call_id", "")
- tool_name = ""
+ tool_result = None
+ for result in results:
+ tool_call_id = result.get("tool_call_id", "")
+ tool_name = ""
- for tool_call in block_content:
if tool_call.get("id", "") == tool_call_id:
tool_name = tool_call.get("function", {}).get(
"name", ""
)
+ tool_result = result
break
- result_display_content = f"{result_display_content}\n> {tool_name}: {result.get('content', '')}"
+ if tool_result:
+ tool_calls_display_content = f"{tool_calls_display_content}\nExecuted {tool_name}\n```\n{tool_call.get('function', {}).get('arguments', '')}\n```\n> {tool_result.get('content', '')}"
+ else:
+ tool_calls_display_content = f"{tool_calls_display_content}\nExecuted {tool_call.get('function', {}).get('name', '')}\n```\n{tool_call.get('function', {}).get('arguments', '')}\n```"
if not raw:
- content = f'{content}\n\nTool Executed
\n{result_display_content}\n \n'
+ content = f'{content}\n\nTool Executed
\n{tool_calls_display_content}\n \n'
else:
tool_calls_display_content = ""
- for tool_call in block_content:
- tool_calls_display_content = f"{tool_calls_display_content}\n> Executing {tool_call.get('function', {}).get('name', '')}"
+ for tool_call in tool_calls:
+ tool_calls_display_content = f"{tool_calls_display_content}\nExecuting {tool_call.get('function', {}).get('name', '')}\n```\n{tool_call.get('function', {}).get('arguments', '')}\n```"
if not raw:
- content = f'{content}\n\nTool Executing...
\n{tool_calls_display_content}\n \n'
+ content = f'{content}\n\nTool Executing...
\n{tool_calls_display_content}\n \n'
elif block["type"] == "reasoning":
reasoning_display_content = "\n".join(