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