Add ST preset import
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user