From 3a1bbcb12e99eaa805179868d60219f65c695cf4 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 6 Aug 2025 13:48:43 +0400 Subject: [PATCH] refac --- backend/open_webui/utils/middleware.py | 21 ++++++++++++------- .../chat/Messages/CitationsModal.svelte | 12 +++++------ src/lib/components/common/Textarea.svelte | 2 ++ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 876ae21695..775a703384 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1463,14 +1463,17 @@ async def process_chat_response( reasoning_duration = block.get("duration", None) + start_tag = block.get("start_tag", "") + end_tag = block.get("end_tag", "") + if reasoning_duration is not None: if raw: - content = f'{content}\n{block["start_tag"]}{block["content"]}{block["end_tag"]}\n' + content = f'{content}\n{start_tag}{block["content"]}{end_tag}\n' else: content = f'{content}\n
\nThought for {reasoning_duration} seconds\n{reasoning_display_content}\n
\n' else: if raw: - content = f'{content}\n{block["start_tag"]}{block["content"]}{block["end_tag"]}\n' + content = f'{content}\n{start_tag}{block["content"]}{end_tag}\n' else: content = f'{content}\n
\nThinking…\n{reasoning_display_content}\n
\n' @@ -1511,7 +1514,7 @@ async def process_chat_response( return content.strip() - def convert_content_blocks_to_messages(content_blocks): + def convert_content_blocks_to_messages(content_blocks, raw=False): messages = [] temp_blocks = [] @@ -1520,7 +1523,7 @@ async def process_chat_response( messages.append( { "role": "assistant", - "content": serialize_content_blocks(temp_blocks), + "content": serialize_content_blocks(temp_blocks, raw), "tool_calls": block.get("content"), } ) @@ -1540,7 +1543,7 @@ async def process_chat_response( temp_blocks.append(block) if temp_blocks: - content = serialize_content_blocks(temp_blocks) + content = serialize_content_blocks(temp_blocks, raw) if content: messages.append( { @@ -1936,8 +1939,8 @@ async def process_chat_response( ): reasoning_block = { "type": "reasoning", - "start_tag": "think", - "end_tag": "/think", + "start_tag": "", + "end_tag": "", "attributes": { "type": "reasoning_content" }, @@ -2253,7 +2256,9 @@ async def process_chat_response( "tools": form_data["tools"], "messages": [ *form_data["messages"], - *convert_content_blocks_to_messages(content_blocks), + *convert_content_blocks_to_messages( + content_blocks, True + ), ], } diff --git a/src/lib/components/chat/Messages/CitationsModal.svelte b/src/lib/components/chat/Messages/CitationsModal.svelte index e0c512565c..566f0c6e06 100644 --- a/src/lib/components/chat/Messages/CitationsModal.svelte +++ b/src/lib/components/chat/Messages/CitationsModal.svelte @@ -5,6 +5,7 @@ import { WEBUI_API_BASE_URL } from '$lib/constants'; import XMark from '$lib/components/icons/XMark.svelte'; + import Textarea from '$lib/components/common/Textarea.svelte'; const i18n = getContext('i18n'); @@ -111,15 +112,12 @@ {#if document.metadata?.parameters} -
+
{$i18n.t('Parameters')}
-
{JSON.stringify(
-										document.metadata.parameters,
-										null,
-										2
-									)}
+ + {/if} {#if showRelevance}
diff --git a/src/lib/components/common/Textarea.svelte b/src/lib/components/common/Textarea.svelte index 9a1a182398..8ed4c900e1 100644 --- a/src/lib/components/common/Textarea.svelte +++ b/src/lib/components/common/Textarea.svelte @@ -7,6 +7,7 @@ export let minSize = null; export let maxSize = null; export let required = false; + export let readonly = false; export let className = 'w-full rounded-lg px-3.5 py-2 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-hidden h-full'; @@ -54,6 +55,7 @@ style="field-sizing: content;" {rows} {required} + {readonly} on:input={(e) => { resize(); }}