From 5dff47443878217bc5c298551366ab70d4a88d26 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sat, 11 Nov 2023 23:12:32 -0800 Subject: [PATCH] feat: improved chat history openai support --- src/routes/+page.svelte | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 7575039f7..91c7f9d34 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -479,6 +479,7 @@ history.messages[userMessageId] = userMessage; history.currentId = userMessageId; + await tick(); await sendPrompt(userPrompt, userMessageId); }; @@ -809,15 +810,28 @@ } }; - const sendPromptOpenAI = async (userPrompt) => { + const sendPromptOpenAI = async (userPrompt, parentId) => { if (settings.OPENAI_API_KEY) { if (models) { + let responseMessageId = uuidv4(); + let responseMessage = { + parentId: parentId, + id: responseMessageId, + childrenIds: [], role: 'assistant', content: '' }; - messages = [...messages, responseMessage]; + history.messages[responseMessageId] = responseMessage; + history.currentId = responseMessageId; + if (parentId !== null) { + history.messages[parentId].childrenIds = [ + ...history.messages[parentId].childrenIds, + responseMessageId + ]; + } + window.scrollTo({ top: document.body.scrollHeight }); const res = await fetch(`https://api.openai.com/v1/chat/completions`, { @@ -839,7 +853,7 @@ ...messages ] .filter((message) => message) - .map((message) => ({ ...message, done: undefined })), + .map((message) => ({ role: message.role, content: message.content })), temperature: settings.temperature ?? undefined, top_p: settings.top_p ?? undefined, frequency_penalty: settings.repeat_penalty ?? undefined