diff --git a/src/lib/Setting/Pages/AdvancedSettings.svelte b/src/lib/Setting/Pages/AdvancedSettings.svelte index 28a725a9..f1a54d83 100644 --- a/src/lib/Setting/Pages/AdvancedSettings.svelte +++ b/src/lib/Setting/Pages/AdvancedSettings.svelte @@ -23,9 +23,6 @@ {language.emotionPrompt} -{language.SuperMemory} Prompt - - {language.requestretrys} diff --git a/src/lib/Setting/Pages/OtherBotSettings.svelte b/src/lib/Setting/Pages/OtherBotSettings.svelte index a14c2941..a4a5929a 100644 --- a/src/lib/Setting/Pages/OtherBotSettings.svelte +++ b/src/lib/Setting/Pages/OtherBotSettings.svelte @@ -57,3 +57,21 @@ TTS ElevenLabs API key + + +SupaMemory +{language.SuperMemory} {language.model} + +{#if $DataBase.supaMemoryType === 'davinci' || $DataBase.supaMemoryType === 'curie'} + {language.SuperMemory} OpenAI Key + +{/if} +{#if $DataBase.supaMemoryType !== 'none'} + {language.SuperMemory} Prompt + +{/if} \ No newline at end of file diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index 88c42275..d79ea276 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -224,11 +224,11 @@ {language.jailbreakToggle} - {#if $DataBase.useExperimental} -
- - {language.ToggleSuperMemory} -
+ {#if $DataBase.supaMemoryType !== 'none'} +
+ + {language.ToggleSuperMemory} +
{/if} {:else if subMenu === 1}

{language.characterDisplay}

@@ -518,7 +518,7 @@ {tokens.localNote} {language.tokens} {#if currentChar.data.chats[currentChar.data.chatPage].supaMemoryData && currentChar.data.chats[currentChar.data.chatPage].supaMemoryData.length > 4} - {language.SuperMemory} + {language.SuperMemory} {/if} {#if $DataBase.showUnrecommended || currentChar.data.personality.length > 3} @@ -644,7 +644,7 @@ {:else} {#if currentChar.data.chats[currentChar.data.chatPage].supaMemoryData && currentChar.data.chats[currentChar.data.chatPage].supaMemoryData.length > 4} - {language.SuperMemory} + {language.SuperMemory} {/if} {#if $DataBase.useExperimental} diff --git a/src/ts/database.ts b/src/ts/database.ts index 93346f19..ede4ed14 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -193,6 +193,12 @@ export function setDatabase(data:Database){ if(checkNullish(data.showMemoryLimit)){ data.showMemoryLimit = false } + if(checkNullish(data.supaMemoryKey)){ + data.supaMemoryKey = "" + } + if(checkNullish(data.supaMemoryType)){ + data.supaMemoryType = "none" + } if(checkNullish(data.sdConfig)){ data.sdConfig = { width:512, @@ -409,7 +415,9 @@ export interface Database{ showMemoryLimit:boolean roundIcons:boolean useStreaming:boolean - palmAPI:string + palmAPI:string, + supaMemoryKey:string + supaMemoryType:string } diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 2355805b..9c2c86d2 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -229,7 +229,7 @@ export async function sendChat(chatProcessIndex = -1):Promise { currentTokens += (await tokenize(systemMsg) + 1) } - if(nowChatroom.supaMemory){ + if(nowChatroom.supaMemory && db.supaMemoryType !== 'none'){ const sp = await supaMemory(chats, currentTokens, maxContextTokens, currentChat, nowChatroom) if(sp.error){ alertError(sp.error) diff --git a/src/ts/process/supaMemory.ts b/src/ts/process/supaMemory.ts index b2fa6d77..9d45caba 100644 --- a/src/ts/process/supaMemory.ts +++ b/src/ts/process/supaMemory.ts @@ -95,45 +95,60 @@ export async function supaMemory(chats:OpenAIChat[],currentTokens:number,maxCont "[Summarize the ongoing role story. It must also remove redundancy and unnecessary content from the prompt so that gpt3 and other sublanguage models]\n" : db.supaMemoryPrompt - const promptbody = stringlizedChat + '\n\n' + supaPrompt + "\n\nOutput:" + let result = '' - const da = await fetch("https://api.openai.com/v1/completions",{ - headers: { - "Content-Type": "application/json", - "Authorization": "Bearer " + db.openAIKey - }, - method: "POST", - body: JSON.stringify({ - "model": "text-davinci-003", - "prompt": promptbody, - "max_tokens": 500, - "temperature": 0 + if(db.supaMemoryType !== 'subModel'){ + const promptbody = stringlizedChat + '\n\n' + supaPrompt + "\n\nOutput:" + + const da = await fetch("https://api.openai.com/v1/completions",{ + headers: { + "Content-Type": "application/json", + "Authorization": "Bearer " + db.openAIKey + }, + method: "POST", + body: JSON.stringify({ + "model": db.supaMemoryType === 'curie' ? "text-curie-001" : "text-davinci-003", + "prompt": promptbody, + "max_tokens": 500, + "temperature": 0 + }) }) - }) - - // const promptbody:OpenAIChat[] = [ - // { - // role: "user", - // content: stringlizedChat - // }, - // { - // role: "system", - // content: supaPrompt - // } - // ] - // const da = await requestChatData({ - // formated: promptbody, - // bias: {} - // }, 'submodel') - - const result = (await da.json()).choices[0].text.trim() - if(da.status < 200 || da.status >= 300){ - return { - currentTokens: currentTokens, - chats: chats, - error: "SupaMemory: HTTP: " + await da.text() + + if(da.status < 200 || da.status >= 300){ + return { + currentTokens: currentTokens, + chats: chats, + error: "SupaMemory: HTTP: " + await da.text() + } } + result = (await da.json()).choices[0].text.trim() } + else { + const promptbody:OpenAIChat[] = [ + { + role: "user", + content: stringlizedChat + }, + { + role: "system", + content: supaPrompt + } + ] + const da = await requestChatData({ + formated: promptbody, + bias: {} + }, 'submodel') + if(da.type === 'fail' || da.type === 'streaming'){ + return { + currentTokens: currentTokens, + chats: chats, + error: "SupaMemory: HTTP: " + da.result + } + } + result = da.result + } + + const tokenz = await tokenize(result + '\n\n') + 5 currentTokens += tokenz