[feat] added ain param

This commit is contained in:
kwaroran
2023-07-09 21:30:53 +09:00
parent 3564190235
commit d4157d3ab6
3 changed files with 127 additions and 83 deletions

View File

@@ -195,72 +195,94 @@
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="200" bind:value={$DataBase.temperature}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.temperature / 100).toFixed(2)}</span>
{#if $DataBase.aiModel === 'textgen_webui'}
<span class="text-neutral-200">Top K</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="2" step="0.01" bind:value={$DataBase.ooba.top_k}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.top_k).toFixed(2)}</span>
<span class="text-neutral-200">Top P</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="2" step="0.01" bind:value={$DataBase.ooba.top_p}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.top_p).toFixed(2)}</span>
<span class="text-neutral-200">Typical P</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.typical_p}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.typical_p).toFixed(2)}</span>
<span class="text-neutral-200">Top A</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.top_a}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.top_a).toFixed(2)}</span>
<span class="text-neutral-200">Tail Free Sampling</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.tfs}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.tfs).toFixed(2)}</span>
<span class="text-neutral-200">Epsilon Cutoff</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="9" step="0.01" bind:value={$DataBase.ooba.epsilon_cutoff}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.epsilon_cutoff).toFixed(2)}</span>
<span class="text-neutral-200">Eta Cutoff</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="20" step="0.01" bind:value={$DataBase.ooba.eta_cutoff}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.eta_cutoff).toFixed(2)}</span>
<span class="text-neutral-200">Number of Beams</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="1" max="20" step="1" bind:value={$DataBase.ooba.num_beams}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.num_beams).toFixed(2)}</span>
<span class="text-neutral-200">Length Penalty</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min={-5} max="5" step="0.1" bind:value={$DataBase.ooba.length_penalty}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.length_penalty).toFixed(2)}</span>
<span class="text-neutral-200">Penalty Alpha</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min={0} max="5" step="0.05" bind:value={$DataBase.ooba.penalty_alpha}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.penalty_alpha).toFixed(2)}</span>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.do_sample} name={'Do Sample'}/>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.add_bos_token} name={'Add BOS Token'}/>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.ban_eos_token} name={'Ban EOS Token'}/>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.skip_special_tokens} name={'Skip Special Tokens'}/>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.formating.custom} name={'Instruct Format'}/>
</div>
{#if $DataBase.ooba.formating.custom}
<div class="flex flex-col p-3 bg-darkbg mt-4">
<span class="text-neutral-200">User Prefix</span>
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected" bind:value={$DataBase.ooba.formating.userPrefix}>
<span class="text-neutral-200">Assistant Prefix</span>
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected" bind:value={$DataBase.ooba.formating.assistantPrefix}>
<span class="text-neutral-200">Seperator</span>
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected" bind:value={$DataBase.ooba.formating.seperator}>
<span class="text-neutral-200">Top K</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="2" step="0.01" bind:value={$DataBase.ooba.top_k}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.top_k).toFixed(2)}</span>
<span class="text-neutral-200">Top P</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="2" step="0.01" bind:value={$DataBase.ooba.top_p}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.top_p).toFixed(2)}</span>
<span class="text-neutral-200">Typical P</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.typical_p}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.typical_p).toFixed(2)}</span>
<span class="text-neutral-200">Top A</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.top_a}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.top_a).toFixed(2)}</span>
<span class="text-neutral-200">Tail Free Sampling</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.tfs}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.tfs).toFixed(2)}</span>
<span class="text-neutral-200">Epsilon Cutoff</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="9" step="0.01" bind:value={$DataBase.ooba.epsilon_cutoff}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.epsilon_cutoff).toFixed(2)}</span>
<span class="text-neutral-200">Eta Cutoff</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="20" step="0.01" bind:value={$DataBase.ooba.eta_cutoff}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.eta_cutoff).toFixed(2)}</span>
<span class="text-neutral-200">Number of Beams</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="1" max="20" step="1" bind:value={$DataBase.ooba.num_beams}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.num_beams).toFixed(2)}</span>
<span class="text-neutral-200">Length Penalty</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min={-5} max="5" step="0.1" bind:value={$DataBase.ooba.length_penalty}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.length_penalty).toFixed(2)}</span>
<span class="text-neutral-200">Penalty Alpha</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min={0} max="5" step="0.05" bind:value={$DataBase.ooba.penalty_alpha}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.penalty_alpha).toFixed(2)}</span>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.do_sample} name={'Do Sample'}/>
</div>
{/if}
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.add_bos_token} name={'Add BOS Token'}/>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.ban_eos_token} name={'Ban EOS Token'}/>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.skip_special_tokens} name={'Skip Special Tokens'}/>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.ooba.formating.custom} name={'Instruct Format'}/>
</div>
{#if $DataBase.ooba.formating.custom}
<div class="flex flex-col p-3 bg-darkbg mt-4">
<span class="text-neutral-200">User Prefix</span>
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected" bind:value={$DataBase.ooba.formating.userPrefix}>
<span class="text-neutral-200">Assistant Prefix</span>
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected" bind:value={$DataBase.ooba.formating.assistantPrefix}>
<span class="text-neutral-200">Seperator</span>
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected" bind:value={$DataBase.ooba.formating.seperator}>
</div>
{/if}
{:else if $DataBase.aiModel.startsWith('novellist')}
<span class="text-neutral-200">Top P</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="2" step="0.01" bind:value={$DataBase.ainconfig.top_p}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ainconfig.top_p).toFixed(2)}</span>
<span class="text-neutral-200">Reputation Penalty</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="2" step="0.01" bind:value={$DataBase.ainconfig.rep_pen}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ainconfig.rep_pen).toFixed(2)}</span>
<span class="text-neutral-200">Reputation Penalty Range</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="2" step="2048" bind:value={$DataBase.ainconfig.rep_pen_range}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ainconfig.rep_pen).toFixed(2)}</span>
<span class="text-neutral-200">Reputation Penalty Slope</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="10" step="0.1" bind:value={$DataBase.ainconfig.rep_pen_slope}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ainconfig.rep_pen).toFixed(2)}</span>
<span class="text-neutral-200">Top K</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="1" max="500" step="1" bind:value={$DataBase.ainconfig.top_k}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ainconfig.top_p).toFixed(2)}</span><span class="text-neutral-200">Typical P</span>
<span class="text-neutral-200">Top A</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.top_a}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.top_a).toFixed(2)}</span>
<span class="text-neutral-200">Typical P</span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="1" step="0.01" bind:value={$DataBase.ooba.typical_p}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.ooba.typical_p).toFixed(2)}</span>
{:else}
<span class="text-neutral-200">{language.frequencyPenalty} <Help key="frequencyPenalty"/></span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="100" bind:value={$DataBase.frequencyPenalty}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.frequencyPenalty / 100).toFixed(2)}</span>
<span class="text-neutral-200">{language.presensePenalty} <Help key="presensePenalty"/></span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="100" bind:value={$DataBase.PresensePenalty}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.PresensePenalty / 100).toFixed(2)}</span>
<span class="text-neutral-200">{language.frequencyPenalty} <Help key="frequencyPenalty"/></span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="100" bind:value={$DataBase.frequencyPenalty}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.frequencyPenalty / 100).toFixed(2)}</span>
<span class="text-neutral-200">{language.presensePenalty} <Help key="presensePenalty"/></span>
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="100" bind:value={$DataBase.PresensePenalty}>
<span class="text-gray-400 mb-6 text-sm">{($DataBase.PresensePenalty / 100).toFixed(2)}</span>
<span class="text-neutral-200 mt-2">{language.autoSuggest} <Help key="autoSuggest"/></span>
<textarea class="bg-transparent input-text mb-2 text-gray-200 resize-none h-20 min-h-20 focus:bg-selected text-xs w-full" autocomplete="off" bind:value={$DataBase.autoSuggestPrompt}></textarea>
<span class="text-gray-400 mb-6 text-sm">{tokens.autoSuggest} {language.tokens}</span>
<span class="text-neutral-200 mt-2">{language.autoSuggest} <Help key="autoSuggest"/></span>
<textarea class="bg-transparent input-text mb-2 text-gray-200 resize-none h-20 min-h-20 focus:bg-selected text-xs w-full" autocomplete="off" bind:value={$DataBase.autoSuggestPrompt}></textarea>
<span class="text-gray-400 mb-6 text-sm">{tokens.autoSuggest} {language.tokens}</span>
{/if}
{/if}

