From 941bb7c6038ba25bc0063966b47014e0a98c53a4 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 26 Mar 2024 01:45:25 -0700 Subject: [PATCH] refac: chat[id] page --- src/routes/(app)/+page.svelte | 22 ++++----- src/routes/(app)/c/[id]/+page.svelte | 68 ++++++++++++++++------------ 2 files changed, 51 insertions(+), 39 deletions(-) diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte index 2ccdd8d5a..2343a4395 100644 --- a/src/routes/(app)/+page.svelte +++ b/src/routes/(app)/+page.svelte @@ -784,6 +784,17 @@ } }; + const setChatTitle = async (_chatId, _title) => { + if (_chatId === $chatId) { + title = _title; + } + + if ($settings.saveChatHistory ?? true) { + chat = await updateChatById(localStorage.token, _chatId, { title: _title }); + await chats.set(await getChatList(localStorage.token)); + } + }; + const getTags = async () => { return await getTagsById(localStorage.token, $chatId).catch(async (error) => { return []; @@ -811,17 +822,6 @@ _tags.set(await getAllChatTags(localStorage.token)); }; - - const setChatTitle = async (_chatId, _title) => { - if (_chatId === $chatId) { - title = _title; - } - - if ($settings.saveChatHistory ?? true) { - chat = await updateChatById(localStorage.token, _chatId, { title: _title }); - await chats.set(await getChatList(localStorage.token)); - } - }; diff --git a/src/routes/(app)/c/[id]/+page.svelte b/src/routes/(app)/c/[id]/+page.svelte index 836fc90a4..0d464cd65 100644 --- a/src/routes/(app)/c/[id]/+page.svelte +++ b/src/routes/(app)/c/[id]/+page.svelte @@ -521,7 +521,8 @@ if (messages.length == 2 && messages.at(1).content !== '') { window.history.replaceState(history.state, '', `/c/${_chatId}`); - await generateChatTitle(_chatId, userPrompt); + const _title = await generateChatTitle(userPrompt); + await setChatTitle(_chatId, _title); } }; @@ -706,11 +707,8 @@ if (messages.length == 2) { window.history.replaceState(history.state, '', `/c/${_chatId}`); - if ($settings?.titleAutoGenerateModel) { - await generateChatTitle(_chatId, userPrompt); - } else { - await setChatTitle(_chatId, userPrompt); - } + const _title = await generateChatTitle(userPrompt); + await setChatTitle(_chatId, _title); } }; @@ -719,6 +717,19 @@ console.log('stopResponse'); }; + const regenerateResponse = async () => { + console.log('regenerateResponse'); + if (messages.length != 0 && messages.at(-1).done == true) { + messages.splice(messages.length - 1, 1); + messages = messages; + + let userMessage = messages.at(-1); + let userPrompt = userMessage.content; + + await sendPrompt(userPrompt, userMessage.id); + } + }; + const continueGeneration = async () => { console.log('continueGeneration'); const _chatId = JSON.parse(JSON.stringify($chatId)); @@ -751,36 +762,35 @@ } }; - const regenerateResponse = async () => { - console.log('regenerateResponse'); - if (messages.length != 0 && messages.at(-1).done == true) { - messages.splice(messages.length - 1, 1); - messages = messages; + const generateChatTitle = async (userPrompt) => { + if ($settings?.title?.auto ?? true) { + const model = $models.find((model) => model.id === selectedModels[0]); - let userMessage = messages.at(-1); - let userPrompt = userMessage.content; + const titleModelId = + model?.external ?? false + ? $settings?.title?.modelExternal ?? selectedModels[0] + : $settings?.title?.model ?? selectedModels[0]; + const titleModel = $models.find((model) => model.id === titleModelId); - await sendPrompt(userPrompt, userMessage.id); - } - }; - - const generateChatTitle = async (_chatId, userPrompt) => { - if ($settings.titleAutoGenerate ?? true) { + console.log(titleModel); const title = await generateTitle( localStorage.token, - $settings?.titleGenerationPrompt ?? + $settings?.title?.prompt ?? $i18n.t( "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':" ) + ' {{prompt}}', - $settings?.titleAutoGenerateModel ?? selectedModels[0], - userPrompt + titleModelId, + userPrompt, + titleModel?.external ?? false + ? titleModel.source === 'litellm' + ? `${LITELLM_API_BASE_URL}/v1` + : `${OPENAI_API_BASE_URL}` + : `${OLLAMA_API_BASE_URL}/v1` ); - if (title) { - await setChatTitle(_chatId, title); - } + return title; } else { - await setChatTitle(_chatId, `${userPrompt}`); + return `${userPrompt}`; } }; @@ -789,8 +799,10 @@ title = _title; } - chat = await updateChatById(localStorage.token, _chatId, { title: _title }); - await chats.set(await getChatList(localStorage.token)); + if ($settings.saveChatHistory ?? true) { + chat = await updateChatById(localStorage.token, _chatId, { title: _title }); + await chats.set(await getChatList(localStorage.token)); + } }; const getTags = async () => {