From 50d20bcc3feac335238ef85c1434e713d9040db3 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Tue, 3 Dec 2024 21:34:55 +0900 Subject: [PATCH] Add custom flags --- src/lang/en.ts | 2 ++ src/lib/Setting/Pages/BotSettings.svelte | 32 ++++++++++++++++++++++++ src/ts/model/modellist.ts | 14 ++++++++--- src/ts/storage/database.svelte.ts | 12 ++++++++- 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index ff25a193..d10ba8f5 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -815,4 +815,6 @@ export const languageEnglish = { autoTranslateCachedOnly: "Auto Translate Cached Only", notification: "Notification", permissionDenied: "Permission Denied by Your Browser or OS", + customFlags: "Custom Flags", + enableCustomFlags: "Enable Custom Flags", } \ No newline at end of file diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index 9615ffd3..7f04094a 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -596,6 +596,38 @@ }}/> {/if} + + {#snippet CustomFlagButton(name:string,flag:number)} + + {/snippet} + + + + + + {#if DBState.db.enableCustomFlags} + {@render CustomFlagButton('hasImageInput', 0)} + {@render CustomFlagButton('hasImageOutput', 1)} + {@render CustomFlagButton('hasAudioInput', 2)} + {@render CustomFlagButton('hasAudioOutput', 3)} + {@render CustomFlagButton('hasPrefill', 4)} + {@render CustomFlagButton('hasCache', 5)} + {@render CustomFlagButton('hasFullSystemPrompt', 6)} + {@render CustomFlagButton('hasFirstSystemPrompt', 7)} + {@render CustomFlagButton('hasStreaming', 8)} + {@render CustomFlagButton('requiresAlternateRole', 9)} + {@render CustomFlagButton('mustStartWithUserInput', 10)} + {/if} + diff --git a/src/ts/model/modellist.ts b/src/ts/model/modellist.ts index 5d94cc1a..5428b02d 100644 --- a/src/ts/model/modellist.ts +++ b/src/ts/model/modellist.ts @@ -1,4 +1,5 @@ import type { Parameter } from "../process/request" +import { getDatabase } from "../storage/database.svelte" export enum LLMFlags{ hasImageInput, @@ -979,11 +980,16 @@ for(let model of LLMModels){ export function getModelInfo(id: string): LLMModel{ - const found:LLMModel = LLMModels.find(model => model.id === id) + const db = getDatabase() + const found:LLMModel = safeStructuredClone(LLMModels.find(model => model.id === id)) + + if(found){ + if(db.enableCustomFlags){ + found.flags = db.customFlags + } - console.log('found', found) - - if(found) return found + return found + } if(id.startsWith('hf:::')){ const withoutPrefix = id.replace('hf:::', '') diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts index 3e5ab72a..c0e4457d 100644 --- a/src/ts/storage/database.svelte.ts +++ b/src/ts/storage/database.svelte.ts @@ -459,6 +459,8 @@ export function setDatabase(data:Database){ translate: {}, otherAx: {} } + data.customFlags ??= [] + data.enableCustomFlags ??= false changeLanguage(data.language) setDatabaseLite(data) } @@ -849,6 +851,8 @@ export interface Database{ autoTranslateCachedOnly:boolean lightningRealmImport:boolean notification: boolean + customFlags: LLMFlags[] + enableCustomFlags: boolean } interface SeparateParameters{ @@ -1168,6 +1172,8 @@ export interface botPreset{ systemContentReplacement?: string systemRoleReplacement?: 'user'|'assistant' openAIPrediction?: string + enableCustomFlags?: boolean + customFlags?: LLMFlags[] } @@ -1466,6 +1472,8 @@ export function saveCurrentPreset(){ customAPIFormat: safeStructuredClone(db.customAPIFormat), systemContentReplacement: db.systemContentReplacement, systemRoleReplacement: db.systemRoleReplacement, + customFlags: safeStructuredClone(db.customFlags), + enableCustomFlags: db.enableCustomFlags, } db.botPresets = pres setDatabase(db) @@ -1571,6 +1579,8 @@ export function setPreset(db:Database, newPres: botPreset){ db.customAPIFormat = safeStructuredClone(newPres.customAPIFormat) ?? LLMFormat.OpenAICompatible db.systemContentReplacement = newPres.systemContentReplacement ?? '' db.systemRoleReplacement = newPres.systemRoleReplacement ?? 'user' + db.customFlags = safeStructuredClone(newPres.customFlags) ?? [] + db.enableCustomFlags = newPres.enableCustomFlags ?? false return db } @@ -1581,7 +1591,7 @@ import type { RisuModule } from '../process/modules'; import type { HypaV2Data } from '../process/memory/hypav2'; import { decodeRPack, encodeRPack } from '../rpack/rpack_bg'; import { DBState, selectedCharID } from '../stores.svelte'; -import { LLMFormat } from '../model/modellist'; +import { LLMFlags, LLMFormat } from '../model/modellist'; import type { Parameter } from '../process/request'; export async function downloadPreset(id:number, type:'json'|'risupreset'|'return' = 'json'){