From 4903a88131e2fe0db515c21b46e017700e0f67a3 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Fri, 26 May 2023 20:23:45 +0900 Subject: [PATCH] [feat] new model selection screen --- src/lib/Setting/Settings.svelte | 6 +-- src/lib/UI/Arcodion.svelte | 15 ++++++ src/lib/UI/ModelList.svelte | 88 ++++++++++++++++++++++++--------- src/ts/database.ts | 8 ++- src/ts/process/index.ts | 2 +- src/ts/process/request.ts | 32 +++++++++++- src/ts/process/stringlize.ts | 4 +- 7 files changed, 123 insertions(+), 32 deletions(-) create mode 100644 src/lib/UI/Arcodion.svelte diff --git a/src/lib/Setting/Settings.svelte b/src/lib/Setting/Settings.svelte index f3f11252..e1415237 100644 --- a/src/lib/Setting/Settings.svelte +++ b/src/lib/Setting/Settings.svelte @@ -13,9 +13,9 @@ import Communities from "./Pages/Communities.svelte"; import GlobalLoreBookSettings from "./Pages/GlobalLoreBookSettings.svelte"; import Lorepreset from "./lorepreset.svelte"; - import GlobalRegex from "./Pages/GlobalRegex.svelte"; - import LanguageSettings from "./Pages/LanguageSettings.svelte"; - import AccessibilitySettings from "./Pages/AccessibilitySettings.svelte"; + import GlobalRegex from "./Pages/GlobalRegex.svelte"; + import LanguageSettings from "./Pages/LanguageSettings.svelte"; + import AccessibilitySettings from "./Pages/AccessibilitySettings.svelte"; let selected = -1 let openPresetList = false let openLoreList = false diff --git a/src/lib/UI/Arcodion.svelte b/src/lib/UI/Arcodion.svelte new file mode 100644 index 00000000..fc33234e --- /dev/null +++ b/src/lib/UI/Arcodion.svelte @@ -0,0 +1,15 @@ + + +
+ + {#if open} +
+ +
+ {/if} +
diff --git a/src/lib/UI/ModelList.svelte b/src/lib/UI/ModelList.svelte index b1006f69..b0187c0a 100644 --- a/src/lib/UI/ModelList.svelte +++ b/src/lib/UI/ModelList.svelte @@ -1,32 +1,74 @@ -{#await getHordeModels()} - -{:then models} - -{/await} \ No newline at end of file + + + +{/if} + + + diff --git a/src/ts/database.ts b/src/ts/database.ts index 488f3467..b1b178b5 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -4,6 +4,7 @@ import { changeLanguage } from '../lang'; import type { RisuPlugin } from './process/plugins'; import { saveAsset as saveImageGlobal } from './globalApi'; import { cloneDeep } from 'lodash'; +import type { S } from '@tauri-apps/api/dialog-20ff401c'; export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) @@ -386,6 +387,7 @@ export interface botPreset{ forceReplaceUrl2:string promptPreprocess: boolean, bias: [string, number][] + koboldURL?: string } export interface Database{ @@ -486,6 +488,7 @@ export interface Database{ globalscript: customscript[] sendWithEnter:boolean clickToEdit: boolean + koboldURL:string } @@ -627,7 +630,9 @@ export function saveCurrentPreset(){ forceReplaceUrl: db.forceReplaceUrl, forceReplaceUrl2: db.forceReplaceUrl2, promptPreprocess: db.promptPreprocess, - bias: db.bias + bias: db.bias, + koboldURL: db.koboldURL + } db.botPresets = pres DataBase.set(db) @@ -668,5 +673,6 @@ export function changeToPreset(id =0){ db.promptPreprocess = newPres.promptPreprocess ?? db.promptPreprocess db.forceReplaceUrl2 = newPres.forceReplaceUrl2 ?? db.forceReplaceUrl2 db.bias = newPres.bias ?? db.bias + db.koboldURL = newPres.koboldURL ?? db.koboldURL DataBase.set(db) } \ No newline at end of file diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 8158b892..5019fff9 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -241,7 +241,7 @@ export async function sendChat(chatProcessIndex = -1):Promise { else{ while(currentTokens > maxContextTokens){ if(chats.length <= 1){ - alertError(language.errors.toomuchtoken) + alertError(language.errors.toomuchtoken + "\n\nRequired Tokens: " + currentTokens) return false } diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index cd9da3db..12077108 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -418,6 +418,34 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' } } } + case "kobold":{ + const proompt = stringlizeChat(formated, currentChar?.name ?? '') + const url = new URL(db.koboldURL) + url.pathname = '/generate' + + const da = await fetch(url, { + method: "POST", + body: JSON.stringify({ + "prompt": proompt, + "temperature": db.temperature, + "top_p": 0.9 + }), + headers: { + "content-type": "application/json", + } + }) + + if(da.status !== 200){ + return { + type: "fail", + result: await da.text(), + noRetry: da.status >= 500 + } + } + + const data = await da.json() + return data.results[0].text + } default:{ if(aiModel.startsWith("horde:::")){ const proompt = stringlizeChat(formated, currentChar?.name ?? '') @@ -432,8 +460,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' "frmtrmblln": false, "frmtrmspch": false, "frmttriminc": false, - "max_context_length": 200, - "max_length": 20, + "max_context_length": db.maxContext + 100, + "max_length": db.maxResponse, "rep_pen": 3, "rep_pen_range": 0, "rep_pen_slope": 10, diff --git a/src/ts/process/stringlize.ts b/src/ts/process/stringlize.ts index 62e58d4d..bc62b518 100644 --- a/src/ts/process/stringlize.ts +++ b/src/ts/process/stringlize.ts @@ -8,7 +8,7 @@ export function stringlizeChat(formated:OpenAIChat[], char:string = ''){ let resultString:string[] = [] for(const form of formated){ if(form.role === 'system'){ - resultString.push("system note: " + form.content) + resultString.push("system: " + form.content) } else if(form.name){ resultString.push(form.name + ": " + form.content) @@ -23,7 +23,7 @@ export function stringlizeChat(formated:OpenAIChat[], char:string = ''){ export function unstringlizeChat(text:string, formated:OpenAIChat[], char:string = ''){ console.log(text) let minIndex = -1 - let chunks:string[] = ["system note:"] + let chunks:string[] = ["system note:", "system:"] if(char){ chunks.push(`${char}:`) }