View File

@@ -551,29 +551,21 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
'Authorization': `Bearer ${auth_key}`,
'Content-Type': 'application/json'
};
// const send_body = {
// text: stringlizeAINChat(formated, currentChar?.name ?? ''),
// length: maxTokens,
// temperature: temperature,
// top_p: 0.7,
// tailfree: 1.0,
// rep_pen: arg.frequencyPenalty ?? (db.frequencyPenalty / 100) + 1,
// model: aiModel === 'novellist_damsel' ? 'damsel' : 'supertrin',
// userbadwords: ["【質問】"].join("<<|>>"),
// };
const send_body = {
text: stringlizeAINChat(formated, currentChar?.name ?? ''),
length: maxTokens,
temperature: 0.925,
top_p: 0.7,
rep_pen: 1.0625,
top_a: 0.08,
rep_pen_slope: 1.7,
temperature: temperature,
top_p: db.ainconfig.top_p,
top_k: db.ainconfig.top_k,
rep_pen: db.ainconfig.rep_pen,
top_a: db.ainconfig.top_a,
rep_pen_slope: db.ainconfig.rep_pen_slope,
rep_pen_range: db.ainconfig.rep_pen_range,
typical_p: db.ainconfig.typical_p,
badwords: db.ainconfig.badwords,
model: aiModel === 'novellist_damsel' ? 'damsel' : 'supertrin',
stoptokens: ["「"].join("<<|>>"),
stoptokens: ["「"].join("<<|>>") + db.ainconfig.stoptokens,
};
const response = await globalFetch(api_server_url + '/api', {
method: 'POST',

View File

@@ -410,6 +410,7 @@ export interface botPreset{
koboldURL?: string
proxyKey:string
ooba: OobaSettings
ainconfig: AINsettings
}
export interface Database{
@@ -537,6 +538,7 @@ export interface Database{
hypaMemory:boolean
proxyRequestModel:string
ooba:OobaSettings
ainconfig: AINsettings
}
interface hordeConfig{
@@ -585,6 +587,18 @@ export interface Message{
chatId?:string
}
interface AINsettings{
top_p: number,
rep_pen: number,
top_a: number,
rep_pen_slope:number,
rep_pen_range: number,
typical_p:number
badwords:string
stoptokens:string
top_k:number
}
interface OobaSettings{
max_new_tokens: number,
do_sample: boolean,
@@ -621,6 +635,18 @@ interface OobaSettings{
export const saveImage = saveImageGlobal
export const defaultAIN:AINsettings = {
top_p: 0.7,
rep_pen: 1.0625,
top_a: 0.08,
rep_pen_slope: 1.7,
rep_pen_range: 1024,
typical_p: 1.0,
badwords: '',
stoptokens: '',
top_k: 140
}
export const defaultOoba:OobaSettings = {
max_new_tokens: 180,
do_sample: true,
@@ -654,6 +680,7 @@ export const defaultOoba:OobaSettings = {
}
}
export const presetTemplate:botPreset = {
name: "New Preset",
apiType: "gpt35",
@@ -676,7 +703,8 @@ export const presetTemplate:botPreset = {
promptPreprocess: false,
proxyKey: '',
bias: [],
ooba: cloneDeep(defaultOoba)
ooba: cloneDeep(defaultOoba),
ainconfig: cloneDeep(defaultAIN)
}
const defaultSdData:[string,string][] = [
@@ -750,7 +778,8 @@ export function saveCurrentPreset(){
bias: db.bias,
koboldURL: db.koboldURL,
proxyKey: db.proxyKey,
ooba: db.ooba
ooba: cloneDeep(db.ooba),
ainconfig: cloneDeep(db.ainconfig)
}
db.botPresets = pres
DataBase.set(db)
@@ -796,6 +825,7 @@ export function changeToPreset(id =0, savecurrent = true){
db.koboldURL = newPres.koboldURL ?? db.koboldURL
db.proxyKey = newPres.proxyKey ?? db.proxyKey
db.ooba = cloneDeep(newPres.ooba ?? db.ooba)
db.ainconfig = cloneDeep(newPres.ainconfig ?? db.ainconfig)
DataBase.set(db)
}