diff --git a/src/lib/ChatScreens/ChatScreen.svelte b/src/lib/ChatScreens/ChatScreen.svelte index 01fe227f..8c6b64f2 100644 --- a/src/lib/ChatScreens/ChatScreen.svelte +++ b/src/lib/ChatScreens/ChatScreen.svelte @@ -12,6 +12,11 @@ import VisualNovelMain from "../VisualNovel/VisualNovelMain.svelte"; let openChatList = false + $:{ + if ($DataBase.translatorType === 'submodel'){ + $DataBase.useStreaming = false + } + } const wallPaper = `background: url(${defaultWallpaper})` const externalStyles = ("background: " + ($DataBase.textScreenColor ? ($DataBase.textScreenColor + '80') : "rgba(0,0,0,0.8)") + ';\n') diff --git a/src/lib/Setting/Pages/LanguageSettings.svelte b/src/lib/Setting/Pages/LanguageSettings.svelte index 5b50227a..6ef683ff 100644 --- a/src/lib/Setting/Pages/LanguageSettings.svelte +++ b/src/lib/Setting/Pages/LanguageSettings.svelte @@ -3,14 +3,14 @@ import { changeLanguage, language } from "src/lang"; import { DataBase } from "src/ts/storage/database"; import { sleep } from "src/ts/util"; - import Help from "src/lib/Others/Help.svelte"; import OptionInput from "src/lib/UI/GUI/OptionInput.svelte"; import SelectInput from "src/lib/UI/GUI/SelectInput.svelte"; import { alertNormal } from "src/ts/alert"; import { downloadFile } from "src/ts/storage/globalApi"; import { languageEnglish } from "src/lang/en"; - import TextInput from "src/lib/UI/GUI/TextInput.svelte"; + import TextInput from "src/lib/UI/GUI/TextInput.svelte"; let langChanged = false +

{language.language}

@@ -56,6 +56,7 @@ Google DeepL + Use submodel {#if $DataBase.translatorType === 'deepl'} @@ -67,6 +68,11 @@ + {:else if $DataBase.translatorType === 'submodel'} + Translate Prompt + + Response streaming is disabled when using submodels. + Translation sends a lot of requests at once, so don't use it at reverse proxy. {/if} diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 7be52f40..e17f9892 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -309,6 +309,9 @@ export function setDatabase(data:Database){ if(!data.formatingOrder.includes('personaPrompt')){ data.formatingOrder.splice(data.formatingOrder.indexOf('main'),0,'personaPrompt') } + if(checkNullish(data.translatorprompt)){ + data.translatorprompt = "" + } data.selectedPersona ??= 0 data.personaPrompt ??= '' data.personas ??= [{ @@ -519,13 +522,14 @@ export interface Database{ mancerHeader:string emotionProcesser:'submodel'|'embedding', showMenuChatList?:boolean, - translatorType:'google'|'deepl'|'none', + translatorType:'google'|'deepl'|'submodel'|'none', NAIadventure?:boolean, NAIappendName?:boolean, deeplOptions:{ key:string, freeApi:boolean } + translatorprompt:string localStopStrings?:string[] autofillRequestUrl:boolean customProxyRequestModel:string diff --git a/src/ts/translator/translator.ts b/src/ts/translator/translator.ts index e16864ac..94dad744 100644 --- a/src/ts/translator/translator.ts +++ b/src/ts/translator/translator.ts @@ -3,6 +3,8 @@ import { translatorPlugin } from "../plugins/plugins" import { DataBase } from "../storage/database" import { globalFetch } from "../storage/globalApi" import { alertError } from "../alert" +import type { OpenAIChat } from "../process" +import { requestChatData } from "../process/request" let cache={ origin: [''], @@ -120,7 +122,39 @@ async function translateMain(text:string, arg:{from:string, to:string, host:stri } + if(db.translatorType === 'submodel'){ + const defaulttranslateprompt = `You need to translate the entered sentence from ${arg.from.toLocaleUpperCase()} to ${arg.to.toLocaleUpperCase()}. You must not write any words other than the translated sentence.` + + const translateprompt = (db.translatorprompt === '')? defaulttranslateprompt : db.translatorprompt + + const promptbody:OpenAIChat[] = [ + { + role:'system', + content: translateprompt + }, + { + role: 'user', + content: text + }, + ] + const rq = await requestChatData({ + formated: promptbody, + temperature: 0.2, + maxTokens: 500, + bias: {} + }, 'submodel') + + if(rq.type === 'fail' || rq.type === 'streaming' || rq.type === 'multiline'){ + alertError(`${rq.result}`) + return false + } + + const r = rq.result + console.log(r) + + return r + } const url = `https://${arg.host}/translate_a/single?client=gtx&dt=t&sl=${arg.from}&tl=${arg.to}&q=` + encodeURIComponent(text)