[feat] continue response
This commit is contained in:
@@ -415,4 +415,6 @@ export const languageEnglish = {
|
||||
ToggleHypaMemory: "Toggle HypaMemory",
|
||||
resetPromptTemplateConfirm: "Do you really want to reset prompt template?",
|
||||
emotionMethod: "Emotion Method",
|
||||
continueResponse: "Continue Response",
|
||||
showMenuChatList: "Show Menu Chat List",
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import Suggestion from './Suggestion.svelte';
|
||||
import { CameraIcon, DatabaseIcon, DicesIcon, GlobeIcon, LanguagesIcon, Laugh, MenuIcon, MicOffIcon, RefreshCcwIcon, ReplyIcon, Send } from "lucide-svelte";
|
||||
import { CameraIcon, DatabaseIcon, DicesIcon, GlobeIcon, LanguagesIcon, Laugh, MenuIcon, MicOffIcon, RefreshCcwIcon, ReplyIcon, Send, StepForwardIcon } from "lucide-svelte";
|
||||
import { CurrentCharacter, CurrentChat, CurrentUsername, selectedCharID, CurrentUserIcon, CurrentShowMemoryLimit,CurrentSimpleCharacter } from "../../ts/stores";
|
||||
import Chat from "./Chat.svelte";
|
||||
import { DataBase, type Message, type character, type groupChat } from "../../ts/storage/database";
|
||||
@@ -20,12 +20,11 @@
|
||||
import AssetInput from './AssetInput.svelte';
|
||||
import { downloadFile } from 'src/ts/storage/globalApi';
|
||||
import { runTrigger } from 'src/ts/process/triggers';
|
||||
import { v4 } from 'uuid';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
let messageInput:string = ''
|
||||
let messageInputTranslate:string = ''
|
||||
let openMenu = false
|
||||
export let openChatList = false
|
||||
let loadPages = 30
|
||||
let autoMode = false
|
||||
let rerolls:Message[][] = []
|
||||
@@ -34,8 +33,16 @@
|
||||
let doingChatInputTranslate = false
|
||||
let currentCharacter:character|groupChat = $CurrentCharacter
|
||||
let toggleStickers:boolean = false
|
||||
export let openChatList:boolean = false
|
||||
|
||||
async function send() {
|
||||
async function send(){
|
||||
return sendMain(false)
|
||||
}
|
||||
async function sendContinue(){
|
||||
return sendMain(true)
|
||||
}
|
||||
|
||||
async function sendMain(continueResponse:boolean) {
|
||||
let selectedChar = $selectedCharID
|
||||
console.log('send')
|
||||
if($doingChat){
|
||||
@@ -88,7 +95,7 @@
|
||||
rerolls = []
|
||||
await sleep(10)
|
||||
updateInputSizeAll()
|
||||
await sendChatMain()
|
||||
await sendChatMain(continueResponse)
|
||||
|
||||
}
|
||||
|
||||
@@ -154,11 +161,14 @@
|
||||
|
||||
let abortController:null|AbortController = null
|
||||
|
||||
async function sendChatMain(saveReroll = false) {
|
||||
async function sendChatMain(continued:boolean = false) {
|
||||
messageInput = ''
|
||||
abortController = new AbortController()
|
||||
try {
|
||||
await sendChat(-1, {signal:abortController.signal})
|
||||
await sendChat(-1, {
|
||||
signal:abortController.signal,
|
||||
continue:continued
|
||||
})
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
alertError(`${error}`)
|
||||
@@ -519,22 +529,31 @@
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="flex items-center cursor-pointer hover:text-green-500 transition-colors" on:click={() => {
|
||||
openChatList = true
|
||||
openMenu = false
|
||||
}}>
|
||||
<DatabaseIcon />
|
||||
<span class="ml-2">{language.chatList}</span>
|
||||
<div class="flex items-center cursor-pointer hover:text-green-500 transition-colors"
|
||||
class:text-textcolor2={($CurrentChat.message.length < 2) || ($CurrentChat.message[$CurrentChat.message.length - 1].role !== 'char')}
|
||||
on:click={() => {
|
||||
if(($CurrentChat.message.length < 2) || ($CurrentChat.message[$CurrentChat.message.length - 1].role !== 'char')){
|
||||
return
|
||||
}
|
||||
sendContinue();
|
||||
}}
|
||||
>
|
||||
<StepForwardIcon />
|
||||
<span class="ml-2">{language.continueResponse}</span>
|
||||
</div>
|
||||
{#if $DataBase.translator !== ''}
|
||||
<!-- <div class="flex items-center cursor-pointer hover:text-green-500 transition-colors" on:click={async () => {
|
||||
doingChatInputTranslate = true
|
||||
messageInput = (await translate(messageInput, true))
|
||||
doingChatInputTranslate = false
|
||||
|
||||
|
||||
{#if $DataBase.showMenuChatList}
|
||||
<div class="flex items-center cursor-pointer hover:text-green-500 transition-colors" on:click={() => {
|
||||
openChatList = true
|
||||
openMenu = false
|
||||
}}>
|
||||
<LanguagesIcon />
|
||||
<span class="ml-2">{language.translateInput}</span>
|
||||
</div> -->
|
||||
<DatabaseIcon />
|
||||
<span class="ml-2">{language.chatList}</span>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if $DataBase.translator !== ''}
|
||||
<div class={"flex items-center cursor-pointer "+ ($DataBase.useAutoTranslateInput ? 'text-green-500':'lg:hover:text-green-500')} on:click={() => {
|
||||
$DataBase.useAutoTranslateInput = !$DataBase.useAutoTranslateInput
|
||||
}}>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
import { DataBase } from "src/ts/storage/database";
|
||||
|
||||
</script>
|
||||
|
||||
<h2 class="mb-2 text-2xl font-bold mt-2">{language.accessibility}</h2>
|
||||
|
||||
<div class="flex items-center mt-2">
|
||||
@@ -32,4 +33,8 @@
|
||||
|
||||
<div class="flex items-center mt-2">
|
||||
<Check bind:check={$DataBase.toggleConfirmRecommendedPreset} name={language.toggleConfirmRecommendedPreset}/>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center mt-2">
|
||||
<Check bind:check={$DataBase.showMenuChatList} name={language.showMenuChatList}/>
|
||||
</div>
|
||||
@@ -36,7 +36,7 @@ export interface OpenAIChatFull extends OpenAIChat{
|
||||
export const doingChat = writable(false)
|
||||
export const abortChat = writable(false)
|
||||
|
||||
export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:number,signal?:AbortSignal} = {}):Promise<boolean> {
|
||||
export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:number,signal?:AbortSignal,continue?:boolean} = {}):Promise<boolean> {
|
||||
|
||||
|
||||
const abortSignal = arg.signal ?? (new AbortController()).signal
|
||||
@@ -515,6 +515,14 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
||||
formatOrder.push('postEverything')
|
||||
}
|
||||
|
||||
//continue chat model
|
||||
if(arg.continue && (db.aiModel.startsWith('claude') || db.aiModel.startsWith('gpt') || db.aiModel.startsWith('openrouter') || db.aiModel.startsWith('reverse_proxy'))){
|
||||
unformated.postEverything.push({
|
||||
role: 'system',
|
||||
content: '[Continue the last response]'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
function pushPrompts(cha:OpenAIChat[]){
|
||||
for(const chat of cha){
|
||||
@@ -670,19 +678,26 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
||||
}
|
||||
else if(req.type === 'streaming'){
|
||||
const reader = req.result.getReader()
|
||||
const msgIndex = db.characters[selectedChar].chats[selectedChat].message.length
|
||||
let msgIndex = db.characters[selectedChar].chats[selectedChat].message.length
|
||||
let prefix = ''
|
||||
if(arg.continue){
|
||||
msgIndex -= 1
|
||||
prefix = db.characters[selectedChar].chats[selectedChat].message[msgIndex].data
|
||||
}
|
||||
else{
|
||||
db.characters[selectedChar].chats[selectedChat].message.push({
|
||||
role: 'char',
|
||||
data: "",
|
||||
saying: currentChar.chaId,
|
||||
time: Date.now()
|
||||
})
|
||||
}
|
||||
db.characters[selectedChar].chats[selectedChat].isStreaming = true
|
||||
db.characters[selectedChar].chats[selectedChat].message.push({
|
||||
role: 'char',
|
||||
data: "",
|
||||
saying: currentChar.chaId,
|
||||
time: Date.now()
|
||||
})
|
||||
while(abortSignal.aborted === false){
|
||||
const readed = (await reader.read())
|
||||
if(readed.value){
|
||||
result = readed.value
|
||||
const result2 = processScriptFull(nowChatroom, reformatContent(result), 'editoutput', msgIndex)
|
||||
const result2 = processScriptFull(nowChatroom, reformatContent(prefix + result), 'editoutput', msgIndex)
|
||||
db.characters[selectedChar].chats[selectedChat].message[msgIndex].data = result2.data
|
||||
emoChanged = result2.emoChanged
|
||||
db.characters[selectedChar].reloadKeys += 1
|
||||
@@ -709,17 +724,33 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
||||
const msgs = (req.type === 'success') ? [['char',req.result]] as const
|
||||
: (req.type === 'multiline') ? req.result
|
||||
: []
|
||||
for(const msg of msgs){
|
||||
const msgIndex = db.characters[selectedChar].chats[selectedChat].message.length
|
||||
const result2 = processScriptFull(nowChatroom, reformatContent(msg[1]), 'editoutput', msgIndex)
|
||||
for(let i=0;i<msgs.length;i++){
|
||||
const msg = msgs[i]
|
||||
let msgIndex = db.characters[selectedChar].chats[selectedChat].message.length
|
||||
let result2 = processScriptFull(nowChatroom, reformatContent(msg[1]), 'editoutput', msgIndex)
|
||||
if(i === 0 && arg.continue){
|
||||
msgIndex -= 1
|
||||
let beforeChat = db.characters[selectedChar].chats[selectedChat].message[msgIndex]
|
||||
result2 = processScriptFull(nowChatroom, reformatContent(beforeChat.data + msg[1]), 'editoutput', msgIndex)
|
||||
}
|
||||
result = result2.data
|
||||
emoChanged = result2.emoChanged
|
||||
db.characters[selectedChar].chats[selectedChat].message.push({
|
||||
role: msg[0],
|
||||
data: result,
|
||||
saying: currentChar.chaId,
|
||||
time: Date.now()
|
||||
})
|
||||
if(i === 0 && arg.continue){
|
||||
db.characters[selectedChar].chats[selectedChat].message[msgIndex] = {
|
||||
role: 'char',
|
||||
data: result,
|
||||
saying: currentChar.chaId,
|
||||
time: Date.now()
|
||||
}
|
||||
}
|
||||
else{
|
||||
db.characters[selectedChar].chats[selectedChat].message.push({
|
||||
role: msg[0],
|
||||
data: result,
|
||||
saying: currentChar.chaId,
|
||||
time: Date.now()
|
||||
})
|
||||
}
|
||||
db.characters[selectedChar].reloadKeys += 1
|
||||
await sayTTS(currentChar, result)
|
||||
setDatabase(db)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { invoke } from "@tauri-apps/api/tauri";
|
||||
import { globalFetch } from "src/ts/storage/globalApi";
|
||||
import { sleep } from "src/ts/util";
|
||||
import path from "@tauri-apps/api/path";
|
||||
import * as path from "@tauri-apps/api/path";
|
||||
import { exists } from "@tauri-apps/api/fs";
|
||||
import { alertClear, alertError, alertMd, alertWait } from "src/ts/alert";
|
||||
import { get } from "svelte/store";
|
||||
|
||||
@@ -5,7 +5,7 @@ import { globalFetch } from "src/ts/storage/globalApi"
|
||||
import { alertError, alertInput, alertNormal, alertWait } from "src/ts/alert"
|
||||
import { sleep } from "src/ts/util"
|
||||
|
||||
export function stringlizeNAIChat(formated:OpenAIChat[], char:string = ''){
|
||||
export function stringlizeNAIChat(formated:OpenAIChat[], char:string, continued: boolean){
|
||||
|
||||
|
||||
const db = get(DataBase)
|
||||
@@ -35,7 +35,12 @@ export function stringlizeNAIChat(formated:OpenAIChat[], char:string = ''){
|
||||
}
|
||||
}
|
||||
|
||||
return resultString.join(seperator) + `\n\n${char}:`
|
||||
let res = resultString.join(seperator)
|
||||
|
||||
if(!continued){
|
||||
res += `\n\n${char}:`
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
export const novelLogin = async () => {
|
||||
|
||||
@@ -23,6 +23,7 @@ interface requestDataArgument{
|
||||
useStreaming?:boolean
|
||||
isGroupChat?:boolean
|
||||
useEmotion?:boolean
|
||||
continue?:boolean
|
||||
}
|
||||
|
||||
type requestDataResponse = {
|
||||
@@ -90,6 +91,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
let temperature = arg.temperature ?? (db.temperature / 100)
|
||||
let bias = arg.bias
|
||||
let currentChar = arg.currentChar
|
||||
arg.continue = arg.continue ?? false
|
||||
let biasString = arg.biasString ?? []
|
||||
const aiModel = (model === 'model' || (!db.advancedBotSettings)) ? db.aiModel : db.subModel
|
||||
|
||||
@@ -356,7 +358,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
}
|
||||
case 'novelai':
|
||||
case 'novelai_kayra':{
|
||||
const proompt = stringlizeNAIChat(formated, currentChar?.name ?? '')
|
||||
const proompt = stringlizeNAIChat(formated, currentChar?.name ?? '', arg.continue)
|
||||
let logit_bias_exp:{
|
||||
sequence: number[], bias: number, ensure_sequence_finish: false, generate_once: true
|
||||
}[] = []
|
||||
@@ -439,7 +441,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
let blockingUrl = db.textgenWebUIBlockingURL.replace(/\/api.*/, "/api/v1/generate")
|
||||
let bodyTemplate:any
|
||||
const suggesting = model === "submodel"
|
||||
const proompt = stringlizeChatOba(formated, currentChar.name, suggesting)
|
||||
const proompt = stringlizeChatOba(formated, currentChar.name, suggesting, arg.continue)
|
||||
const stopStrings = getStopStrings(suggesting)
|
||||
console.log(proompt)
|
||||
console.log(stopStrings)
|
||||
@@ -583,7 +585,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
case 'palm2':{
|
||||
const body = {
|
||||
"prompt": {
|
||||
"text": stringlizeChat(formated, currentChar?.name ?? '')
|
||||
"text": stringlizeChat(formated, currentChar?.name ?? '', arg.continue)
|
||||
},
|
||||
"safetySettings":[
|
||||
{
|
||||
@@ -654,7 +656,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
}
|
||||
}
|
||||
case "kobold":{
|
||||
const proompt = stringlizeChat(formated, currentChar?.name ?? '')
|
||||
const proompt = stringlizeChat(formated, currentChar?.name ?? '', arg.continue)
|
||||
const url = new URL(db.koboldURL)
|
||||
if(url.pathname.length < 3){
|
||||
url.pathname = 'api/v1/generate'
|
||||
@@ -704,7 +706,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
};
|
||||
|
||||
const send_body = {
|
||||
text: stringlizeAINChat(formated, currentChar?.name ?? ''),
|
||||
text: stringlizeAINChat(formated, currentChar?.name ?? '', arg.continue),
|
||||
length: maxTokens,
|
||||
temperature: temperature,
|
||||
top_p: db.ainconfig.top_p,
|
||||
@@ -764,7 +766,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
|
||||
const response = await createDeep([{
|
||||
role: 'user',
|
||||
content: stringlizeChat(formated, currentChar?.name ?? '')
|
||||
content: stringlizeChat(formated, currentChar?.name ?? '', arg.continue)
|
||||
}])
|
||||
|
||||
if(!response.ok){
|
||||
@@ -862,7 +864,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
|
||||
}
|
||||
if(aiModel.startsWith("horde:::")){
|
||||
const proompt = stringlizeChat(formated, currentChar?.name ?? '')
|
||||
const proompt = stringlizeChat(formated, currentChar?.name ?? '', arg.continue)
|
||||
|
||||
const realModel = aiModel.split(":::")[1]
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ export function multiChatReplacer(){
|
||||
|
||||
}
|
||||
|
||||
export function stringlizeChat(formated:OpenAIChat[], char:string = ''){
|
||||
export function stringlizeChat(formated:OpenAIChat[], char:string, continued:boolean){
|
||||
let resultString:string[] = []
|
||||
for(const form of formated){
|
||||
if(form.role === 'system'){
|
||||
@@ -20,7 +20,12 @@ export function stringlizeChat(formated:OpenAIChat[], char:string = ''){
|
||||
resultString.push(form.content)
|
||||
}
|
||||
}
|
||||
return resultString.join('\n\n') + `\n\n${char}:`
|
||||
let res = resultString.join('\n\n')
|
||||
|
||||
if(!continued){
|
||||
res += `\n\n${char}:`
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
function appendWhitespace(prefix:string, seperator:string=" ") {
|
||||
@@ -29,7 +34,7 @@ function appendWhitespace(prefix:string, seperator:string=" ") {
|
||||
}
|
||||
return prefix
|
||||
}
|
||||
export function stringlizeChatOba(formated:OpenAIChat[], characterName:string='', suggesting:boolean=false){
|
||||
export function stringlizeChatOba(formated:OpenAIChat[], characterName:string, suggesting:boolean, continued:boolean){
|
||||
const db = get(DataBase)
|
||||
let resultString:string[] = []
|
||||
let { header, systemPrefix, userPrefix, assistantPrefix, seperator } = db.ooba.formating;
|
||||
@@ -59,10 +64,12 @@ export function stringlizeChatOba(formated:OpenAIChat[], characterName:string=''
|
||||
}
|
||||
resultString.push(prefix + name + form.content)
|
||||
}
|
||||
if (suggesting){
|
||||
resultString.push(appendWhitespace(assistantPrefix, seperator) + `${db.username}:\n` + db.autoSuggestPrefix)
|
||||
} else {
|
||||
resultString.push(assistantPrefix + `${characterName}:`)
|
||||
if(!continued){
|
||||
if (suggesting){
|
||||
resultString.push(appendWhitespace(assistantPrefix, seperator) + `${db.username}:\n` + db.autoSuggestPrefix)
|
||||
} else {
|
||||
resultString.push(assistantPrefix + `${characterName}:`)
|
||||
}
|
||||
}
|
||||
return resultString.join(seperator)
|
||||
}
|
||||
@@ -190,7 +197,7 @@ export function getUnstringlizerChunks(formated:OpenAIChat[], char:string, mode:
|
||||
return {chunks,extChunk:charNames.concat(chunks)}
|
||||
}
|
||||
|
||||
export function stringlizeAINChat(formated:OpenAIChat[], char:string = ''){
|
||||
export function stringlizeAINChat(formated:OpenAIChat[], char:string, continued: boolean){
|
||||
let resultString:string[] = []
|
||||
const db = get(DataBase)
|
||||
|
||||
@@ -213,7 +220,14 @@ export function stringlizeAINChat(formated:OpenAIChat[], char:string = ''){
|
||||
resultString.push(form.content)
|
||||
}
|
||||
}
|
||||
return resultString.join('\n\n') + `\n\n${char} 「`
|
||||
let res = resultString.join('\n\n')
|
||||
if(!continued){
|
||||
res += + `\n\n${char} 「`
|
||||
}
|
||||
else{
|
||||
res += " 「"
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
function extractAINOutputStrings(inputString:string, characters:string[]) {
|
||||
|
||||
@@ -310,6 +310,164 @@ export function setDatabase(data:Database){
|
||||
}
|
||||
|
||||
|
||||
export interface Database{
|
||||
characters: (character|groupChat)[],
|
||||
apiType: string
|
||||
forceReplaceUrl2:string
|
||||
openAIKey: string
|
||||
proxyKey:string
|
||||
mainPrompt: string
|
||||
jailbreak: string
|
||||
globalNote:string
|
||||
temperature: number
|
||||
askRemoval:boolean
|
||||
maxContext: number
|
||||
maxResponse: number
|
||||
frequencyPenalty: number
|
||||
PresensePenalty: number
|
||||
formatingOrder: FormatingOrderItem[]
|
||||
aiModel: string
|
||||
jailbreakToggle:boolean
|
||||
loreBookDepth: number
|
||||
loreBookToken: number,
|
||||
loreBook: {
|
||||
name:string
|
||||
data:loreBook[]
|
||||
}[]
|
||||
loreBookPage: number
|
||||
supaMemoryPrompt: string
|
||||
username: string
|
||||
userIcon: string
|
||||
additionalPrompt: string
|
||||
descriptionPrefix: string
|
||||
forceReplaceUrl: string
|
||||
language: string
|
||||
translator: string
|
||||
plugins: RisuPlugin[]
|
||||
officialplugins: {
|
||||
automark?: boolean
|
||||
}
|
||||
currentPluginProvider: string
|
||||
zoomsize:number
|
||||
lastup:string
|
||||
customBackground:string
|
||||
textgenWebUIStreamURL:string
|
||||
textgenWebUIBlockingURL:string
|
||||
autoTranslate: boolean
|
||||
fullScreen:boolean
|
||||
playMessage:boolean
|
||||
iconsize:number
|
||||
theme: string
|
||||
subModel:string
|
||||
timeOut:number
|
||||
emotionPrompt: string,
|
||||
requester:string
|
||||
formatversion:number
|
||||
waifuWidth:number
|
||||
waifuWidth2:number
|
||||
botPresets:botPreset[]
|
||||
botPresetsId:number
|
||||
sdProvider: string
|
||||
webUiUrl:string
|
||||
sdSteps:number
|
||||
sdCFG:number
|
||||
sdConfig:sdConfig
|
||||
runpodKey:string
|
||||
promptPreprocess:boolean
|
||||
bias: [string, number][]
|
||||
swipe:boolean
|
||||
instantRemove:boolean
|
||||
textTheme: string
|
||||
customTextTheme: {
|
||||
FontColorStandard: string,
|
||||
FontColorBold : string,
|
||||
FontColorItalic : string,
|
||||
FontColorItalicBold : string,
|
||||
}
|
||||
requestRetrys:number
|
||||
emotionPrompt2:string
|
||||
useSayNothing:boolean
|
||||
didFirstSetup: boolean
|
||||
requestmet: string
|
||||
requestproxy: string
|
||||
showUnrecommended:boolean
|
||||
elevenLabKey:string
|
||||
voicevoxUrl:string
|
||||
useExperimental:boolean
|
||||
showMemoryLimit:boolean
|
||||
roundIcons:boolean
|
||||
useStreaming:boolean
|
||||
palmAPI:string,
|
||||
supaMemoryKey:string
|
||||
supaMemoryType:string
|
||||
textScreenColor?:string
|
||||
textBorder?:boolean
|
||||
textScreenRounded?:boolean
|
||||
textScreenBorder?:string
|
||||
characterOrder:(string|folder)[]
|
||||
hordeConfig:hordeConfig,
|
||||
toggleConfirmRecommendedPreset:boolean,
|
||||
novelai:{
|
||||
token:string,
|
||||
model:string
|
||||
}
|
||||
globalscript: customscript[],
|
||||
sendWithEnter:boolean
|
||||
clickToEdit: boolean
|
||||
koboldURL:string
|
||||
advancedBotSettings:boolean
|
||||
useAutoSuggestions:boolean
|
||||
autoSuggestPrompt:string
|
||||
autoSuggestPrefix:string
|
||||
autoSuggestClean:boolean
|
||||
claudeAPIKey:string,
|
||||
useChatCopy:boolean,
|
||||
novellistAPI:string,
|
||||
useAutoTranslateInput:boolean
|
||||
imageCompression:boolean
|
||||
account?:{
|
||||
token:string
|
||||
id:string,
|
||||
data: {
|
||||
refresh_token?:string,
|
||||
access_token?:string
|
||||
expires_in?: number
|
||||
}
|
||||
useSync?:boolean
|
||||
},
|
||||
classicMaxWidth: boolean,
|
||||
useChatSticker:boolean,
|
||||
useAdditionalAssetsPreview:boolean,
|
||||
usePlainFetch:boolean
|
||||
hypaMemory:boolean
|
||||
proxyRequestModel:string
|
||||
ooba:OobaSettings
|
||||
ainconfig: AINsettings
|
||||
personaPrompt:string
|
||||
openrouterRequestModel:string
|
||||
openrouterKey:string
|
||||
selectedPersona:number
|
||||
personas:{
|
||||
personaPrompt:string
|
||||
name:string
|
||||
icon:string
|
||||
}[]
|
||||
assetWidth:number
|
||||
animationSpeed:number
|
||||
botSettingAtStart:false
|
||||
NAIsettings:NAISettings
|
||||
hideRealm:boolean
|
||||
colorScheme:ColorScheme
|
||||
colorSchemeName:string
|
||||
promptTemplate?:Proompt[]
|
||||
forceProxyAsOpenAI?:boolean
|
||||
hypaModel:'ada'|'MiniLM'
|
||||
saveTime?:number
|
||||
mancerHeader:string
|
||||
emotionProcesser:'submodel'|'embedding',
|
||||
showMenuChatList?:boolean
|
||||
}
|
||||
|
||||
export interface customscript{
|
||||
comment: string;
|
||||
in:string
|
||||
@@ -470,162 +628,6 @@ export interface botPreset{
|
||||
promptTemplate?:Proompt[]
|
||||
}
|
||||
|
||||
export interface Database{
|
||||
characters: (character|groupChat)[],
|
||||
apiType: string
|
||||
forceReplaceUrl2:string
|
||||
openAIKey: string
|
||||
proxyKey:string
|
||||
mainPrompt: string
|
||||
jailbreak: string
|
||||
globalNote:string
|
||||
temperature: number
|
||||
askRemoval:boolean
|
||||
maxContext: number
|
||||
maxResponse: number
|
||||
frequencyPenalty: number
|
||||
PresensePenalty: number
|
||||
formatingOrder: FormatingOrderItem[]
|
||||
aiModel: string
|
||||
jailbreakToggle:boolean
|
||||
loreBookDepth: number
|
||||
loreBookToken: number,
|
||||
loreBook: {
|
||||
name:string
|
||||
data:loreBook[]
|
||||
}[]
|
||||
loreBookPage: number
|
||||
supaMemoryPrompt: string
|
||||
username: string
|
||||
userIcon: string
|
||||
additionalPrompt: string
|
||||
descriptionPrefix: string
|
||||
forceReplaceUrl: string
|
||||
language: string
|
||||
translator: string
|
||||
plugins: RisuPlugin[]
|
||||
officialplugins: {
|
||||
automark?: boolean
|
||||
}
|
||||
currentPluginProvider: string
|
||||
zoomsize:number
|
||||
lastup:string
|
||||
customBackground:string
|
||||
textgenWebUIStreamURL:string
|
||||
textgenWebUIBlockingURL:string
|
||||
autoTranslate: boolean
|
||||
fullScreen:boolean
|
||||
playMessage:boolean
|
||||
iconsize:number
|
||||
theme: string
|
||||
subModel:string
|
||||
timeOut:number
|
||||
emotionPrompt: string,
|
||||
requester:string
|
||||
formatversion:number
|
||||
waifuWidth:number
|
||||
waifuWidth2:number
|
||||
botPresets:botPreset[]
|
||||
botPresetsId:number
|
||||
sdProvider: string
|
||||
webUiUrl:string
|
||||
sdSteps:number
|
||||
sdCFG:number
|
||||
sdConfig:sdConfig
|
||||
runpodKey:string
|
||||
promptPreprocess:boolean
|
||||
bias: [string, number][]
|
||||
swipe:boolean
|
||||
instantRemove:boolean
|
||||
textTheme: string
|
||||
customTextTheme: {
|
||||
FontColorStandard: string,
|
||||
FontColorBold : string,
|
||||
FontColorItalic : string,
|
||||
FontColorItalicBold : string,
|
||||
}
|
||||
requestRetrys:number
|
||||
emotionPrompt2:string
|
||||
useSayNothing:boolean
|
||||
didFirstSetup: boolean
|
||||
requestmet: string
|
||||
requestproxy: string
|
||||
showUnrecommended:boolean
|
||||
elevenLabKey:string
|
||||
voicevoxUrl:string
|
||||
useExperimental:boolean
|
||||
showMemoryLimit:boolean
|
||||
roundIcons:boolean
|
||||
useStreaming:boolean
|
||||
palmAPI:string,
|
||||
supaMemoryKey:string
|
||||
supaMemoryType:string
|
||||
textScreenColor?:string
|
||||
textBorder?:boolean
|
||||
textScreenRounded?:boolean
|
||||
textScreenBorder?:string
|
||||
characterOrder:(string|folder)[]
|
||||
hordeConfig:hordeConfig,
|
||||
toggleConfirmRecommendedPreset:boolean,
|
||||
novelai:{
|
||||
token:string,
|
||||
model:string
|
||||
}
|
||||
globalscript: customscript[],
|
||||
sendWithEnter:boolean
|
||||
clickToEdit: boolean
|
||||
koboldURL:string
|
||||
advancedBotSettings:boolean
|
||||
useAutoSuggestions:boolean
|
||||
autoSuggestPrompt:string
|
||||
autoSuggestPrefix:string
|
||||
autoSuggestClean:boolean
|
||||
claudeAPIKey:string,
|
||||
useChatCopy:boolean,
|
||||
novellistAPI:string,
|
||||
useAutoTranslateInput:boolean
|
||||
imageCompression:boolean
|
||||
account?:{
|
||||
token:string
|
||||
id:string,
|
||||
data: {
|
||||
refresh_token?:string,
|
||||
access_token?:string
|
||||
expires_in?: number
|
||||
}
|
||||
useSync?:boolean
|
||||
},
|
||||
classicMaxWidth: boolean,
|
||||
useChatSticker:boolean,
|
||||
useAdditionalAssetsPreview:boolean,
|
||||
usePlainFetch:boolean
|
||||
hypaMemory:boolean
|
||||
proxyRequestModel:string
|
||||
ooba:OobaSettings
|
||||
ainconfig: AINsettings
|
||||
personaPrompt:string
|
||||
openrouterRequestModel:string
|
||||
openrouterKey:string
|
||||
selectedPersona:number
|
||||
personas:{
|
||||
personaPrompt:string
|
||||
name:string
|
||||
icon:string
|
||||
}[]
|
||||
assetWidth:number
|
||||
animationSpeed:number
|
||||
botSettingAtStart:false
|
||||
NAIsettings:NAISettings
|
||||
hideRealm:boolean
|
||||
colorScheme:ColorScheme
|
||||
colorSchemeName:string
|
||||
promptTemplate?:Proompt[]
|
||||
forceProxyAsOpenAI?:boolean
|
||||
hypaModel:'ada'|'MiniLM'
|
||||
saveTime?:number
|
||||
mancerHeader:string
|
||||
emotionProcesser:'submodel'|'embedding'
|
||||
}
|
||||
|
||||
interface hordeConfig{
|
||||
apiKey:string
|
||||
|
||||
Reference in New Issue
Block a user