[feat] generation times
This commit is contained in:
@@ -458,4 +458,5 @@ export const languageEnglish = {
|
||||
saveBackupLocal: "Save Backup Locally",
|
||||
loadBackupLocal: "Load Backup Locally",
|
||||
topP: "Top P",
|
||||
genTimes: "Generation Choices",
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
import { runTrigger } from 'src/ts/process/triggers';
|
||||
import { v4 } from 'uuid';
|
||||
import { postInlayImage } from 'src/ts/image';
|
||||
import { PreUnreroll, Prereroll } from 'src/ts/process/prereroll';
|
||||
|
||||
let messageInput:string = ''
|
||||
let messageInputTranslate:string = ''
|
||||
@@ -45,7 +46,6 @@
|
||||
|
||||
async function sendMain(continueResponse:boolean) {
|
||||
let selectedChar = $selectedCharID
|
||||
console.log('send')
|
||||
if($doingChat){
|
||||
return
|
||||
}
|
||||
@@ -108,6 +108,14 @@
|
||||
rerolls = []
|
||||
rerollid = -1
|
||||
}
|
||||
const genId = $CurrentChat.message.at(-1)?.generationInfo?.generationId
|
||||
if(genId){
|
||||
const r = Prereroll(genId)
|
||||
if(r){
|
||||
$CurrentChat.message[$CurrentChat.message.length - 1].data = r
|
||||
return
|
||||
}
|
||||
}
|
||||
if(rerollid < rerolls.length - 1){
|
||||
if(Array.isArray(rerolls[rerollid + 1])){
|
||||
let db = $DataBase
|
||||
@@ -150,14 +158,22 @@
|
||||
}
|
||||
|
||||
async function unReroll() {
|
||||
if(rerollid <= 0){
|
||||
if($doingChat){
|
||||
return
|
||||
}
|
||||
if(lastCharId !== $selectedCharID){
|
||||
rerolls = []
|
||||
rerollid = -1
|
||||
}
|
||||
if($doingChat){
|
||||
const genId = $CurrentChat.message.at(-1)?.generationInfo?.generationId
|
||||
if(genId){
|
||||
const r = PreUnreroll(genId)
|
||||
if(r){
|
||||
$CurrentChat.message[$CurrentChat.message.length - 1].data = r
|
||||
return
|
||||
}
|
||||
}
|
||||
if(rerollid <= 0){
|
||||
return
|
||||
}
|
||||
if(Array.isArray(rerolls[rerollid - 1])){
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
<span class="text-textcolor">{language.requestretrys}</span>
|
||||
<NumberInput marginBottom={true} size={"sm"} min={0} max={20} bind:value={$DataBase.requestRetrys}/>
|
||||
|
||||
<span class="text-textcolor">{language.genTimes} <Help key="experimental"/></span>
|
||||
<NumberInput marginBottom={true} size={"sm"} min={0} max={4096} bind:value={$DataBase.genTime}/>
|
||||
|
||||
<span class="text-textcolor">Request Lib</span>
|
||||
<SelectInput bind:value={$DataBase.requester}>
|
||||
<OptionInput value="new">Reqwest</OptionInput>
|
||||
|
||||
@@ -24,6 +24,7 @@ import { getGenerationModelString } from "./models/modelString";
|
||||
import { sendPeerChar } from "../sync/multiuser";
|
||||
import { runInlayScreen } from "./inlayScreen";
|
||||
import { runCharacterJS } from "../plugins/embedscript";
|
||||
import { addRerolls } from "./prereroll";
|
||||
|
||||
export interface OpenAIChat{
|
||||
role: 'system'|'user'|'assistant'|'function'
|
||||
@@ -943,6 +944,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
||||
const msgs = (req.type === 'success') ? [['char',req.result]] as const
|
||||
: (req.type === 'multiline') ? req.result
|
||||
: []
|
||||
let mrerolls:string[] = []
|
||||
for(let i=0;i<msgs.length;i++){
|
||||
let msg = msgs[i]
|
||||
let mess = msg[1]
|
||||
@@ -976,7 +978,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
||||
db.characters[selectedChar].chats[selectedChat].message[msgIndex].data = p
|
||||
}
|
||||
}
|
||||
else{
|
||||
else if(i===0){
|
||||
db.characters[selectedChar].chats[selectedChat].message.push({
|
||||
role: msg[0],
|
||||
data: result,
|
||||
@@ -993,11 +995,18 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
||||
db.characters[selectedChar].chats[selectedChat].message[ind].data = p
|
||||
}
|
||||
}
|
||||
else{
|
||||
mrerolls.push(result)
|
||||
}
|
||||
db.characters[selectedChar].reloadKeys += 1
|
||||
await sayTTS(currentChar, result)
|
||||
setDatabase(db)
|
||||
}
|
||||
|
||||
if(mrerolls.length > 0){
|
||||
addRerolls(generationId, mrerolls)
|
||||
}
|
||||
|
||||
currentChat = db.characters[selectedChar].chats[selectedChat]
|
||||
|
||||
const triggerResult = await runTrigger(currentChar, 'output', {chat:currentChat})
|
||||
|
||||
29
src/ts/process/prereroll.ts
Normal file
29
src/ts/process/prereroll.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
let rerolls:{[key:string]:string[]} = {};
|
||||
let rerollIndex:{[key:string]:number} = {};
|
||||
|
||||
export function Prereroll(genId:string){
|
||||
if(rerolls[genId]){
|
||||
let index = rerollIndex[genId];
|
||||
index += 1;
|
||||
rerollIndex[genId] = index;
|
||||
return rerolls[genId][index] ?? null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
export function PreUnreroll(genId:string){
|
||||
if(rerolls[genId]){
|
||||
let index = rerollIndex[genId];
|
||||
index -= 1;
|
||||
if(index < 0){
|
||||
return null
|
||||
}
|
||||
rerollIndex[genId] = index;
|
||||
return rerolls[genId][index] ?? null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
export function addRerolls(genId:string, values:string[]){
|
||||
rerolls[genId] = values;
|
||||
rerollIndex[genId] = 0;
|
||||
}
|
||||
@@ -478,6 +478,11 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
if(risuIdentify){
|
||||
headers["X-Proxy-Risu"] = 'RisuAI'
|
||||
}
|
||||
const multiGen = (db.genTime > 1 && aiModel.startsWith('gpt'))
|
||||
if(multiGen){
|
||||
// @ts-ignore
|
||||
body.n = db.genTime
|
||||
}
|
||||
let throughProxi = (!isTauri) && (!isNodeServer) && (!db.usePlainFetch)
|
||||
if(db.useStreaming && arg.useStreaming){
|
||||
body.stream = true
|
||||
@@ -578,6 +583,15 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
const dat = res.data as any
|
||||
if(res.ok){
|
||||
try {
|
||||
if(multiGen && dat.choices){
|
||||
return {
|
||||
type: 'multiline',
|
||||
result: dat.choices.map((v) => {
|
||||
return ["char",v.message.content]
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
const msg:OpenAIChatFull = (dat.choices[0].message)
|
||||
return {
|
||||
type: 'success',
|
||||
|
||||
@@ -360,6 +360,7 @@ export function setDatabase(data:Database){
|
||||
data.google ??= {}
|
||||
data.google.accessToken ??= ''
|
||||
data.google.projectId ??= ''
|
||||
data.genTime ??= 1
|
||||
changeLanguage(data.language)
|
||||
DataBase.set(data)
|
||||
}
|
||||
@@ -561,6 +562,7 @@ export interface Database{
|
||||
}
|
||||
mistralKey?:string
|
||||
chainOfThought?:boolean
|
||||
genTime:number
|
||||
}
|
||||
|
||||
export interface customscript{
|
||||
|
||||
Reference in New Issue
Block a user