From 3f997ee9b8133424d861cb742fb040e01eddebe0 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 10 May 2023 15:18:37 +0900 Subject: [PATCH 1/3] [fix] oogabooga again --- src/ts/process/request.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index 4b144da2..b146a326 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -112,6 +112,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' let bodyTemplate:any const proompt = stringlizeChat(formated, currentChar.name) const isNewAPI = DURL.includes('api') + const stopStrings = [`\nUser:`,`\nuser:`,`\n${db.username}:`] + if(isNewAPI){ bodyTemplate = { 'max_new_tokens': 80, @@ -119,7 +121,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' 'temperature': (db.temperature / 100), 'top_p': 0.9, 'typical_p': 1, - 'repetition_penalty': (db.PresensePenalty / 100), + 'repetition_penalty': db.PresensePenalty < 85 ? 0.85 : (db.PresensePenalty / 100), 'encoder_repetition_penalty': 1, 'top_k': 100, 'min_length': 0, @@ -130,7 +132,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' 'early_stopping': false, 'truncation_length': maxTokens, 'ban_eos_token': false, - 'custom_stopping_strings': [`\nUser:`,`\nuser:`], + 'stopping_strings': stopStrings, 'seed': -1, add_bos_token: true, prompt: proompt @@ -145,7 +147,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' 'temperature': (db.temperature / 100), 'top_p': 0.9, 'typical_p': 1, - 'repetition_penalty': (db.PresensePenalty / 100), + 'repetition_penalty': db.PresensePenalty < 85 ? 0.85 : (db.PresensePenalty / 100), 'encoder_repetition_penalty': 1, 'top_k': 100, 'min_length': 0, @@ -156,7 +158,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' 'early_stopping': false, 'truncation_length': maxTokens, 'ban_eos_token': false, - 'custom_stopping_strings': [`\nUser:`,`\nuser:`], + 'custom_stopping_strings': stopStrings, 'seed': -1, add_bos_token: true, } @@ -175,15 +177,17 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' console.log(res.data) if(res.ok){ try { - if(isNewAPI){ - return { - type: 'success', - result: dat.results[0].text.substring(proompt.length) + let result:string = isNewAPI ? dat.results[0].text : dat.data[0].substring(proompt.length) + + for(const stopStr of stopStrings){ + if(result.endsWith(stopStr)){ + result.substring(0,result.length - stopStr.length) } } + return { type: 'success', - result: dat.data[0].substring(proompt.length) + result: result } } catch (error) { return { From 59cc0b37b423d8acabe8de8c3d7d1f8747528e45 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 10 May 2023 20:31:17 +0900 Subject: [PATCH 2/3] [feat] added characterhub endpoint --- src/ts/characterCards.ts | 149 ++++++++++++++++++++++++--------------- src/ts/globalApi.ts | 4 ++ 2 files changed, 95 insertions(+), 58 deletions(-) diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index 6a6e4ace..64f8d1f1 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -27,29 +27,7 @@ export async function importCharacter() { } if((da.char_name || da.name) && (da.char_persona || da.description) && (da.char_greeting || da.first_mes)){ let db = get(DataBase) - db.characters.push({ - name: da.char_name ?? da.name, - firstMessage: da.char_greeting ?? da.first_mes, - desc: da.char_persona ?? da.description, - notes: '', - chats: [{ - message: [], - note: '', - name: 'Chat 1', - localLore: [] - }], - chatPage: 0, - image: '', - emotionImages: [], - bias: [], - globalLore: [], - viewScreen: 'none', - chaId: uuidv4(), - sdData: defaultSdDataFunc(), - utilityBot: false, - customscript: [], - exampleMessage: '' - }) + db.characters.push(convertOldTavernAndJSON(da)) DataBase.set(db) alertNormal(language.importedCharacter) return @@ -83,7 +61,6 @@ export async function importCharacter() { return } - let char:character = va.data let db = get(DataBase) if(char.emotionImages && char.emotionImages.length > 0){ @@ -118,38 +95,12 @@ export async function importCharacter() { } else if(readed.chara){ const charaData:OldTavernChar = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) - if(charaData.first_mes && charaData.name && charaData.description){ - const imgp = await saveImage(PngMetadata.filter(img)) - let db = get(DataBase) - db.characters.push({ - name: charaData.name, - firstMessage: charaData.first_mes, - desc: charaData.description, - notes: '', - chats: [{ - message: [], - note: '', - name: 'Chat 1', - localLore: [] - }], - chatPage: 0, - image: imgp, - emotionImages: [], - bias: [], - globalLore: [], - viewScreen: 'none', - chaId: uuidv4(), - sdData: defaultSdDataFunc(), - utilityBot: false, - customscript: [], - exampleMessage: '' - }) - DataBase.set(db) - alertNormal(language.importedCharacter) - return db.characters.length - 1 - } - alertError(language.errors.noData) - return null + const imgp = await saveImage(PngMetadata.filter(img)) + let db = get(DataBase) + db.characters.push(convertOldTavernAndJSON(charaData, imgp)) + DataBase.set(db) + alertNormal(language.importedCharacter) + return db.characters.length - 1 } else{ alertError(language.errors.noData) @@ -161,6 +112,88 @@ export async function importCharacter() { } } +export async function characterHubImport() { + const charPath = (new URLSearchParams(location.search)).get('charahub') + try { + if(charPath){ + const url = new URL(location.href); + url.searchParams.delete('charahub'); + window.history.pushState(null, '', url.toString()); + const chara = await fetch("https://api.characterhub.org/api/characters/download", { + method: "POST", + body: JSON.stringify({ + "format": "tavern", + "fullPath": charPath, + "version": "main" + }), + headers: { + "content-type": "application/json" + } + }) + const img = new Uint8Array(await chara.arrayBuffer()) + + const readed = (await exifr.parse(img, true)) + { + const charaData:CharacterCardV2 = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) + if(await importSpecv2(charaData, img)){ + + return + } + } + { + const imgp = await saveImage(PngMetadata.filter(img)) + let db = get(DataBase) + const charaData:OldTavernChar = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) + db.characters.push(convertOldTavernAndJSON(charaData, imgp)) + + DataBase.set(db) + alertNormal(language.importedCharacter) + return + } + } + } catch (error) { + alertError(language.errors.noData) + return null + } +} + + +function convertOldTavernAndJSON(charaData:OldTavernChar, imgp:string|undefined = undefined):character{ + + let desc = charaData.description ?? '' + + if(charaData.personality){ + desc += '\n\n' + charaData.personality + } + + if(charaData.scenario){ + desc += '\n\n' + charaData.scenario + } + + return { + name: charaData.name ?? 'unknown name', + firstMessage: charaData.first_mes ?? 'unknown first message', + desc: desc, + notes: '', + chats: [{ + message: [], + note: '', + name: 'Chat 1', + localLore: [] + }], + chatPage: 0, + image: imgp, + emotionImages: [], + bias: [], + globalLore: [], + viewScreen: 'none', + chaId: uuidv4(), + sdData: defaultSdDataFunc(), + utilityBot: false, + customscript: [], + exampleMessage: charaData.mes_example + } +} export async function exportChar(charaID:number) { const db = get(DataBase) @@ -313,7 +346,7 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array):Promise" + mes_example: string name: string personality: "" scenario: "" diff --git a/src/ts/globalApi.ts b/src/ts/globalApi.ts index ef02e9bf..f38f82ec 100644 --- a/src/ts/globalApi.ts +++ b/src/ts/globalApi.ts @@ -15,6 +15,7 @@ import { loadPlugins } from "./process/plugins"; import { alertError, alertStore } from "./alert"; import { checkDriverInit } from "./drive/drive"; import { hasher } from "./parser"; +import { characterHubImport } from "./characterCards"; //@ts-ignore export const isTauri = !!window.__TAURI__ @@ -266,6 +267,9 @@ export async function loadData() { usingSw = false } checkOldDomain() + if(get(DataBase).didFirstSetup){ + characterHubImport() + } } try { await pargeChunks() From 050c75c6ea7f6b18966340b2e42a5972f1c2e694 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 10 May 2023 20:33:43 +0900 Subject: [PATCH 3/3] update version to 0.7.9 --- src-tauri/tauri.conf.json | 2 +- src/ts/database.ts | 2 +- version.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 028e8a90..9f737d91 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "0.7.8" + "version": "0.7.9" }, "tauri": { "allowlist": { diff --git a/src/ts/database.ts b/src/ts/database.ts index 3912433f..157e83b9 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -7,7 +7,7 @@ import { cloneDeep } from 'lodash'; export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = '0.7.8' +export let appVer = '0.7.9' export function setDatabase(data:Database){ diff --git a/version.json b/version.json index cc56705f..e5c80ff1 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"0.7.8"} +{"version":"0.7.9"}