From 85753a76ef9ff93233a4e0bfdb8a46144bb7d261 Mon Sep 17 00:00:00 2001 From: Bo26fhmC5M <88071760+Bo26fhmC5M@users.noreply.github.com> Date: Sat, 10 May 2025 15:00:35 +0900 Subject: [PATCH] feat: implement preset and parallel requests for HypaV3 --- package.json | 1 + pnpm-lock.yaml | 16 + src/App.svelte | 9 + src/lib/ChatScreens/DefaultChatScreen.svelte | 12 +- src/lib/Others/AlertComp.svelte | 9 +- src/lib/Others/HypaV3Modal.svelte | 70 +- src/lib/Others/HypaV3Progress.svelte | 55 + src/lib/Setting/Pages/OtherBotSettings.svelte | 277 ++- src/lib/SideBars/CharConfig.svelte | 8 +- src/lib/SideBars/Toggles.svelte | 8 +- src/ts/alert.ts | 9 +- src/ts/process/memory/hypamemory.ts | 41 +- src/ts/process/memory/hypamemoryv2.ts | 414 ++++ src/ts/process/memory/hypav3.ts | 1820 ++++++++++++----- src/ts/process/memory/taskRateLimiter.ts | 188 ++ src/ts/process/transformers.ts | 7 + src/ts/process/webllm.ts | 60 + src/ts/storage/database.svelte.ts | 43 +- src/ts/stores.svelte.ts | 7 + 19 files changed, 2382 insertions(+), 672 deletions(-) create mode 100644 src/lib/Others/HypaV3Progress.svelte create mode 100644 src/ts/process/memory/hypamemoryv2.ts create mode 100644 src/ts/process/memory/taskRateLimiter.ts create mode 100644 src/ts/process/webllm.ts diff --git a/package.json b/package.json index 5e944acf..2e9ef071 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@dqbd/tiktoken": "^1.0.7", "@huggingface/jinja": "^0.2.2", "@huggingface/transformers": "^3.1.1", + "@mlc-ai/web-llm": "^0.2.79", "@mlc-ai/web-tokenizers": "^0.1.2", "@risuai/ccardlib": "^0.4.1", "@rollup/rollup-win32-arm64-msvc": "^4.40.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71ece55d..e6612fef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: '@huggingface/transformers': specifier: ^3.1.1 version: 3.1.1 + '@mlc-ai/web-llm': + specifier: ^0.2.79 + version: 0.2.79 '@mlc-ai/web-tokenizers': specifier: ^0.1.2 version: 0.1.2 @@ -786,6 +789,9 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true + '@mlc-ai/web-llm@0.2.79': + resolution: {integrity: sha512-Hy1ZHQ0o2bZGZoVnGK48+fts/ZSKwLe96xjvqL/6C59Mem9HoHTcFE07NC2E23mRmhd01tL655N6CPeYmwWgwQ==} + '@mlc-ai/web-tokenizers@0.1.2': resolution: {integrity: sha512-zpeZjiw8vTuaSjIeoEDYJL1nOrhSL/7eAW7hhqd3CzIodLpuArfyiTZxKwIlew8kkqb0RIxooqeAqtlngh1p8g==} @@ -2508,6 +2514,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} @@ -4366,6 +4376,10 @@ snapshots: - supports-color optional: true + '@mlc-ai/web-llm@0.2.79': + dependencies: + loglevel: 1.9.2 + '@mlc-ai/web-tokenizers@0.1.2': {} '@msgpack/msgpack@2.8.0': {} @@ -6083,6 +6097,8 @@ snapshots: lodash@4.17.21: {} + loglevel@1.9.2: {} + long@5.2.3: {} lru-cache@10.1.0: {} diff --git a/src/App.svelte b/src/App.svelte index 7d21e2d8..be41032c 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -19,6 +19,9 @@ import CustomGUISettingMenu from './lib/Setting/Pages/CustomGUISettingMenu.svelte'; import { checkCharOrder } from './ts/globalApi.svelte'; import { ArrowUpIcon, GlobeIcon, PlusIcon } from 'lucide-svelte'; + import { hypaV3ModalOpen, hypaV3ProgressStore } from "./ts/stores.svelte"; + import HypaV3Modal from './lib/Others/HypaV3Modal.svelte'; + import HypaV3Progress from './lib/Others/HypaV3Progress.svelte'; let didFirstSetup: boolean = $derived(DBState.db?.didFirstSetup) @@ -167,5 +170,11 @@ {#if $openPersonaList} {$openPersonaList = false}} /> {/if} + {#if $hypaV3ModalOpen} + + {/if} + {#if $hypaV3ProgressStore.open} + + {/if} \ No newline at end of file diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index f4449e37..6fa1078e 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -3,7 +3,7 @@ import Suggestion from './Suggestion.svelte'; import AdvancedChatEditor from './AdvancedChatEditor.svelte'; import { CameraIcon, DatabaseIcon, DicesIcon, GlobeIcon, ImagePlusIcon, LanguagesIcon, Laugh, MenuIcon, MicOffIcon, PackageIcon, Plus, RefreshCcwIcon, ReplyIcon, Send, StepForwardIcon, XIcon, BrainIcon } from "lucide-svelte"; - import { selectedCharID, PlaygroundStore, createSimpleCharacter } from "../../ts/stores.svelte"; + import { selectedCharID, PlaygroundStore, createSimpleCharacter, hypaV3ModalOpen } from "../../ts/stores.svelte"; import Chat from "./Chat.svelte"; import { type Message, type character, type groupChat } from "../../ts/storage/database.svelte"; import { DBState } from 'src/ts/stores.svelte'; @@ -12,7 +12,7 @@ import { findCharacterbyId, getUserIconProtrait, messageForm, sleep } from "../../ts/util"; import { language } from "../../lang"; import { isExpTranslator, translate } from "../../ts/translator/translator"; - import { alertError, alertNormal, alertWait, showHypaV2Alert, showHypaV3Alert } from "../../ts/alert"; + import { alertError, alertNormal, alertWait, showHypaV2Alert } from "../../ts/alert"; import sendSound from '../../etc/send.mp3' import { processScript } from "src/ts/process/scripts"; import CreatorQuote from "./CreatorQuote.svelte"; @@ -829,17 +829,17 @@ {/if} {#if DBState.db.showMenuHypaMemoryModal} - {#if DBState.db.supaModelType !== 'none' && (DBState.db.hypav2 || DBState.db.hypaV3)} + {#if (DBState.db.supaModelType !== 'none' && DBState.db.hypav2) || DBState.db.hypaV3}
{ if (DBState.db.hypav2) { DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].hypaV2Data ??= { lastMainChunkID: 0, mainChunks: [], - chunks: [], + chunks: [] } - showHypaV2Alert(); + showHypaV2Alert() } else if (DBState.db.hypaV3) { - showHypaV3Alert(); + $hypaV3ModalOpen = true } openMenu = false diff --git a/src/lib/Others/AlertComp.svelte b/src/lib/Others/AlertComp.svelte index 7801aee6..f14b789a 100644 --- a/src/lib/Others/AlertComp.svelte +++ b/src/lib/Others/AlertComp.svelte @@ -23,9 +23,8 @@ import Help from "./Help.svelte"; import { getChatBranches } from "src/ts/gui/branches"; import { getCurrentCharacter } from "src/ts/storage/database.svelte"; - import { message } from "@tauri-apps/plugin-dialog"; - import HypaV3Modal from './HypaV3Modal.svelte'; - import Googli from "../UI/Googli.svelte"; + import Googli from "../UI/Googli.svelte"; + let btn let input = $state('') let cardExportType = $state('realm') @@ -651,10 +650,6 @@
{/if} -{#if $alertStore.type === "hypaV3"} - -{/if} -