From 2f1cae91f951e79272259b2bb7342aa90f7e60b9 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 25 Jun 2023 23:55:47 +0900 Subject: [PATCH] [fix] stringlize ain and revert cha --- src/lib/ChatScreens/Chat.svelte | 39 ++++++++++-------------- src/lib/Setting/Pages/BotSettings.svelte | 2 +- src/ts/process/request.ts | 6 ++-- src/ts/process/stringlize.ts | 25 ++++++++++++--- src/ts/tokenizer.ts | 3 +- 5 files changed, 41 insertions(+), 34 deletions(-) diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index be0bf967..fb6e37bc 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -8,7 +8,6 @@ import { selectedCharID } from "../../ts/stores"; import { translate } from "../../ts/translator/translator"; import { replacePlaceholders } from "../../ts/util"; - export let message = '' export let name = '' export let isLastMemory:boolean @@ -18,7 +17,6 @@ export let onReroll = () => {} export let unReroll = () => {} export let character:character|groupChat|null = null - let md:string let translating = false let editMode = false let statusMessage:string = '' @@ -26,8 +24,7 @@ let msgDisplay = '' let msgTranslated = '' - let translated = false - + let translated = false; async function rm(){ const rm = $DataBase.askRemoval ? await alertConfirm(language.removeChat) : true if(rm){ @@ -56,7 +53,7 @@ $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].message = msg } - async function displaya(message:string, isStreaming:boolean = false){ + async function displaya(message:string){ if($DataBase.autoTranslate && $DataBase.translator !== ''){ if(msgTranslated==='') msgDisplay = replacePlaceholders(message, name) @@ -67,12 +64,6 @@ else{ msgDisplay = replacePlaceholders(message, name) } - - if(!md || !isStreaming || isStreaming && idx === $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].message.length - 1) { - ParseMarkdown(msgDisplay, character, 'normal').then(mdNew=>{ - md = mdNew - }) - } } const setStatusMessage = (message:string, timeout:number = 0)=>{ @@ -83,7 +74,7 @@ }, timeout) } - $: displaya(message, $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].isStreaming) + $: displaya(message)
@@ -170,17 +161,19 @@
{#if editMode} - {:else if md} - - { - if($DataBase.clickToEdit && idx > -1){ - editMode = true - msgTranslated = "" - } - }} - style:font-size="{0.875 * ($DataBase.zoomsize / 100)}rem" - style:line-height="{1.25 * ($DataBase.zoomsize / 100)}rem" - >{@html md} + {:else} + {#await ParseMarkdown(msgDisplay, character) then md} + + { + if($DataBase.clickToEdit && idx > -1){ + editMode = true + msgTranslated = "" + } + }} + style:font-size="{0.875 * ($DataBase.zoomsize / 100)}rem" + style:line-height="{1.25 * ($DataBase.zoomsize / 100)}rem" + >{@html md} + {/await} {/if} diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index f79908d3..5b3ddb6a 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -94,7 +94,7 @@ Palm2 {language.apiKey} {/if} -{#if $DataBase.aiModel === 'novellist' || $DataBase.subModel === 'novellist'} +{#if $DataBase.aiModel.startsWith('novellist') || $DataBase.subModel.startsWith('novellist')} NovelList {language.apiKey} {/if} diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index 363bd288..65a8dd95 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -3,7 +3,7 @@ import type { OpenAIChat, OpenAIChatFull } from "."; import { DataBase, setDatabase, type character } from "../storage/database"; import { pluginProcess } from "../plugins/plugins"; import { language } from "../../lang"; -import { stringlizeChat, unstringlizeChat } from "./stringlize"; +import { stringlizeAINChat, stringlizeChat, unstringlizeChat } from "./stringlize"; import { globalFetch, isNodeServer, isTauri } from "../storage/globalApi"; import { sleep } from "../util"; import { createDeep } from "./deepai"; @@ -565,12 +565,12 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' }; const send_body = { - text: stringlizeChat(formated, currentChar?.name ?? ''), + text: stringlizeAINChat(formated, currentChar?.name ?? ''), length: maxTokens, temperature: temperature, top_p: 0.7, tailfree: 1.0, - rep_pen: arg.frequencyPenalty ?? (db.frequencyPenalty / 100), + rep_pen: arg.frequencyPenalty ?? (db.frequencyPenalty / 100) + 1, }; const response = await globalFetch(api_server_url + '/api', { diff --git a/src/ts/process/stringlize.ts b/src/ts/process/stringlize.ts index fe608a09..bcd86c24 100644 --- a/src/ts/process/stringlize.ts +++ b/src/ts/process/stringlize.ts @@ -24,17 +24,16 @@ 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:", "system:"] + let chunks:string[] = ["system note:", "system:","system note:", "system:"] if(char){ chunks.push(`${char}:`) } for(const form of formated){ if(form.name){ - const chunk = `${form.name}:` - if(!chunks.includes(chunk)){ - chunks.push(chunk) - } + chunks.push(`${form.name}:`) + chunks.push(`${form.name}:`) + } } @@ -53,4 +52,20 @@ export function unstringlizeChat(text:string, formated:OpenAIChat[], char:string } return text +} + +export function stringlizeAINChat(formated:OpenAIChat[], char:string = ''){ + let resultString:string[] = [] + for(const form of formated){ + if(form.role === 'system'){ + resultString.push(form.content) + } + else if(form.name){ + resultString.push(form.name + ": " + form.content) + } + else{ + resultString.push(form.content) + } + } + return resultString.join('\n\n') + `\n\n${char}:` } \ No newline at end of file diff --git a/src/ts/tokenizer.ts b/src/ts/tokenizer.ts index 4e4bf9a0..1cae5505 100644 --- a/src/ts/tokenizer.ts +++ b/src/ts/tokenizer.ts @@ -7,9 +7,8 @@ import type { OpenAIChat } from "./process"; async function encode(data:string):Promise<(number[]|Uint32Array|Int32Array)>{ let db = get(DataBase) - if(db.aiModel === 'novellist'){ + if(db.aiModel.startsWith('novellist')){ const nv= await tokenizeWebTokenizers(data, 'novellist') - console.log(nv) return nv } if(db.aiModel.startsWith('claude')){