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