From 156dbc21d0670defbdbfc9590fce308b872af34c Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 22 Jan 2025 11:03:38 +0700 Subject: [PATCH] fix: thread title summarization doesn't work well on reasoning models --- web/containers/Providers/ModelHandler.tsx | 24 +++++++---------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/web/containers/Providers/ModelHandler.tsx b/web/containers/Providers/ModelHandler.tsx index 42376c0818..d7ea0a7865 100644 --- a/web/containers/Providers/ModelHandler.tsx +++ b/web/containers/Providers/ModelHandler.tsx @@ -132,7 +132,7 @@ export default function ModelHandler() { return } - const messageContent = message.content[0]?.text?.value + let messageContent = message.content[0]?.text?.value if (!messageContent) { console.warn( `Failed to update title for thread ${message.thread_id}: Responded content is null!` @@ -144,27 +144,17 @@ export default function ModelHandler() { // And no new line character is present // And non-alphanumeric characters should be removed if (messageContent.includes('\n')) { - console.warn( - `Failed to update title for thread ${message.thread_id}: Title can't contain new line character!` - ) - return + messageContent = messageContent.replace(/\n/g, ' ') + } + const match = messageContent.match(/<\/think>(.*)$/) + if (match) { + messageContent = match[1] } - // Remove non-alphanumeric characters const cleanedMessageContent = messageContent .replace(/[^\p{L}\s]+/gu, '') .trim() - // Split the message into words - const words = cleanedMessageContent.split(' ') - - if (words.length >= maxWordForThreadTitle) { - console.warn( - `Failed to update title for thread ${message.thread_id}: Title can't be greater than ${maxWordForThreadTitle} words!` - ) - return - } - // Do not persist empty message if (!cleanedMessageContent.trim().length) return @@ -361,7 +351,7 @@ export default function ModelHandler() { if (!threadMessages || threadMessages.length === 0) return - const summarizeFirstPrompt = `Summarize in a ${maxWordForThreadTitle}-word Title. Give the title only. "${threadMessages[0]?.content[0]?.text?.value}"` + const summarizeFirstPrompt = `Summarize in a ${maxWordForThreadTitle}-word Title. Give the title only. Here is the message: "${threadMessages[0]?.content[0]?.text?.value}"` // Prompt: Given this query from user {query}, return to me the summary in 10 words as the title const msgId = ulid()