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)