From 1635dcb69b3552d6369af9b6254745176ed8d9f4 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Feb 2025 16:07:43 -0800 Subject: [PATCH] refac --- backend/open_webui/utils/middleware.py | 8 +++++++- src/lib/components/chat/Chat.svelte | 24 ++++++++++++------------ src/lib/utils/index.ts | 13 ++++++++++--- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 11e36cecf..644ec9014 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1120,7 +1120,7 @@ async def process_chat_response( output = html.escape(json.dumps(output)) if raw: - content = f'{content}
\nAnalyzed\n```{lang}\n{block["content"]}\n```\n```output\n{output}\n```\n
\n' + content = f'{content}\n{block["content"]}\n\n```output\n{output}\n```\n' else: content = f'{content}
\nAnalyzed\n```{lang}\n{block["content"]}\n```\n
\n' else: @@ -1312,6 +1312,12 @@ async def process_chat_response( ) if end: + data = { + "content": serialize_content_blocks( + content_blocks + ), + } + break if ENABLE_REALTIME_CHAT_SAVE: diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 89fedb919..4e8d002dc 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -45,7 +45,7 @@ promptTemplate, splitStream, sleep, - removeDetailsWithReasoning, + removeDetails, getPromptVariables } from '$lib/utils'; @@ -1338,8 +1338,17 @@ parentId: string, { modelId = null, modelIdx = null, newChat = false } = {} ) => { - const _chatId = JSON.parse(JSON.stringify($chatId)); + // If modelId is provided, use it, else use selected model + let selectedModelIds = modelId + ? [modelId] + : atSelectedModel !== undefined + ? [atSelectedModel.id] + : selectedModels; + // Create response messages for each selected model + const responseMessageIds: Record = {}; + + const _chatId = JSON.parse(JSON.stringify($chatId)); // Create new chat if newChat is true and first user message if ( newChat && @@ -1351,15 +1360,6 @@ await saveChatHandler(_chatId); } - // If modelId is provided, use it, else use selected model - let selectedModelIds = modelId - ? [modelId] - : atSelectedModel !== undefined - ? [atSelectedModel.id] - : selectedModels; - - // Create response messages for each selected model - const responseMessageIds: Record = {}; for (const [_modelIdx, modelId] of selectedModelIds.entries()) { const model = $models.filter((m) => m.id === modelId).at(0); @@ -1515,7 +1515,7 @@ : undefined, ...createMessagesList(history, responseMessageId).map((message) => ({ ...message, - content: removeDetailsWithReasoning(message.content) + content: removeDetails(message.content, ['reasoning', 'code_interpreter']) })) ] .filter((message) => message?.content?.trim()) diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 2ccc1bf5d..0a5b72e36 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -668,8 +668,15 @@ export const cleanText = (content: string) => { return removeFormattings(removeEmojis(content.trim())); }; -export const removeDetailsWithReasoning = (content) => { - return content.replace(/]*>.*?<\/details>/gis, '').trim(); +export const removeDetails = (content, types) => { + for (const type of types) { + content = content.replace( + new RegExp(`]*>.*?<\\/details>`, 'gis'), + '' + ); + } + + return content; }; // This regular expression matches code blocks marked by triple backticks @@ -741,7 +748,7 @@ export const extractSentencesForAudio = (text: string) => { }; export const getMessageContentParts = (content: string, split_on: string = 'punctuation') => { - content = removeDetailsWithReasoning(content); + content = removeDetails(content, ['reasoning', 'code_interpreter']); const messageContentParts: string[] = []; switch (split_on) {