From 6d79f45d32c2bbcab772db99b08c6a081cbcd2fa Mon Sep 17 00:00:00 2001
From: Bo26fhmC5M <88071760+Bo26fhmC5M@users.noreply.github.com>
Date: Fri, 7 Feb 2025 21:08:50 +0900
Subject: [PATCH] feat: add doNotSummarizeUserChat option in HypaV3 - Add
doNotSummarizeUserChat option to exclude user messages from summarization -
Add early return logic to prevent unnecessary similarity checks when
summaries are empty
---
src/lib/Setting/Pages/OtherBotSettings.svelte | 11 ++++--
src/ts/process/memory/hypav3.ts | 37 +++++++++++++++++++
src/ts/storage/database.svelte.ts | 4 +-
3 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/src/lib/Setting/Pages/OtherBotSettings.svelte b/src/lib/Setting/Pages/OtherBotSettings.svelte
index fe450fc4..418cb3a6 100644
--- a/src/lib/Setting/Pages/OtherBotSettings.svelte
+++ b/src/lib/Setting/Pages/OtherBotSettings.svelte
@@ -522,11 +522,11 @@
- Max Memory Tokens Ratio (Estimated)
{#await getMaxMemoryRatio() then maxMemoryRatio}
+ Max Memory Tokens Ratio (Estimated)
{:catch error}
- {error}
+ Unable to calculate Max Memory Tokens Ratio
{/await}
Memory Tokens Ratio
@@ -547,8 +547,11 @@
-
-
+
+
+
+
+
{:else if (DBState.db.supaModelType !== 'none' && DBState.db.hypav2 === false && DBState.db.hypaV3 === false)}
{language.supaDesc}
{language.SuperMemory} {language.model}
diff --git a/src/ts/process/memory/hypav3.ts b/src/ts/process/memory/hypav3.ts
index 91bef8d6..d9ea04a8 100644
--- a/src/ts/process/memory/hypav3.ts
+++ b/src/ts/process/memory/hypav3.ts
@@ -421,6 +421,12 @@ export async function hypaMemoryV3(
continue;
}
+ if (db.hypaV3Settings.doNotSummarizeUserChat && chat.role === "user") {
+ console.log(`[HypaV3] Skipping user role at index ${i}`);
+
+ continue;
+ }
+
toSummarize.push(chat);
}
@@ -469,6 +475,37 @@ export async function hypaMemoryV3(
availableMemoryTokens
);
+ // Early return if no summaries
+ if (data.summaries.length === 0) {
+ // Generate final memory prompt
+ const memory = encapsulateMemoryPrompt("");
+
+ const newChats: OpenAIChat[] = [
+ {
+ role: "system",
+ content: memory,
+ memo: "supaMemory",
+ },
+ ...chats.slice(startIdx),
+ ];
+
+ console.log(
+ "[HypaV3] Exiting function:",
+ "\nCurrent Tokens:",
+ currentTokens,
+ "\nAll chats, including memory prompt:",
+ newChats,
+ "\nMemory Data:",
+ data
+ );
+
+ return {
+ currentTokens,
+ chats: newChats,
+ memory: toSerializableHypaV3Data(data),
+ };
+ }
+
const selectedSummaries: Summary[] = [];
const randomMemoryRatio =
1 -
diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts
index 386be221..1e736cb9 100644
--- a/src/ts/storage/database.svelte.ts
+++ b/src/ts/storage/database.svelte.ts
@@ -480,7 +480,8 @@ export function setDatabase(data:Database){
similarMemoryRatio: data.hypaV3Settings?.similarMemoryRatio ?? 0.4,
enableSimilarityCorrection: data.hypaV3Settings?.enableSimilarityCorrection ?? false,
preserveOrphanedMemory: data.hypaV3Settings?.preserveOrphanedMemory ?? false,
- processRegexScript: data.hypaV3Settings?.processRegexScript ?? false
+ processRegexScript: data.hypaV3Settings?.processRegexScript ?? false,
+ doNotSummarizeUserChat: data.hypaV3Settings?.doNotSummarizeUserChat ?? false
}
changeLanguage(data.language)
setDatabaseLite(data)
@@ -894,6 +895,7 @@ export interface Database{
enableSimilarityCorrection: boolean
preserveOrphanedMemory: boolean
processRegexScript: boolean
+ doNotSummarizeUserChat: boolean
},
OaiCompAPIKeys: {[key:string]:string}
inlayErrorResponse:boolean