From e5c44406fbb0165d54b3376fec5a9f8afeb8816d Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 17 May 2023 01:17:45 +0900 Subject: [PATCH 1/6] [fix] supamemory chat overflow --- src/ts/process/supaMemory.ts | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/ts/process/supaMemory.ts b/src/ts/process/supaMemory.ts index cf48284a..c35a00ab 100644 --- a/src/ts/process/supaMemory.ts +++ b/src/ts/process/supaMemory.ts @@ -7,6 +7,8 @@ import { requestChatData } from "./request"; export async function supaMemory(chats:OpenAIChat[],currentTokens:number,maxContextTokens:number,room:Chat,char:character|groupChat): Promise<{ currentTokens: number; chats: OpenAIChat[]; error?:string; memory?:string}>{ const db = get(DataBase) + console.log("Memory: " + currentTokens) + if(currentTokens > maxContextTokens){ let coIndex = -1 for(let i=0;i Date: Wed, 17 May 2023 02:18:34 +0900 Subject: [PATCH 2/6] [feat] added memory limit line --- src/lang/en.ts | 3 ++- src/lib/ChatScreens/Chat.svelte | 7 ++++--- src/lib/ChatScreens/DefaultChatScreen.svelte | 5 +++++ src/lib/SideBars/Settings.svelte | 5 +++++ src/styles.css | 4 ++++ src/ts/database.ts | 8 ++++++++ src/ts/process/index.ts | 9 ++++++--- src/ts/process/supaMemory.ts | 5 +++-- src/ts/util.ts | 3 ++- 9 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index c2498f8d..9ab20337 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -245,5 +245,6 @@ export const languageEnglish = { Speech: "Speech", ToggleSuperMemory: "Toggle SupaMemory", SuperMemory:"SupaMemory", - useExperimental: "Able Experimental Features" + useExperimental: "Able Experimental Features", + showMemoryLimit: "Show Memory Limit" } diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index 96ecfd44..badda558 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -10,6 +10,7 @@ import { replacePlaceholders } from "../../ts/util"; export let message = '' export let name = '' + export let isLastMemory:boolean export let img:string|Promise = '' export let idx = -1 export let rerollIcon = false @@ -61,8 +62,8 @@ $: displaya(message) -
-
+
+
{#await img}
{:then m} @@ -142,7 +143,7 @@ justify-content: flex-start; } .chat{ - max-width: calc(95% - 0.5rem); + max-width: calc(100% - 0.5rem); word-break: normal; overflow-wrap: anywhere; } diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 937cf5b0..410c8908 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -246,6 +246,7 @@ rerollIcon={i === 0} onReroll={reroll} unReroll={unReroll} + isLastMemory={$DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].lastMemory === (chat.chatId ?? 'none') && $DataBase.showMemoryLimit} /> {:else} {/if} {:else} @@ -264,6 +266,7 @@ name={$DataBase.username} message={chat.data} img={getCharImage($DataBase.userIcon, 'css')} + isLastMemory={$DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].lastMemory === (chat.chatId ?? 'none') && $DataBase.showMemoryLimit} /> {/if} {/each} @@ -300,6 +303,8 @@ } $DataBase.characters[$selectedCharID] = cha }} + isLastMemory={false} + /> {#if !$DataBase.characters[$selectedCharID].removedQuotes && $DataBase.characters[$selectedCharID].creatorNotes.length >= 2} { diff --git a/src/lib/SideBars/Settings.svelte b/src/lib/SideBars/Settings.svelte index ca7e7c22..e7536ed4 100644 --- a/src/lib/SideBars/Settings.svelte +++ b/src/lib/SideBars/Settings.svelte @@ -363,6 +363,11 @@ {language.fullscreen}
+
+ + {language.showMemoryLimit} +
+
{ if(check){ diff --git a/src/styles.css b/src/styles.css index 712fac23..3398f55e 100644 --- a/src/styles.css +++ b/src/styles.css @@ -107,4 +107,8 @@ html, body{ border: none; outline: 0; border-bottom: 1px solid #6272a4; +} + +.bgc{ + border-top: 1px solid rgba(98, 114, 164, 0.3); } \ No newline at end of file diff --git a/src/ts/database.ts b/src/ts/database.ts index 0eb32603..c99d74f2 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -80,6 +80,9 @@ export function setDatabase(data:Database){ if(checkNullish(data.language)){ data.language = 'en' } + if(checkNullish(data.swipe)){ + data.swipe = true + } if(checkNullish(data.translator)){ data.translator = '' } @@ -187,6 +190,9 @@ export function setDatabase(data:Database){ if(checkNullish(data.supaMemoryPrompt)){ data.supaMemoryPrompt = '' } + if(checkNullish(data.showMemoryLimit)){ + data.showMemoryLimit = false + } if(checkNullish(data.sdConfig)){ data.sdConfig = { width:512, @@ -399,6 +405,7 @@ export interface Database{ showUnrecommended:boolean elevenLabKey:string useExperimental:boolean + showMemoryLimit:boolean } @@ -422,6 +429,7 @@ export interface Chat{ localLore: loreBook[] sdData?:string supaMemoryData?:string + lastMemory?:string } export interface Message{ diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 4c04303b..5b564118 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -238,18 +238,21 @@ export async function sendChat(chatProcessIndex = -1):Promise { chats = sp.chats currentTokens = sp.currentTokens currentChat.supaMemoryData = sp.memory ?? currentChat.supaMemoryData + currentChat.lastMemory = sp.lastId ?? currentChat.lastMemory } else{ while(currentTokens > maxContextTokens){ if(chats.length <= 1){ alertError(language.errors.toomuchtoken) - + return false } - + currentTokens -= (await tokenize(chats[0].content) + 1) chats.splice(0, 1) - } + } + currentChat.lastMemory = chats[0].memo + console.log(currentChat.lastMemory) } let bias:{[key:number]:number} = {} diff --git a/src/ts/process/supaMemory.ts b/src/ts/process/supaMemory.ts index c35a00ab..b2fa6d77 100644 --- a/src/ts/process/supaMemory.ts +++ b/src/ts/process/supaMemory.ts @@ -5,7 +5,7 @@ import { tokenize } from "../tokenizer"; import { findCharacterbyId } from "../util"; import { requestChatData } from "./request"; -export async function supaMemory(chats:OpenAIChat[],currentTokens:number,maxContextTokens:number,room:Chat,char:character|groupChat): Promise<{ currentTokens: number; chats: OpenAIChat[]; error?:string; memory?:string}>{ +export async function supaMemory(chats:OpenAIChat[],currentTokens:number,maxContextTokens:number,room:Chat,char:character|groupChat): Promise<{ currentTokens: number; chats: OpenAIChat[]; error?:string; memory?:string;lastId?:string}>{ const db = get(DataBase) console.log("Memory: " + currentTokens) @@ -147,7 +147,8 @@ export async function supaMemory(chats:OpenAIChat[],currentTokens:number,maxCont return { currentTokens: currentTokens, chats: chats, - memory: lastId + '\n' + supaMemory + memory: lastId + '\n' + supaMemory, + lastId: lastId } } diff --git a/src/ts/util.ts b/src/ts/util.ts index 2c4e0d68..49531428 100644 --- a/src/ts/util.ts +++ b/src/ts/util.ts @@ -27,7 +27,8 @@ export function messageForm(arg:Message[], loadPages:number){ role: m.role, data: reformatContent(m.data), index: i, - saying: m.saying + saying: m.saying, + chatId: m.chatId ?? 'none' }) } return a.slice(0, loadPages) From 502ffa73141c340067b3e6ff7a68e8ebe2eb78b1 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 17 May 2023 02:31:14 +0900 Subject: [PATCH 3/6] [feat] round icons --- src/lang/en.ts | 3 ++- src/lib/ChatScreens/Chat.svelte | 6 ++++-- src/lib/SideBars/Settings.svelte | 5 +++++ src/lib/SideBars/SidebarAvatar.svelte | 5 +++++ src/ts/database.ts | 1 + 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 9ab20337..5dd3dcaa 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -246,5 +246,6 @@ export const languageEnglish = { ToggleSuperMemory: "Toggle SupaMemory", SuperMemory:"SupaMemory", useExperimental: "Able Experimental Features", - showMemoryLimit: "Show Memory Limit" + showMemoryLimit: "Show Memory Limit", + roundIcons: "Round Icons" } diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index badda558..0054c483 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -65,9 +65,11 @@
{#await img} -
+
{:then m} -
+
{/await}
diff --git a/src/lib/SideBars/Settings.svelte b/src/lib/SideBars/Settings.svelte index e7536ed4..da2f6de4 100644 --- a/src/lib/SideBars/Settings.svelte +++ b/src/lib/SideBars/Settings.svelte @@ -397,6 +397,11 @@ {language.SwipeRegenerate}
+
+ + {language.roundIcons} +
+
{language.instantRemove} diff --git a/src/lib/SideBars/SidebarAvatar.svelte b/src/lib/SideBars/SidebarAvatar.svelte index 8d133654..c7250796 100644 --- a/src/lib/SideBars/SidebarAvatar.svelte +++ b/src/lib/SideBars/SidebarAvatar.svelte @@ -1,4 +1,6 @@ @@ -11,6 +13,7 @@ style:width={size + "px"} style:height={size + "px"} style:minWidth={size + "px"} + class:rounded-md={!$DataBase.roundIcons} class:rounded-full={$DataBase.roundIcons} /> {:then img} avatar {/await} @@ -28,6 +32,7 @@ style:width={size + "px"} style:height={size + "px"} style:minWidth={size + "px"} + class:rounded-md={!$DataBase.roundIcons} class:rounded-full={$DataBase.roundIcons} /> {/if} diff --git a/src/ts/database.ts b/src/ts/database.ts index c99d74f2..92fd863e 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -406,6 +406,7 @@ export interface Database{ elevenLabKey:string useExperimental:boolean showMemoryLimit:boolean + roundIcons:boolean } From 7ea4945088fa9509591f0537c27bfc645ab49f89 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 17 May 2023 03:11:34 +0900 Subject: [PATCH 4/6] [feat] added streaming partly --- src/lang/en.ts | 3 ++- src/ts/database.ts | 1 + src/ts/process/index.ts | 7 +++++-- src/ts/process/request.ts | 19 +++++++++++++++++++ src/ts/process/stableDiff.ts | 4 ++-- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 5dd3dcaa..34378231 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -247,5 +247,6 @@ export const languageEnglish = { SuperMemory:"SupaMemory", useExperimental: "Able Experimental Features", showMemoryLimit: "Show Memory Limit", - roundIcons: "Round Icons" + roundIcons: "Round Icons", + useStreaming: "Use Streaming" } diff --git a/src/ts/database.ts b/src/ts/database.ts index 92fd863e..773f6027 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -407,6 +407,7 @@ export interface Database{ useExperimental:boolean showMemoryLimit:boolean roundIcons:boolean + useStreaming:boolean } diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 5b564118..9c7f778c 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -337,6 +337,9 @@ export async function sendChat(chatProcessIndex = -1):Promise { if(req.type === 'fail'){ alertError(req.result) return false + } + else if(req.type === 'streaming'){ + } else{ const result2 = processScriptFull(currentChar, reformatContent(req.result), 'editoutput') @@ -429,8 +432,8 @@ export async function sendChat(chatProcessIndex = -1):Promise { maxTokens: 30, }, 'submodel') - if(rq.type === 'fail'){ - alertError(rq.result) + if(rq.type === 'fail' || rq.type === 'streaming'){ + alertError(`${rq.result}`) return true } else{ diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index 31e17e84..ae5881d6 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -19,6 +19,9 @@ interface requestDataArgument{ type requestDataResponse = { type: 'success'|'fail' result: string +}|{ + type: "streaming", + result: ReadableStreamDefaultReader } export async function requestChatData(arg:requestDataArgument, model:'model'|'submodel'):Promise { @@ -68,6 +71,22 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' replacerURL += 'chat/completions' } + if(db.useStreaming){ + const da = await fetch(replacerURL, { + body: JSON.stringify(body), + headers: { + "Authorization": "Bearer " + db.openAIKey + }, + }) + + const reader = da.body.getReader() + + return { + type: 'streaming', + result: reader + } + } + const res = await globalFetch(replacerURL, { body: body, headers: { diff --git a/src/ts/process/stableDiff.ts b/src/ts/process/stableDiff.ts index 978bb479..58b33a91 100644 --- a/src/ts/process/stableDiff.ts +++ b/src/ts/process/stableDiff.ts @@ -80,8 +80,8 @@ export async function stableDiff(currentChar:character,prompt:string){ }, 'submodel') - if(rq.type === 'fail'){ - alertError(rq.result) + if(rq.type === 'fail' || rq.type === 'streaming'){ + alertError(`${rq.result}`) return false } else{ From 80fa52969d77ccd8539ca8f4467a2d176a94c3f4 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 17 May 2023 03:46:03 +0900 Subject: [PATCH 5/6] [feat] add palm --- src/lib/SideBars/Settings.svelte | 8 +++- src/ts/database.ts | 1 + src/ts/process/request.ts | 72 ++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) diff --git a/src/lib/SideBars/Settings.svelte b/src/lib/SideBars/Settings.svelte index da2f6de4..31478f47 100644 --- a/src/lib/SideBars/Settings.svelte +++ b/src/lib/SideBars/Settings.svelte @@ -98,6 +98,7 @@ + {#if $DataBase.plugins.length > 0} {/if} @@ -107,12 +108,17 @@ + {#if $DataBase.aiModel === 'palm2' || $DataBase.subModel === 'palm2'} + Palm2 {language.apiKey} + + {/if} {#if $DataBase.aiModel === 'gpt35' || $DataBase.aiModel === 'gpt4' || $DataBase.subModel === 'gpt4' || $DataBase.subModel === 'gpt35'} OpenAI {language.apiKey} @@ -411,7 +417,7 @@

{language.plugin}

{language.pluginWarn} - +
{#if $DataBase.plugins.length === 0} No Plugins diff --git a/src/ts/database.ts b/src/ts/database.ts index 773f6027..7f79d3dd 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -408,6 +408,7 @@ export interface Database{ showMemoryLimit:boolean roundIcons:boolean useStreaming:boolean + palmAPI:string } diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index ae5881d6..20e47578 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -252,6 +252,78 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' } break } + case 'palm2':{ + const body = { + "prompt": { + "text": stringlizeChat(formated, currentChar?.name ?? '') + }, + "safetySettings":[ + { + "category": "HARM_CATEGORY_UNSPECIFIED", + "threshold": "BLOCK_NONE" + }, + { + "category": "HARM_CATEGORY_DEROGATORY", + "threshold": "BLOCK_NONE" + }, + { + "category": "HARM_CATEGORY_TOXICITY", + "threshold": "BLOCK_NONE" + }, + { + "category": "HARM_CATEGORY_VIOLENCE", + "threshold": "BLOCK_NONE" + }, + { + "category": "HARM_CATEGORY_SEXUAL", + "threshold": "BLOCK_NONE" + }, + { + "category": "HARM_CATEGORY_MEDICAL", + "threshold": "BLOCK_NONE" + }, + { + "category": "HARM_CATEGORY_DANGEROUS", + "threshold": "BLOCK_NONE" + } + ], + "temperature": arg.temperature, + "maxOutputTokens": arg.maxTokens, + "candidate_count": 1 + } + const res = await globalFetch(`https://generativelanguage.googleapis.com/v1beta2/models/text-bison-001:generateText?key=${db.palmAPI}`, { + body: body, + headers: { + "Content-Type": "application/json" + }, + }) + + if(res.ok){ + if(res.data.candidates){ + let output:string = res.data.candidates[0].output + const ind = output.search(/(system note)|(user)|(assistant):/gi) + if(ind >= 0){ + output = output.substring(0, ind) + } + return { + type: 'success', + result: output + } + } + else{ + return { + type: 'fail', + result: `${JSON.stringify(res.data)}` + } + } + } + else{ + return { + type: 'fail', + result: `${JSON.stringify(res.data)}` + } + } + } default:{ return { type: 'fail', From 2d45a744702c4c89a41cdd447ed86060e7e2622a Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 17 May 2023 03:47:13 +0900 Subject: [PATCH 6/6] bump version to 1.10.0 --- 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 d6cd4f5e..1e3d4cf7 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "0.9.6" + "version": "1.10.0" }, "tauri": { "allowlist": { diff --git a/src/ts/database.ts b/src/ts/database.ts index 7f79d3dd..52ae8300 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.9.6' +export let appVer = '1.10.0' export function setDatabase(data:Database){ diff --git a/version.json b/version.json index d7504613..77925ad4 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"0.9.6"} \ No newline at end of file +{"version":"1.10.0"} \ No newline at end of file