Add autopilot

This commit is contained in:
kwaroran
2024-09-01 19:30:06 +09:00
parent de6c90cbc4
commit ccda92cc49
2 changed files with 182 additions and 9 deletions

View File

@@ -1,12 +1,13 @@
import type { Tiktoken } from "@dqbd/tiktoken";
import type { Tokenizer } from "@mlc-ai/web-tokenizers";
import { DataBase, type character } from "./storage/database";
import { DataBase, type groupChat, type character, type Chat } from "./storage/database";
import { get } from "svelte/store";
import type { MultiModal, OpenAIChat } from "./process";
import { supportsInlayImage } from "./process/files/image";
import { risuChatParser } from "./parser";
import { tokenizeGGUFModel } from "./process/models/local";
import { globalFetch } from "./storage/globalApi";
import { CurrentCharacter } from "./stores";
export const tokenizerList = [
@@ -342,4 +343,57 @@ export async function strongBan(data:string, bias:{[key:number]:number}) {
}
localStorage.setItem('strongBan_' + data, JSON.stringify(bias))
return bias
}
export async function getCharToken(char?:character|groupChat|null){
let persistant = 0
let dynamic = 0
if(!char){
const c = get(CurrentCharacter)
char = c
}
if(char.type === 'group'){
return {persistant:0, dynamic:0}
}
const basicTokenize = async (data:string) => {
data = data.replace(/{{char}}/g, char.name).replace(/<char>/g, char.name)
return await tokenize(data)
}
persistant += await basicTokenize(char.desc)
persistant += await basicTokenize(char.personality ?? '')
persistant += await basicTokenize(char.scenario ?? '')
for(const lore of char.globalLore){
let cont = lore.content.split('\n').filter((line) => {
if(line.startsWith('@@')){
return false
}
if(line === ''){
return false
}
return true
}).join('\n')
dynamic += await basicTokenize(cont)
}
return {persistant, dynamic}
}
export async function getChatToken(chat:Chat) {
let persistant = 0
const chatTokenizer = new ChatTokenizer(0, 'name')
const chatf = chat.message.map((d) => {
return {
role: d.role === 'user' ? 'user' : 'assistant',
content: d.data,
} as OpenAIChat
})
for(const chat of chatf){
persistant += await chatTokenizer.tokenizeChat(chat)
}
return persistant
}