From b4fbd4c1b4e08574e0602467b487399ddd78d1eb Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 26 Jul 2023 19:52:58 +0900 Subject: [PATCH] [feat] lorebook fullWordMatching --- src/lang/en.ts | 1 + src/lib/SideBars/LoreBook/LoreBookSetting.svelte | 3 +++ src/ts/characterCards.ts | 6 +++++- src/ts/process/lorebook.ts | 6 ++++-- src/ts/storage/database.ts | 1 + 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 73c685f5..42d5717e 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -357,4 +357,5 @@ export const languageEnglish = { cancel: "Cancel", renameFolder: "Rename Folder", changeFolderColor: "Change Folder Color", + fullWordMatching: "Full Word Matching", } \ No newline at end of file diff --git a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte index 97afcbe6..08829bf4 100644 --- a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte +++ b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte @@ -48,6 +48,9 @@
+
+ +
{language.loreBookDepth} {language.loreBookToken} diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index cf575e71..ca07fd59 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -275,7 +275,8 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array, mode?:'hub'|' loresettings = { tokenBudget:charbook.token_budget, scanDepth:charbook.scan_depth, - recursiveScanning: charbook.recursive_scanning + recursiveScanning: charbook.recursive_scanning, + fullWordMatching: charbook?.extensions?.risu_fullWordMatching ?? false, } } @@ -382,6 +383,9 @@ async function createBaseV2(char:character) { case_sensitive: caseSensitive, }) } + char.loreExt ??= {} + + char.loreExt.risu_fullWordMatching = char.loreSettings?.fullWordMatching ?? false const card:CharacterCardV2 = { spec: "chara_card_v2", diff --git a/src/ts/process/lorebook.ts b/src/ts/process/lorebook.ts index b2bc26b9..946067a3 100644 --- a/src/ts/process/lorebook.ts +++ b/src/ts/process/lorebook.ts @@ -72,6 +72,7 @@ export async function loadLoreBookPrompt(){ const currentChat = char.chats[page].message const loreDepth = char.loreSettings?.scanDepth ?? db.loreBookDepth const loreToken = char.loreSettings?.tokenBudget ?? db.loreBookToken + const fullWordMatching = char.loreSettings?.fullWordMatching ?? false let activatiedPrompt: string[] = [] @@ -120,6 +121,7 @@ export async function loadLoreBookPrompt(){ while(loreListUpdated){ loreListUpdated = false const formatedChat = formatedChatMain + activatiedPrompt.join('').replace(rmRegex,'').toLocaleLowerCase() + const formatedChatList = fullWordMatching ? formatedChat.split(' ') : formatedChat for(let i=0;i