Add ooba convertion
This commit is contained in:
@@ -2,6 +2,7 @@ import { get } from "svelte/store";
|
||||
import { tokenizeAccurate } from "../tokenizer";
|
||||
import { DataBase, presetTemplate, setDatabase, type Database } from "../storage/database";
|
||||
import { alertError, alertNormal } from "../alert";
|
||||
import type { OobaChatCompletionRequestParams } from "../model/ooba";
|
||||
|
||||
export type PromptItem = PromptItemPlain|PromptItemTyped|PromptItemChat|PromptItemAuthorNote;
|
||||
export type PromptType = PromptItem['type'];
|
||||
@@ -218,6 +219,42 @@ export function stChatConvert(pre:any){
|
||||
return promptTemplate
|
||||
}
|
||||
|
||||
export const OobaParams = [
|
||||
"tokenizer",
|
||||
"min_p",
|
||||
"top_k",
|
||||
"repetition_penalty",
|
||||
"repetition_penalty_range",
|
||||
"typical_p",
|
||||
"tfs",
|
||||
"top_a",
|
||||
"epsilon_cutoff",
|
||||
"eta_cutoff",
|
||||
"guidance_scale",
|
||||
"negative_prompt",
|
||||
"penalty_alpha",
|
||||
"mirostat_mode",
|
||||
"mirostat_tau",
|
||||
"mirostat_eta",
|
||||
"temperature_last",
|
||||
"do_sample",
|
||||
"seed",
|
||||
"encoder_repetition_penalty",
|
||||
"no_repeat_ngram_size",
|
||||
"min_length",
|
||||
"num_beams",
|
||||
"length_penalty",
|
||||
"early_stopping",
|
||||
"truncation_length",
|
||||
"max_tokens_second",
|
||||
"custom_token_bans",
|
||||
"auto_max_new_tokens",
|
||||
"ban_eos_token",
|
||||
"add_bos_token",
|
||||
"skip_special_tokens",
|
||||
"grammar_string"
|
||||
]
|
||||
|
||||
export function promptConvertion(files:{ name: string, content: string, type:string }[]){
|
||||
let preset = structuredClone(presetTemplate)
|
||||
let instData = {
|
||||
@@ -263,26 +300,37 @@ export function promptConvertion(files:{ name: string, content: string, type:str
|
||||
}
|
||||
|
||||
let samplers:string[] = []
|
||||
const getParam = (setname:keyof(typeof preset), getname:string = '', arg:{
|
||||
multiplier?: number
|
||||
}={}) => {
|
||||
if(getname === ''){
|
||||
getname = setname
|
||||
}
|
||||
let multiplier = arg.multiplier ?? 1
|
||||
if(samplers.includes(getname)){
|
||||
// @ts-ignore
|
||||
preset[setname] = data[getname] * multiplier
|
||||
}
|
||||
else{
|
||||
// @ts-ignore
|
||||
preset[setname] = -1000
|
||||
}
|
||||
|
||||
let oobaData:OobaChatCompletionRequestParams = {
|
||||
mode: 'instruct',
|
||||
}
|
||||
|
||||
|
||||
for(let i=0;i<files.length;i++){
|
||||
const file = files[i]
|
||||
const data = JSON.parse(file.content)
|
||||
|
||||
const getParam = (setname:keyof(typeof preset), getname:string = '', arg:{
|
||||
multiplier?: number
|
||||
}={}) => {
|
||||
if(getname === ''){
|
||||
getname = setname
|
||||
}
|
||||
let multiplier = arg.multiplier ?? 1
|
||||
if(samplers.includes(getname)){
|
||||
//@ts-ignore
|
||||
preset[setname] = data[getname] * multiplier
|
||||
}
|
||||
else{
|
||||
// @ts-ignore
|
||||
preset[setname] = -1000
|
||||
}
|
||||
|
||||
if(OobaParams.includes(getname)){
|
||||
oobaData[getname] = data[getname]
|
||||
}
|
||||
}
|
||||
|
||||
preset.name ||= instData.name ?? ''
|
||||
switch(file.type){
|
||||
case 'STINST':{
|
||||
@@ -304,6 +352,11 @@ export function promptConvertion(files:{ name: string, content: string, type:str
|
||||
getParam('repetition_penalty', 'rep_pen')
|
||||
getParam('frequencyPenalty', 'freq_pen', {multiplier: 100})
|
||||
getParam('PresensePenalty', 'presence_penalty', {multiplier: 100})
|
||||
for(const key of OobaParams){
|
||||
if(samplers.includes(key) && (data[key] !== undefined) && (data[key] !== null)){
|
||||
oobaData[key] = data[key]
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
case 'STCONTEXT':{
|
||||
@@ -338,6 +391,8 @@ export function promptConvertion(files:{ name: string, content: string, type:str
|
||||
return
|
||||
}
|
||||
|
||||
preset.reverseProxyOobaArgs = oobaData
|
||||
|
||||
preset.promptTemplate = [{
|
||||
type: 'plain',
|
||||
type2: 'main',
|
||||
|
||||
@@ -21,6 +21,7 @@ import { runTransformers } from "./transformers";
|
||||
import {createParser} from 'eventsource-parser'
|
||||
import {Ollama} from 'ollama/dist/browser.mjs'
|
||||
import { applyChatTemplate } from "./templates/chatTemplate";
|
||||
import { OobaParams } from "./prompt";
|
||||
|
||||
|
||||
|
||||
@@ -1076,7 +1077,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
||||
const OobaBodyTemplate = db.reverseProxyOobaArgs
|
||||
const keys = Object.keys(OobaBodyTemplate)
|
||||
for(const key of keys){
|
||||
if(OobaBodyTemplate[key] !== undefined && OobaBodyTemplate[key] !== null){
|
||||
if(OobaBodyTemplate[key] !== undefined && OobaBodyTemplate[key] !== null && OobaParams.includes(key)){
|
||||
bodyTemplate[key] = OobaBodyTemplate[key]
|
||||
}
|
||||
else if(bodyTemplate[key]){
|
||||
|
||||
@@ -1081,7 +1081,7 @@ interface AINsettings{
|
||||
top_k:number
|
||||
}
|
||||
|
||||
interface OobaSettings{
|
||||
export interface OobaSettings{
|
||||
max_new_tokens: number,
|
||||
do_sample: boolean,
|
||||
temperature: number,
|
||||
|
||||
Reference in New Issue
Block a user