diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 0a55ae76f0..b7374ec7a6 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -356,6 +356,17 @@ async def chat_completion_tools_handler( if isinstance(tool_result, dict) or isinstance(tool_result, list): tool_result = json.dumps(tool_result, indent=2) + if tool_result_embeds: + if event_caller: + await event_caller( + { + "type": "embeds", + "data": { + "embeds": tool_result_embeds, + }, + } + ) + if isinstance(tool_result, str): tool = tools[tool_function_name] tool_id = tool.get("tool_id", "") diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index a3cb16f2a6..d059be3f8e 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -362,6 +362,8 @@ message.content = data.content; } else if (type === 'chat:message:files' || type === 'files') { message.files = data.files; + } else if (type === 'chat:message:embeds' || type === 'embeds') { + message.embeds = data.embeds; } else if (type === 'chat:message:error') { message.error = data.error; } else if (type === 'chat:message:follow_ups') { diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index bbda9ac277..f807bd0fab 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -53,6 +53,7 @@ import { flyAndScale } from '$lib/utils/transitions'; import RegenerateMenu from './ResponseMessage/RegenerateMenu.svelte'; import StatusHistory from './ResponseMessage/StatusHistory.svelte'; + import FullHeightIframe from '$lib/components/common/FullHeightIframe.svelte'; interface MessageType { id: string; @@ -676,6 +677,22 @@ {/if} + {#if message?.embeds && message.embeds.length > 0} +
+ {#each message.embeds as embed, idx} +
+ +
+ {/each} +
+ {/if} + {#if edit === true}