mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Merge pull request #3132 from AlpinDale/sampler_order
aphrodite: sampler order block
This commit is contained in:
@@ -1774,6 +1774,35 @@
|
|||||||
<span data-i18n="Load default order">Load default order</span>
|
<span data-i18n="Load default order">Load default order</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="sampler_priority_block_aphrodite" data-tg-type="aphrodite" class="range-block flexFlowColumn wide100p">
|
||||||
|
<hr class="wide100p">
|
||||||
|
<h4 class="range-block-title justifyCenter">
|
||||||
|
<span data-i18n="Sampler Order">Sampler Order</span>
|
||||||
|
<div class="margin5 fa-solid fa-circle-info opacity50p" title="Aphrodite only. Determines the order of samplers. Skew is always applied post-softmax, so it's not included here." data-i18n="[title]Aphrodite only. Determines the order of samplers. Skew is always applied post-softmax, so it's not included here."></div>
|
||||||
|
</h4>
|
||||||
|
<div class="toggle-description widthUnset" data-i18n="Aphrodite only. Determines the order of samplers.">
|
||||||
|
Aphrodite only. Determines the order of samplers.
|
||||||
|
</div>
|
||||||
|
<div id="sampler_priority_container_aphrodite" class="prompt_order">
|
||||||
|
<div data-name="dry" draggable="true"><span>DRY</span><small></small></div>
|
||||||
|
<div data-name="penalties" draggable="true"><span>Penalties</span><small></small></div>
|
||||||
|
<div data-name="no_repeat_ngram" draggable="true"><span>No Repeat Ngram</span><small></small></div>
|
||||||
|
<div data-name="temperature" draggable="true"><span>Dynatemp & Temperature</span><small></small></div>
|
||||||
|
<div data-name="top_nsigma" draggable="true"><span>Top Nsigma</span><small></small></div>
|
||||||
|
<div data-name="top_p_top_k" draggable="true"><span>Top P & Top K</span><small></small></div>
|
||||||
|
<div data-name="top_a" draggable="true"><span>Top A</span><small></small></div>
|
||||||
|
<div data-name="min_p" draggable="true"><span>Min P</span><small></small></div>
|
||||||
|
<div data-name="tfs" draggable="true"><span>Tail-Free Sampling</span><small></small></div>
|
||||||
|
<div data-name="eta_cutoff" draggable="true"><span>Eta Cutoff</span><small></small></div>
|
||||||
|
<div data-name="epsilon_cutoff" draggable="true"><span>Epsilon Cutoff</span><small></small></div>
|
||||||
|
<div data-name="typical_p" draggable="true"><span>Typical P</span><small></small></div>
|
||||||
|
<div data-name="quadratic" draggable="true"><span>Cubic and Quadratic Sampling</span><small></small></div>
|
||||||
|
<div data-name="xtc" draggable="true"><span>XTC</span><small></small></div>
|
||||||
|
</div>
|
||||||
|
<div id="aphrodite_default_order" class="menu_button menu_button_icon">
|
||||||
|
<span data-i18n="Load default order">Load default order</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- end of textgen settings-->
|
</div><!-- end of textgen settings-->
|
||||||
<div id="openai_settings">
|
<div id="openai_settings">
|
||||||
|
@@ -129,6 +129,10 @@ function setSamplerListListeners() {
|
|||||||
relatedDOMElement = $('#sampler_priority_block_ooba');
|
relatedDOMElement = $('#sampler_priority_block_ooba');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (samplerName === 'samplers_priorities') { //this is for aphrodite's sampler priority
|
||||||
|
relatedDOMElement = $('#sampler_priority_block_aphrodite');
|
||||||
|
}
|
||||||
|
|
||||||
if (samplerName === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block?
|
if (samplerName === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block?
|
||||||
relatedDOMElement = $('#contrastiveSearchBlock');
|
relatedDOMElement = $('#contrastiveSearchBlock');
|
||||||
}
|
}
|
||||||
@@ -237,6 +241,11 @@ async function listSamplers(main_api, arrayOnly = false) {
|
|||||||
displayname = 'Ooba Sampler Priority Block';
|
displayname = 'Ooba Sampler Priority Block';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sampler === 'samplers_priorities') { //this is for aphrodite's sampler priority
|
||||||
|
targetDOMelement = $('#sampler_priority_block_aphrodite');
|
||||||
|
displayname = 'Aphrodite Sampler Priority Block';
|
||||||
|
}
|
||||||
|
|
||||||
if (sampler === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block?
|
if (sampler === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block?
|
||||||
targetDOMelement = $('#contrastiveSearchBlock');
|
targetDOMelement = $('#contrastiveSearchBlock');
|
||||||
displayname = 'Contrast Search Block';
|
displayname = 'Contrast Search Block';
|
||||||
@@ -373,6 +382,10 @@ export async function validateDisabledSamplers(redraw = false) {
|
|||||||
relatedDOMElement = $('#sampler_priority_block_ooba');
|
relatedDOMElement = $('#sampler_priority_block_ooba');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sampler === 'samplers_priorities') { //this is for aphrodite's sampler priority
|
||||||
|
relatedDOMElement = $('#sampler_priority_block_aphrodite');
|
||||||
|
}
|
||||||
|
|
||||||
if (sampler === 'dry_multiplier') {
|
if (sampler === 'dry_multiplier') {
|
||||||
relatedDOMElement = $('#dryBlock');
|
relatedDOMElement = $('#dryBlock');
|
||||||
targetDisplayType = 'block';
|
targetDisplayType = 'block';
|
||||||
|
@@ -82,6 +82,22 @@ const OOBA_DEFAULT_ORDER = [
|
|||||||
'encoder_repetition_penalty',
|
'encoder_repetition_penalty',
|
||||||
'no_repeat_ngram',
|
'no_repeat_ngram',
|
||||||
];
|
];
|
||||||
|
const APHRODITE_DEFAULT_ORDER = [
|
||||||
|
'dry',
|
||||||
|
'penalties',
|
||||||
|
'no_repeat_ngram',
|
||||||
|
'temperature',
|
||||||
|
'top_nsigma',
|
||||||
|
'top_p_top_k',
|
||||||
|
'top_a',
|
||||||
|
'min_p',
|
||||||
|
'tfs',
|
||||||
|
'eta_cutoff',
|
||||||
|
'epsilon_cutoff',
|
||||||
|
'typical_p',
|
||||||
|
'quadratic',
|
||||||
|
'xtc',
|
||||||
|
];
|
||||||
const BIAS_KEY = '#textgenerationwebui_api-settings';
|
const BIAS_KEY = '#textgenerationwebui_api-settings';
|
||||||
|
|
||||||
// Maybe let it be configurable in the future?
|
// Maybe let it be configurable in the future?
|
||||||
@@ -163,6 +179,7 @@ const settings = {
|
|||||||
banned_tokens: '',
|
banned_tokens: '',
|
||||||
sampler_priority: OOBA_DEFAULT_ORDER,
|
sampler_priority: OOBA_DEFAULT_ORDER,
|
||||||
samplers: LLAMACPP_DEFAULT_ORDER,
|
samplers: LLAMACPP_DEFAULT_ORDER,
|
||||||
|
samplers_priorities: APHRODITE_DEFAULT_ORDER,
|
||||||
ignore_eos_token: false,
|
ignore_eos_token: false,
|
||||||
spaces_between_special_tokens: true,
|
spaces_between_special_tokens: true,
|
||||||
speculative_ngram: false,
|
speculative_ngram: false,
|
||||||
@@ -256,6 +273,7 @@ export const setting_names = [
|
|||||||
'sampler_order',
|
'sampler_order',
|
||||||
'sampler_priority',
|
'sampler_priority',
|
||||||
'samplers',
|
'samplers',
|
||||||
|
'samplers_priorities',
|
||||||
'n',
|
'n',
|
||||||
'logit_bias',
|
'logit_bias',
|
||||||
'custom_model',
|
'custom_model',
|
||||||
@@ -553,6 +571,20 @@ function sortOobaItemsByOrder(orderArray) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sorts the Aphrodite sampler items by the given order.
|
||||||
|
* @param {string[]} orderArray Sampler order array.
|
||||||
|
*/
|
||||||
|
function sortAphroditeItemsByOrder(orderArray) {
|
||||||
|
console.debug('Preset samplers order: ', orderArray);
|
||||||
|
const $container = $('#sampler_priority_container_aphrodite');
|
||||||
|
|
||||||
|
orderArray.forEach((name) => {
|
||||||
|
const $item = $container.find(`[data-name="${name}"]`).detach();
|
||||||
|
$container.append($item);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
jQuery(function () {
|
jQuery(function () {
|
||||||
$('#koboldcpp_order').sortable({
|
$('#koboldcpp_order').sortable({
|
||||||
delay: getSortableDelay(),
|
delay: getSortableDelay(),
|
||||||
@@ -606,6 +638,19 @@ jQuery(function () {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#sampler_priority_container_aphrodite').sortable({
|
||||||
|
delay: getSortableDelay(),
|
||||||
|
stop: function () {
|
||||||
|
const order = [];
|
||||||
|
$('#sampler_priority_container_aphrodite').children().each(function () {
|
||||||
|
order.push($(this).data('name'));
|
||||||
|
});
|
||||||
|
settings.samplers_priorities = order;
|
||||||
|
console.log('Samplers reordered:', settings.samplers_priorities);
|
||||||
|
saveSettingsDebounced();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
$('#tabby_json_schema').on('input', function () {
|
$('#tabby_json_schema').on('input', function () {
|
||||||
const json_schema_string = String($(this).val());
|
const json_schema_string = String($(this).val());
|
||||||
|
|
||||||
@@ -624,6 +669,13 @@ jQuery(function () {
|
|||||||
saveSettingsDebounced();
|
saveSettingsDebounced();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#aphrodite_default_order').on('click', function () {
|
||||||
|
sortAphroditeItemsByOrder(APHRODITE_DEFAULT_ORDER);
|
||||||
|
settings.samplers_priorities = APHRODITE_DEFAULT_ORDER;
|
||||||
|
console.log('Default samplers order loaded:', settings.samplers_priorities);
|
||||||
|
saveSettingsDebounced();
|
||||||
|
});
|
||||||
|
|
||||||
$('#textgen_type').on('change', function () {
|
$('#textgen_type').on('change', function () {
|
||||||
const type = String($(this).val());
|
const type = String($(this).val());
|
||||||
settings.type = type;
|
settings.type = type;
|
||||||
@@ -832,6 +884,14 @@ function setSettingByName(setting, value, trigger) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('samplers_priorities' === setting) {
|
||||||
|
value = Array.isArray(value) ? value : APHRODITE_DEFAULT_ORDER;
|
||||||
|
insertMissingArrayItems(APHRODITE_DEFAULT_ORDER, value);
|
||||||
|
sortAphroditeItemsByOrder(value);
|
||||||
|
settings.samplers_priorities = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ('samplers' === setting) {
|
if ('samplers' === setting) {
|
||||||
value = Array.isArray(value) ? value : LLAMACPP_DEFAULT_ORDER;
|
value = Array.isArray(value) ? value : LLAMACPP_DEFAULT_ORDER;
|
||||||
insertMissingArrayItems(LLAMACPP_DEFAULT_ORDER, value);
|
insertMissingArrayItems(LLAMACPP_DEFAULT_ORDER, value);
|
||||||
@@ -1256,6 +1316,7 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
|
|||||||
'nsigma': settings.nsigma,
|
'nsigma': settings.nsigma,
|
||||||
'custom_token_bans': toIntArray(banned_tokens),
|
'custom_token_bans': toIntArray(banned_tokens),
|
||||||
'no_repeat_ngram_size': settings.no_repeat_ngram_size,
|
'no_repeat_ngram_size': settings.no_repeat_ngram_size,
|
||||||
|
'sampler_priority': settings.type === APHRODITE ? settings.samplers_priorities : undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (settings.type === OPENROUTER) {
|
if (settings.type === OPENROUTER) {
|
||||||
|
Reference in New Issue
Block a user