Add Adaptive-P settings (#4945) * TC: Add Adaptive-P settings and UI elements * Improve compatibility with sampler select

2fb4ab3184a7d66fb8093bf1ac115af2e30e5eed

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
4 files changed, +35 -1Showing whitespace changes
public/css/toggle-dependent.css+4 -0
@@ -564,3 +564,7 @@ label[for="bind_preset_to_connection"]:has(input:checked) {
564#request_images_block:has(#openai_request_images:not(:checked)) #request_images_settings {564#request_images_block:has(#openai_request_images:not(:checked)) #request_images_settings {
565 display: none;565 display: none;
566}566}
567
568#adaptive_p_block:has([data-tg-samplers="adaptive_target"][style*="display: none"]):has([data-tg-samplers="adaptive_decay"][style*="display: none"]) {
569 display: none;
570}
public/index.html+22 -0
@@ -1399,6 +1399,28 @@
1399 <input class="neo-range-slider" type="range" id="max_tokens_second_textgenerationwebui" name="volume" min="0" max="20" step="1" />1399 <input class="neo-range-slider" type="range" id="max_tokens_second_textgenerationwebui" name="volume" min="0" max="20" step="1" />
1400 <input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="max_tokens_second_textgenerationwebui" id="max_tokens_second_counter_textgenerationwebui">1400 <input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="max_tokens_second_textgenerationwebui" id="max_tokens_second_counter_textgenerationwebui">
1401 </div>1401 </div>
1402
1403 <div data-tg-type="koboldcpp" id="adaptive_p_block" class="wide100p">
1404 <h4 class="wide100p textAlignCenter">
1405 <label data-i18n="Adaptive-P">Adaptive-P</label>
1406 <a href="https://github.com/MrJackSpade/adaptive-p-docs" target="_blank">
1407 <div class="fa-solid fa-circle-info opacity50p"></div>
1408 </a>
1409 </h4>
1410 <div class="flex-container flexFlowRow alignitemscenter gap10px flexShrink">
1411 <div data-tg-samplers="adaptive_target" class="alignitemscenter flex-container marginBot5 flexFlowColumn flexGrow flexShrink gap0">
1412 <small data-i18n="Target">Target</small>
1413 <input class="neo-range-slider" type="range" id="adaptive_target_textgenerationwebui" min="-0.01" max="1" step="0.01" />
1414 <input class="neo-range-input" type="number" min="-0.01" max="1" step="0.01" data-for="adaptive_target_textgenerationwebui" id="adaptive_target_counter_textgenerationwebui">
1415 </div>
1416 <div data-tg-samplers="adaptive_decay" class="alignitemscenter flex-container marginBot5 flexFlowColumn flexGrow flexShrink gap0">
1417 <small data-i18n="Decay">Decay</small>
1418 <input class="neo-range-slider" type="range" id="adaptive_decay_textgenerationwebui" min="0" max="0.99" step="0.01" />
1419 <input class="neo-range-input" type="number" min="0" max="0.99" step="0.01" data-for="adaptive_decay_textgenerationwebui" id="adaptive_decay_counter_textgenerationwebui">
1420 </div>
1421 </div>
1422 </div>
1423
1402 <div data-tg-type="mancer, ooba, koboldcpp, aphrodite, tabby" data-tg-samplers="smoothing_factor" id="smoothingBlock" name="smoothingBlock" class="wide100p">1424 <div data-tg-type="mancer, ooba, koboldcpp, aphrodite, tabby" data-tg-samplers="smoothing_factor" id="smoothingBlock" name="smoothingBlock" class="wide100p">
1403 <h4 class="wide100p textAlignCenter">1425 <h4 class="wide100p textAlignCenter">
1404 <label data-i18n="Smooth Sampling">Smooth Sampling</label>1426 <label data-i18n="Smooth Sampling">Smooth Sampling</label>
public/scripts/samplerSelect.js+1 -1
@@ -221,7 +221,7 @@ async function listSamplers(main_api, arrayOnly = false) {
221 let availableSamplers;221 let availableSamplers;
222 if (main_api === 'textgenerationwebui') {222 if (main_api === 'textgenerationwebui') {
223 availableSamplers = TGsamplerNames;223 availableSamplers = TGsamplerNames;
224 const valuesToRemove = new Set(['streaming', 'bypass_status_check', 'custom_model', 'legacy_api']);224 const valuesToRemove = new Set(['streaming', 'bypass_status_check', 'custom_model', 'legacy_api', 'extensions']);
225 availableSamplers = availableSamplers.filter(sampler => !valuesToRemove.has(sampler));225 availableSamplers = availableSamplers.filter(sampler => !valuesToRemove.has(sampler));
226 availableSamplers.sort();226 availableSamplers.sort();
227 }227 }
public/scripts/textgen-settings.js+8 -0
@@ -229,6 +229,8 @@ export const textgenerationwebui_settings = {
229 featherless_model: '',229 featherless_model: '',
230 generic_model: '',230 generic_model: '',
231 extensions: {},231 extensions: {},
232 adaptive_target: -0.01,
233 adaptive_decay: 0.9,
232};234};
233235
234export {236export {
@@ -313,6 +315,8 @@ export const setting_names = [
313 'generic_model',315 'generic_model',
314 'extensions',316 'extensions',
315 'json_schema_allow_empty',317 'json_schema_allow_empty',
318 'adaptive_target',
319 'adaptive_decay',
316];320];
317321
318const DYNATEMP_BLOCK = document.getElementById('dynatemp_block_ooba');322const DYNATEMP_BLOCK = document.getElementById('dynatemp_block_ooba');
@@ -989,6 +993,8 @@ export function initTextGenSettings() {
989 'xtc_probability_textgenerationwebui': 0,993 'xtc_probability_textgenerationwebui': 0,
990 'nsigma_textgenerationwebui': 0,994 'nsigma_textgenerationwebui': 0,
991 'min_keep_textgenerationwebui': 0,995 'min_keep_textgenerationwebui': 0,
996 'adaptive_target_textgenerationwebui': -0.01,
997 'adaptive_decay_textgenerationwebui': 0.9,
992 };998 };
993999
994 for (const [id, value] of Object.entries(inputs)) {1000 for (const [id, value] of Object.entries(inputs)) {
@@ -1630,6 +1636,8 @@ export function createTextGenGenerationData(settings, model, finalPrompt = null,
1630 'nsigma': settings.nsigma,1636 'nsigma': settings.nsigma,
1631 'top_n_sigma': settings.nsigma,1637 'top_n_sigma': settings.nsigma,
1632 'min_keep': settings.min_keep,1638 'min_keep': settings.min_keep,
1639 'adaptive_target': settings.adaptive_target,
1640 'adaptive_decay': settings.adaptive_decay,
1633 parseSequenceBreakers: function () {1641 parseSequenceBreakers: function () {
1634 try {1642 try {
1635 return JSON.parse(this.dry_sequence_breakers);1643 return JSON.parse(this.dry_sequence_breakers);