[feat] better ain stringlizer

This commit is contained in:
kwaroran
2023-06-26 00:45:35 +09:00
parent a4937bfade
commit ab61c63c4c
3 changed files with 27 additions and 18 deletions

View File

@@ -3,7 +3,7 @@ import type { OpenAIChat, OpenAIChatFull } from ".";
import { DataBase, setDatabase, type character } from "../storage/database";
import { pluginProcess } from "../plugins/plugins";
import { language } from "../../lang";
import { stringlizeAINChat, stringlizeChat, unstringlizeChat } from "./stringlize";
import { getUnstringlizerChunks, stringlizeAINChat, stringlizeChat, unstringlizeChat } from "./stringlize";
import { globalFetch, isNodeServer, isTauri } from "../storage/globalApi";
import { sleep } from "../util";
import { createDeep } from "./deepai";
@@ -573,7 +573,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
top_p: 0.7,
tailfree: 1.0,
rep_pen: arg.frequencyPenalty ?? (db.frequencyPenalty / 100) + 1,
model: aiModel === 'novellist_damsel' ? 'damsel' : 'supertrin'
model: aiModel === 'novellist_damsel' ? 'damsel' : 'supertrin',
userbadwords: [":","",": "," "].join("<<|>>")
};
const response = await globalFetch(api_server_url + '/api', {

View File

@@ -24,18 +24,9 @@ export function stringlizeChat(formated:OpenAIChat[], char:string = ''){
export function unstringlizeChat(text:string, formated:OpenAIChat[], char:string = ''){
console.log(text)
let minIndex = -1
let chunks:string[] = ["system note:", "system:","system note", "system"]
if(char){
chunks.push(`${char}:`)
}
for(const form of formated){
if(form.name){
chunks.push(`${form.name}:`)
chunks.push(`${form.name}`)
}
}
const chunks = getUnstringlizerChunks(formated, char)
for(const chunk of chunks){
const ind = text.indexOf(chunk)
@@ -54,6 +45,23 @@ export function unstringlizeChat(text:string, formated:OpenAIChat[], char:string
return text
}
export function getUnstringlizerChunks(formated:OpenAIChat[], char:string = ''){
let chunks:string[] = ["system note:", "system:","system note", "system"]
if(char){
chunks.push(`${char}:`)
}
for(const form of formated){
if(form.name){
chunks.push(`${form.name}:`)
chunks.push(`${form.name}`)
chunks.push(`${form.name}: `)
chunks.push(`${form.name} `)
}
}
return chunks
}
export function stringlizeAINChat(formated:OpenAIChat[], char:string = ''){
let resultString:string[] = []
for(const form of formated){

View File

@@ -28,16 +28,16 @@ export async function translate(text:string, reverse:boolean) {
}
}
return googleTrans(text, reverse, db.aiModel.startsWith('novellist') ? 'jp' : 'en')
return googleTrans(text, reverse, db.translator,db.aiModel.startsWith('novellist') ? 'jp' : 'en')
}
async function googleTrans(text:string, reverse:boolean, target:'en'|'jp') {
async function googleTrans(text:string, reverse:boolean, from:string,target:'en'|'jp') {
let db = get(DataBase)
const arg = {
from: reverse ? db.translator : target,
from: reverse ? from : target,
to: reverse ? target : db.translator,
to: reverse ? target : from,
host: 'translate.googleapis.com',
@@ -89,5 +89,5 @@ async function jpTrans(text:string) {
if(/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/.test(text)){
return text
}
return await googleTrans(text,false, 'jp')
return await googleTrans(text,false, 'en','jp')
}