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'){