Add parameter manager
This commit is contained in:
@@ -307,19 +307,22 @@
|
|||||||
{:else}
|
{:else}
|
||||||
<SliderInput min={0} max={200} marginBottom bind:value={$DataBase.temperature} multiple={0.01} fixed={2} disableable/>
|
<SliderInput min={0} max={200} marginBottom bind:value={$DataBase.temperature} multiple={0.01} fixed={2} disableable/>
|
||||||
{/if}
|
{/if}
|
||||||
{#if $DataBase.aiModel.startsWith('openrouter') || $DataBase.aiModel.startsWith('claude-3') || $DataBase.aiModel.startsWith('cohere-')}
|
{#if $DataBase.aiModel.startsWith('openrouter') || $DataBase.aiModel.startsWith('claude-3') || $DataBase.aiModel.startsWith('cohere-')|| $DataBase.aiModel === 'kobold'}
|
||||||
<span class="text-textcolor">Top K</span>
|
<span class="text-textcolor">Top K</span>
|
||||||
<SliderInput min={0} max={100} marginBottom step={1} bind:value={$DataBase.top_k} disableable/>
|
<SliderInput min={0} max={100} marginBottom step={1} bind:value={$DataBase.top_k} disableable/>
|
||||||
{/if}
|
{/if}
|
||||||
{#if $DataBase.aiModel.startsWith('openrouter')}
|
{#if $DataBase.aiModel.startsWith('openrouter')}
|
||||||
<span class="text-textcolor">Repetition penalty</span>
|
|
||||||
<SliderInput min={0} max={2} marginBottom step={0.01} fixed={2} bind:value={$DataBase.repetition_penalty} disableable/>
|
|
||||||
|
|
||||||
<span class="text-textcolor">Min P</span>
|
<span class="text-textcolor">Min P</span>
|
||||||
<SliderInput min={0} max={1} marginBottom step={0.01} fixed={2} bind:value={$DataBase.min_p} disableable/>
|
<SliderInput min={0} max={1} marginBottom step={0.01} fixed={2} bind:value={$DataBase.min_p} disableable/>
|
||||||
|
|
||||||
|
{/if}
|
||||||
|
{#if $DataBase.aiModel.startsWith('openrouter') || $DataBase.aiModel === 'kobold'}
|
||||||
<span class="text-textcolor">Top A</span>
|
<span class="text-textcolor">Top A</span>
|
||||||
<SliderInput min={0} max={1} marginBottom step={0.01} fixed={2} bind:value={$DataBase.top_a} disableable/>
|
<SliderInput min={0} max={1} marginBottom step={0.01} fixed={2} bind:value={$DataBase.top_a} disableable/>
|
||||||
|
|
||||||
|
<span class="text-textcolor">Repetition penalty</span>
|
||||||
|
<SliderInput min={0} max={2} marginBottom step={0.01} fixed={2} bind:value={$DataBase.repetition_penalty} disableable/>
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
{#if $DataBase.aiModel === 'textgen_webui' || $DataBase.aiModel === 'mancer' || $DataBase.aiModel.startsWith('local_') || $DataBase.aiModel.startsWith('hf:::')}
|
{#if $DataBase.aiModel === 'textgen_webui' || $DataBase.aiModel === 'mancer' || $DataBase.aiModel.startsWith('local_') || $DataBase.aiModel.startsWith('hf:::')}
|
||||||
<span class="text-textcolor">Repetition Penalty</span>
|
<span class="text-textcolor">Repetition Penalty</span>
|
||||||
@@ -440,6 +443,9 @@
|
|||||||
{:else if $DataBase.aiModel.startsWith('claude')}
|
{:else if $DataBase.aiModel.startsWith('claude')}
|
||||||
<span class="text-textcolor">Top P <Help key="topP"/></span>
|
<span class="text-textcolor">Top P <Help key="topP"/></span>
|
||||||
<SliderInput min={0} max={1} step={0.01} marginBottom fixed={2} bind:value={$DataBase.top_p} disableable/>
|
<SliderInput min={0} max={1} step={0.01} marginBottom fixed={2} bind:value={$DataBase.top_p} disableable/>
|
||||||
|
{:else if $DataBase.aiModel.startsWith('kobold')}
|
||||||
|
<span class="text-textcolor">Top P <Help key="topP"/></span>
|
||||||
|
<SliderInput min={0} max={1} step={0.01} marginBottom fixed={2} bind:value={$DataBase.top_p} disableable/>
|
||||||
{:else}
|
{:else}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -79,6 +79,60 @@ interface OaiFunctions {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type Parameter = 'temperature'|'top_k'|'repetition_penalty'|'min_p'|'top_a'|'top_p'|'frequency_penalty'|'presence_penalty'
|
||||||
|
type ParameterMap = {
|
||||||
|
[key in Parameter]?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
function applyParameters(data: { [key: string]: any }, parameters: Parameter[], rename: ParameterMap = {}) {
|
||||||
|
const db = get(DataBase)
|
||||||
|
for(const parameter of parameters){
|
||||||
|
let value = 0
|
||||||
|
switch(parameter){
|
||||||
|
case 'temperature':{
|
||||||
|
value = db.temperature === -1000 ? -1000 : (db.temperature / 100)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'top_k':{
|
||||||
|
value = db.top_k
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'repetition_penalty':{
|
||||||
|
value = db.repetition_penalty
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'min_p':{
|
||||||
|
value = db.min_p
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'top_a':{
|
||||||
|
value = db.top_a
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'top_p':{
|
||||||
|
value = db.top_p
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'frequency_penalty':{
|
||||||
|
value = db.frequencyPenalty === -1000 ? -1000 : (db.frequencyPenalty / 100)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'presence_penalty':{
|
||||||
|
value = db.PresensePenalty === -1000 ? -1000 : (db.PresensePenalty / 100)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(value === -1000){
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
data[rename[parameter] ?? parameter] = value
|
||||||
|
}
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
export async function requestChatData(arg:requestDataArgument, model:'model'|'submodel', abortSignal:AbortSignal=null):Promise<requestDataResponse> {
|
export async function requestChatData(arg:requestDataArgument, model:'model'|'submodel', abortSignal:AbortSignal=null):Promise<requestDataResponse> {
|
||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
let trys = 0
|
let trys = 0
|
||||||
@@ -399,7 +453,9 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
}
|
}
|
||||||
|
|
||||||
db.cipherChat = false
|
db.cipherChat = false
|
||||||
let body = ({
|
let body:{
|
||||||
|
[key:string]:any
|
||||||
|
} = ({
|
||||||
model: aiModel === 'openrouter' ? openrouterRequestModel :
|
model: aiModel === 'openrouter' ? openrouterRequestModel :
|
||||||
requestModel === 'gpt35' ? 'gpt-3.5-turbo'
|
requestModel === 'gpt35' ? 'gpt-3.5-turbo'
|
||||||
: requestModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
|
: requestModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
|
||||||
@@ -428,62 +484,47 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
: (!requestModel) ? 'gpt-3.5-turbo'
|
: (!requestModel) ? 'gpt-3.5-turbo'
|
||||||
: requestModel,
|
: requestModel,
|
||||||
messages: formatedChat,
|
messages: formatedChat,
|
||||||
temperature: temperature,
|
// temperature: temperature,
|
||||||
max_tokens: maxTokens,
|
max_tokens: maxTokens,
|
||||||
presence_penalty: arg.PresensePenalty || (db.PresensePenalty / 100),
|
// presence_penalty: arg.PresensePenalty || (db.PresensePenalty / 100),
|
||||||
frequency_penalty: arg.frequencyPenalty || (db.frequencyPenalty / 100),
|
// frequency_penalty: arg.frequencyPenalty || (db.frequencyPenalty / 100),
|
||||||
logit_bias: bias,
|
logit_bias: bias,
|
||||||
stream: false,
|
stream: false,
|
||||||
top_p: db.top_p,
|
// top_p: db.top_p,
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if(db.generationSeed > 0){
|
if(db.generationSeed > 0){
|
||||||
// @ts-ignore
|
|
||||||
body.seed = db.generationSeed
|
body.seed = db.generationSeed
|
||||||
}
|
}
|
||||||
|
|
||||||
if(db.putUserOpen){
|
if(db.putUserOpen){
|
||||||
// @ts-ignore
|
|
||||||
body.user = getOpenUserString()
|
body.user = getOpenUserString()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(aiModel === 'openrouter'){
|
if(aiModel === 'openrouter'){
|
||||||
if(db.top_k !== 0){
|
|
||||||
//@ts-ignore
|
|
||||||
body.top_k = db.top_k
|
|
||||||
}
|
|
||||||
if(db.openrouterFallback){
|
if(db.openrouterFallback){
|
||||||
//@ts-ignore
|
|
||||||
body.route = "fallback"
|
body.route = "fallback"
|
||||||
}
|
}
|
||||||
//@ts-ignore
|
|
||||||
body.repetition_penalty = db.repetition_penalty
|
|
||||||
//@ts-ignore
|
|
||||||
body.min_p = db.min_p
|
|
||||||
//@ts-ignore
|
|
||||||
body.top_a = db.top_a
|
|
||||||
//@ts-ignore
|
|
||||||
body.transforms = db.openrouterMiddleOut ? ['middle-out'] : []
|
body.transforms = db.openrouterMiddleOut ? ['middle-out'] : []
|
||||||
|
|
||||||
if(db.openrouterProvider){
|
if(db.openrouterProvider){
|
||||||
//@ts-ignore
|
|
||||||
body.provider = {
|
body.provider = {
|
||||||
order: [db.openrouterProvider]
|
order: [db.openrouterProvider]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(db.useInstructPrompt){
|
if(db.useInstructPrompt){
|
||||||
//@ts-ignore
|
|
||||||
delete body.messages
|
delete body.messages
|
||||||
|
|
||||||
const prompt = applyChatTemplate(formated)
|
const prompt = applyChatTemplate(formated)
|
||||||
|
|
||||||
//@ts-ignore
|
|
||||||
body.prompt = prompt
|
body.prompt = prompt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body = applyParameters(body,
|
||||||
|
aiModel === 'openrouter' ? ['temperature', 'top_p', 'frequency_penalty', 'presence_penalty', 'repetition_penalty', 'min_p', 'top_a', 'top_k'] : ['temperature', 'top_p', 'frequency_penalty', 'presence_penalty']
|
||||||
|
)
|
||||||
|
|
||||||
if(aiModel === 'reverse_proxy' && db.reverseProxyOobaMode){
|
if(aiModel === 'reverse_proxy' && db.reverseProxyOobaMode){
|
||||||
const OobaBodyTemplate = db.reverseProxyOobaArgs
|
const OobaBodyTemplate = db.reverseProxyOobaArgs
|
||||||
|
|
||||||
@@ -889,7 +930,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
case 'mancer':{
|
case 'mancer':{
|
||||||
let streamUrl = db.textgenWebUIStreamURL.replace(/\/api.*/, "/api/v1/stream")
|
let streamUrl = db.textgenWebUIStreamURL.replace(/\/api.*/, "/api/v1/stream")
|
||||||
let blockingUrl = db.textgenWebUIBlockingURL.replace(/\/api.*/, "/api/v1/generate")
|
let blockingUrl = db.textgenWebUIBlockingURL.replace(/\/api.*/, "/api/v1/generate")
|
||||||
let bodyTemplate:any
|
let bodyTemplate:{[key:string]:any} = {}
|
||||||
const suggesting = model === "submodel"
|
const suggesting = model === "submodel"
|
||||||
const prompt = applyChatTemplate(formated)
|
const prompt = applyChatTemplate(formated)
|
||||||
let stopStrings = getStopStrings(suggesting)
|
let stopStrings = getStopStrings(suggesting)
|
||||||
@@ -1038,6 +1079,9 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
if(OobaBodyTemplate[key] !== undefined && OobaBodyTemplate[key] !== null){
|
if(OobaBodyTemplate[key] !== undefined && OobaBodyTemplate[key] !== null){
|
||||||
bodyTemplate[key] = OobaBodyTemplate[key]
|
bodyTemplate[key] = OobaBodyTemplate[key]
|
||||||
}
|
}
|
||||||
|
else if(bodyTemplate[key]){
|
||||||
|
delete bodyTemplate[key]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await globalFetch(urlStr, {
|
const response = await globalFetch(urlStr, {
|
||||||
@@ -1294,11 +1338,11 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
|
|
||||||
const body = {
|
const body = {
|
||||||
contents: reformatedChat,
|
contents: reformatedChat,
|
||||||
generation_config: {
|
generation_config: applyParameters({
|
||||||
"maxOutputTokens": maxTokens,
|
"maxOutputTokens": maxTokens,
|
||||||
"temperature": temperature,
|
}, ['temperature', 'top_p'], {
|
||||||
"topP": db.top_p,
|
'top_p': "topP"
|
||||||
},
|
}),
|
||||||
safetySettings: uncensoredCatagory
|
safetySettings: uncensoredCatagory
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1368,14 +1412,20 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
url.pathname = 'api/v1/generate'
|
url.pathname = 'api/v1/generate'
|
||||||
}
|
}
|
||||||
|
|
||||||
const body:KoboldGenerationInputSchema = {
|
const body = applyParameters({
|
||||||
"prompt": prompt,
|
"prompt": prompt,
|
||||||
"temperature": (db.temperature / 100),
|
|
||||||
"top_p": db.top_p,
|
|
||||||
max_length: maxTokens,
|
max_length: maxTokens,
|
||||||
max_context_length: db.maxContext,
|
max_context_length: db.maxContext,
|
||||||
n: 1
|
n: 1
|
||||||
}
|
}, [
|
||||||
|
'temperature',
|
||||||
|
'top_p',
|
||||||
|
'repetition_penalty',
|
||||||
|
'top_k',
|
||||||
|
'top_a'
|
||||||
|
], {
|
||||||
|
'repetition_penalty': 'rep_pen'
|
||||||
|
}) as KoboldGenerationInputSchema
|
||||||
|
|
||||||
const da = await globalFetch(url.toString(), {
|
const da = await globalFetch(url.toString(), {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
@@ -1575,7 +1625,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
let body = {
|
let body = applyParameters({
|
||||||
message: lastChatPrompt,
|
message: lastChatPrompt,
|
||||||
chat_history: formated.map((v) => {
|
chat_history: formated.map((v) => {
|
||||||
if(v.role === 'assistant'){
|
if(v.role === 'assistant'){
|
||||||
@@ -1600,12 +1650,12 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
}).filter((v) => v !== null).filter((v) => {
|
}).filter((v) => v !== null).filter((v) => {
|
||||||
return v.message
|
return v.message
|
||||||
}),
|
}),
|
||||||
temperature: temperature,
|
}, [
|
||||||
k: db.top_k,
|
'temperature', 'top_k', 'top_p', 'presence_penalty', 'frequency_penalty'
|
||||||
p: (db.top_p > 0.99) ? 0.99 : (db.top_p < 0.01) ? 0.01 : db.top_p,
|
], {
|
||||||
presence_penalty: arg.PresensePenalty || (db.PresensePenalty / 100),
|
'top_k': 'k',
|
||||||
frequency_penalty: arg.frequencyPenalty || (db.frequencyPenalty / 100),
|
'top_p': 'p',
|
||||||
}
|
})
|
||||||
|
|
||||||
if(preamble){
|
if(preamble){
|
||||||
if(body.chat_history.length > 0){
|
if(body.chat_history.length > 0){
|
||||||
@@ -1879,16 +1929,13 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let body = {
|
let body = applyParameters({
|
||||||
model: raiModel,
|
model: raiModel,
|
||||||
messages: finalChat,
|
messages: finalChat,
|
||||||
system: systemPrompt.trim(),
|
system: systemPrompt.trim(),
|
||||||
max_tokens: maxTokens,
|
max_tokens: maxTokens,
|
||||||
temperature: temperature,
|
|
||||||
top_p: db.top_p,
|
|
||||||
top_k: db.top_k,
|
|
||||||
stream: useStreaming ?? false
|
stream: useStreaming ?? false
|
||||||
}
|
}, ['temperature', 'top_k', 'top_p'])
|
||||||
|
|
||||||
if(systemPrompt === ''){
|
if(systemPrompt === ''){
|
||||||
delete body.system
|
delete body.system
|
||||||
|
|||||||
Reference in New Issue
Block a user