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