Add ST preset import

This commit is contained in:
kwaroran
2024-03-25 20:57:41 +09:00
parent 09d9ff6933
commit e4ecb46959

View File

@@ -1195,11 +1195,12 @@ export async function importPreset(){
const decoded = await decodeMsgpack(fflate.decompressSync(f.data))
console.log(decoded)
if(decoded.presetVersion === 0 && decoded.type === 'preset'){
pre = decodeMsgpack(Buffer.from(await decryptBuffer(decoded.pres, 'risupreset')))
pre = {...presetTemplate,...decodeMsgpack(Buffer.from(await decryptBuffer(decoded.pres, 'risupreset')))}
}
}
else{
pre = (JSON.parse(Buffer.from(f.data).toString('utf-8')))
pre = {...presetTemplate,...(JSON.parse(Buffer.from(f.data).toString('utf-8')))}
console.log(pre)
}
let db = get(DataBase)
if(pre.presetVersion && pre.presetVersion >= 3){
@@ -1226,6 +1227,101 @@ export async function importPreset(){
setDatabase(db)
return
}
if(Array.isArray(pre?.prompt_order?.[0]?.order) && Array.isArray(pre?.prompts)){
//ST preset
const pr = cloneDeep(presetTemplate)
pr.promptTemplate = []
function findPrompt(identifier:number){
return pre.prompts.find((p:any) => p.identifier === identifier)
}
pr.temperature = (pre.temperature ?? 0.8) * 100
pr.frequencyPenalty = (pre.frequency_penalty ?? 0.7) * 100
pr.PresensePenalty = (pre.presence_penalty * 0.7) * 100
pr.top_p = pre.top_p ?? 1
for(const prompt of pre?.prompt_order?.[0]?.order){
const p = findPrompt(prompt?.identifier ?? '')
if(p){
switch(p.identifier){
case 'main':{
pr.promptTemplate.push({
type: 'plain',
type2: 'main',
text: p.content ?? "",
role: p.role ?? "system"
})
break
}
case 'jailbreak':
case 'nsfw':{
pr.promptTemplate.push({
type: 'jailbreak',
type2: 'normal',
text: p.content ?? "",
role: p.role ?? "system"
})
break
}
case 'dialogueExamples':
case 'charPersonality':
case 'scenario':{
break //ignore
}
case 'chatHistory':{
pr.promptTemplate.push({
type: 'chat',
rangeEnd: 'end',
rangeStart: 0
})
break
}
case 'worldInfoBefore':{
pr.promptTemplate.push({
type: 'lorebook'
})
break
}
case 'worldInfoAfter':{
pr.promptTemplate.push({
type: 'postEverything'
})
break
}
case 'charDescription':{
pr.promptTemplate.push({
type: 'description'
})
break
}
case 'personaDescription':{
pr.promptTemplate.push({
type: 'persona'
})
break
}
default:{
console.log(p)
pr.promptTemplate.push({
type: 'plain',
type2: 'normal',
text: p.content ?? "",
role: p.role ?? "system"
})
}
}
}
else{
console.log("Prompt not found", prompt)
}
}
pr.name = "Imported ST Preset"
db.botPresets.push(pr)
setDatabase(db)
return
}
pre.name ??= "Imported"
db.botPresets.push(pre)
setDatabase(db)