From a3b90e8b866b306c80290d4cc2f8f3e5246c8a17 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 24 Dec 2023 20:02:15 +0900 Subject: [PATCH] [feat] added template setting --- src/lang/en.ts | 9 +- src/lang/ko.ts | 1 + src/lib/Setting/Pages/PromptSettings.svelte | 116 ++++++++++++-------- src/ts/process/index.ts | 36 +++++- src/ts/process/proompt.ts | 8 ++ src/ts/storage/database.ts | 22 +++- 6 files changed, 142 insertions(+), 50 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index c50fb12d..fd6bdd36 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -465,5 +465,12 @@ export const languageEnglish = { newOAIHandle: "New OpenAI Handling", oaiRandomUser: "Put OAI Random User", inlayImage: "Inlay Image Feature", - nativeAutomark: "Experimental Native Automark" + nativeAutomark: "Experimental Native Automark", + assistantPrefill: "Assistant Prefill", + postEndInnerFormat: "Post End", + sendChatAsSystem: "Send Chat as System", + sendName: "Send Name", + utilOverride: "Utility Override", + template: "Template", + } \ No newline at end of file diff --git a/src/lang/ko.ts b/src/lang/ko.ts index 58464a96..4e60357e 100644 --- a/src/lang/ko.ts +++ b/src/lang/ko.ts @@ -417,4 +417,5 @@ export const languageKorean = { nativeAutomark: "실험적 네이티브 오토마크 사용", additionalAssets:"추가 에셋", genTimes: "생성 횟수", + template: "템플릿", } \ No newline at end of file diff --git a/src/lib/Setting/Pages/PromptSettings.svelte b/src/lib/Setting/Pages/PromptSettings.svelte index af50a2b1..76e44dfc 100644 --- a/src/lib/Setting/Pages/PromptSettings.svelte +++ b/src/lib/Setting/Pages/PromptSettings.svelte @@ -5,6 +5,8 @@ import { tokenizePreset, type Proompt } from "src/ts/process/proompt"; import { templateCheck } from "src/ts/process/templates/templateCheck"; import { DataBase } from "src/ts/storage/database"; + import Check from "src/lib/UI/GUI/CheckInput.svelte"; + import TextInput from "src/lib/UI/GUI/TextInput.svelte"; let sorted = 0 let opened = 0 @@ -13,6 +15,7 @@ let tokens = 0 let extokens = 0 executeTokenize($DataBase.promptTemplate) + let subMenu = 0 async function executeTokenize(prest: Proompt[]){ tokens = await tokenizePreset(prest, true) @@ -29,6 +32,18 @@ {language.promptTemplate} +
+ + +
{#if warns.length > 0}

Warning

@@ -38,49 +53,62 @@ {/each}
{/if} -
- {#if $DataBase.promptTemplate.length === 0} -
No Format
- {/if} - {#key sorted} - {#each $DataBase.promptTemplate as proompt, i} - { - let templates = $DataBase.promptTemplate - templates.splice(i, 1) - $DataBase.promptTemplate = templates - }} moveDown={() => { - if(i === $DataBase.promptTemplate.length - 1){ - return - } - let templates = $DataBase.promptTemplate - let temp = templates[i] - templates[i] = templates[i + 1] - templates[i + 1] = temp - $DataBase.promptTemplate = templates - }} moveUp={() => { - if(i === 0){ - return - } - let templates = $DataBase.promptTemplate - let temp = templates[i] - templates[i] = templates[i - 1] - templates[i - 1] = temp - $DataBase.promptTemplate = templates - }} /> - {/each} - {/key} -
- +{#if subMenu === 0} +
+ {#if $DataBase.promptTemplate.length === 0} +
No Format
+ {/if} + {#key sorted} + {#each $DataBase.promptTemplate as proompt, i} + { + let templates = $DataBase.promptTemplate + templates.splice(i, 1) + $DataBase.promptTemplate = templates + }} moveDown={() => { + if(i === $DataBase.promptTemplate.length - 1){ + return + } + let templates = $DataBase.promptTemplate + let temp = templates[i] + templates[i] = templates[i + 1] + templates[i + 1] = temp + $DataBase.promptTemplate = templates + }} moveUp={() => { + if(i === 0){ + return + } + let templates = $DataBase.promptTemplate + let temp = templates[i] + templates[i] = templates[i - 1] + templates[i - 1] = temp + $DataBase.promptTemplate = templates + }} /> + {/each} + {/key} +
-{tokens} {language.fixedTokens} -{extokens} {language.exactTokens} \ No newline at end of file + + + {tokens} {language.fixedTokens} + {extokens} {language.exactTokens} +{:else} + + + {language.postEndInnerFormat} + + + + + +{/if} \ No newline at end of file diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 23500d32..84f3ee63 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -179,12 +179,13 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n } let promptTemplate = cloneDeep(db.promptTemplate) + const usingPromptTemplate = !!promptTemplate if(promptTemplate){ promptTemplate.push({ type: 'postEverything' }) } - if(currentChar.utilityBot){ + if(currentChar.utilityBot && (!(usingPromptTemplate && db.proomptSettings.utilOverride))){ promptTemplate = [ { "type": "plain", @@ -392,6 +393,12 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n } case 'postEverything':{ await tokenizeChatArray(unformated.postEverything) + if(usingPromptTemplate && db.proomptSettings.postEndInnerFormat){ + await tokenizeChatArray([{ + role: 'system', + content: db.proomptSettings.postEndInnerFormat + }]) + } break } case 'plain': @@ -445,7 +452,11 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n if(start >= end){ break } - const chats = unformated.chats.slice(start, end) + let chats = unformated.chats.slice(start, end) + + if(usingPromptTemplate && db.proomptSettings.sendChatAsSystem){ + chats = systemizeChat(chats) + } await tokenizeChatArray(chats) break } @@ -729,6 +740,12 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n } case 'postEverything':{ pushPrompts(unformated.postEverything) + if(usingPromptTemplate && db.proomptSettings.postEndInnerFormat){ + pushPrompts([{ + role: 'system', + content: db.proomptSettings.postEndInnerFormat + }]) + } break } case 'plain': @@ -783,7 +800,10 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n break } - const chats = unformated.chats.slice(start, end) + let chats = unformated.chats.slice(start, end) + if(usingPromptTemplate && db.proomptSettings.sendChatAsSystem){ + chats = systemizeChat(chats) + } pushPrompts(chats) break } @@ -1244,4 +1264,14 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n } return true +} + +function systemizeChat(chat:OpenAIChat[]){ + for(let i=0;i