Files
SillyTavern/public/scripts/kai-settings.js
2023-03-25 23:38:51 +02:00

139 lines
3.6 KiB
JavaScript

import {
saveSettingsDebounced,
} from "../script.js";
export {
kai_settings,
loadKoboldSettings,
formatKoboldUrl,
};
const kai_settings = {
temp: 1,
rep_pen: 1,
rep_pen_range: 0,
top_p: 1,
top_a: 1,
top_k: 0,
typical: 1,
tfs: 1,
rep_pen_slope: 0.9,
single_line: false,
};
function formatKoboldUrl(value) {
try {
const url = new URL(value);
url.pathname = '/api';
return url.toString();
}
catch {
return null;
}
}
function loadKoboldSettings(preset) {
for (const name of Object.keys(kai_settings)) {
const value = preset[name];
const slider = sliders.find(x => x.name === name);
if (value === undefined || !slider) {
continue;
}
const formattedValue = slider.format(value);
slider.setValue(preset[name]);
$(slider.sliderId).val(preset[name]);
$(slider.counterId).text(formattedValue);
}
// TODO: refactor checkboxes (if adding any more)
if (preset.hasOwnProperty('single_line')) {
kai_settings.single_line = preset.single_line;
$('#single_line').prop('checked', kai_settings.single_line);
}
}
const sliders = [
{
name: "temp",
sliderId: "#temp",
counterId: "#temp_counter",
format: (val) => Number(val).toFixed(2),
setValue: (val) => { kai_settings.temp = Number(val); },
},
{
name: "rep_pen",
sliderId: "#rep_pen",
counterId: "#rep_pen_counter",
format: (val) => Number(val).toFixed(2),
setValue: (val) => { kai_settings.rep_pen = Number(val); },
},
{
name: "rep_pen_range",
sliderId: "#rep_pen_range",
counterId: "#rep_pen_range_counter",
format: (val) => val + " Tokens",
setValue: (val) => { kai_settings.rep_pen_range = Number(val); },
},
{
name: "top_p",
sliderId: "#top_p",
counterId: "#top_p_counter",
format: (val) => val,
setValue: (val) => { kai_settings.top_p = Number(val); },
},
{
name: "top_a",
sliderId: "#top_a",
counterId: "#top_a_counter",
format: (val) => val,
setValue: (val) => { kai_settings.top_a = Number(val); },
},
{
name: "top_k",
sliderId: "#top_k",
counterId: "#top_k_counter",
format: (val) => val,
setValue: (val) => { kai_settings.top_k = Number(val); },
},
{
name: "typical",
sliderId: "#typical",
counterId: "#typical_counter",
format: (val) => val,
setValue: (val) => { kai_settings.typical = Number(val); },
},
{
name: "tfs",
sliderId: "#tfs",
counterId: "#tfs_counter",
format: (val) => val,
setValue: (val) => { kai_settings.tfs = Number(val); },
},
{
name: "rep_pen_slope",
sliderId: "#rep_pen_slope",
counterId: "#rep_pen_slope_counter",
format: (val) => val,
setValue: (val) => { kai_settings.rep_pen_slope = Number(val); },
},
];
$(document).ready(function () {
sliders.forEach(slider => {
$(document).on("input", slider.sliderId, function () {
const value = $(this).val();
const formattedValue = slider.format(value);
slider.setValue(value);
$(slider.counterId).html(formattedValue);
saveSettingsDebounced();
});
});
$('#single_line').on("input", function() {
const value = $(this).prop('checked');
kai_settings.single_line = value;
saveSettingsDebounced();
});
});