mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Migrate memory to settings.json
This commit is contained in:
@ -1,10 +1,9 @@
|
|||||||
import { getStringHash, debounce } from "../../utils.js";
|
import { getStringHash, debounce } from "../../utils.js";
|
||||||
import { getContext, getApiUrl } from "../../extensions.js";
|
import { getContext, getApiUrl, extension_settings } from "../../extensions.js";
|
||||||
import { extension_prompt_types } from "../../../script.js";
|
import { extension_prompt_types, saveSettingsDebounced } from "../../../script.js";
|
||||||
export { MODULE_NAME };
|
export { MODULE_NAME };
|
||||||
|
|
||||||
const MODULE_NAME = '1_memory';
|
const MODULE_NAME = '1_memory';
|
||||||
const SETTINGS_KEY = 'extensions_memory_settings';
|
|
||||||
const UPDATE_INTERVAL = 1000;
|
const UPDATE_INTERVAL = 1000;
|
||||||
|
|
||||||
let lastCharacterId = null;
|
let lastCharacterId = null;
|
||||||
@ -23,7 +22,7 @@ const defaultSettings = {
|
|||||||
longMemoryLength: 128,
|
longMemoryLength: 128,
|
||||||
shortMemoryLength: 512,
|
shortMemoryLength: 512,
|
||||||
minShortMemory: 128,
|
minShortMemory: 128,
|
||||||
maxShortMemory: 2048,
|
maxShortMemory: 1024,
|
||||||
shortMemoryStep: 16,
|
shortMemoryStep: 16,
|
||||||
longMemoryStep: 8,
|
longMemoryStep: 8,
|
||||||
repetitionPenaltyStep: 0.05,
|
repetitionPenaltyStep: 0.05,
|
||||||
@ -41,80 +40,83 @@ const defaultSettings = {
|
|||||||
memoryFrozen: false,
|
memoryFrozen: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const settings = {
|
// TODO Delete in next release
|
||||||
shortMemoryLength: defaultSettings.shortMemoryLength,
|
function migrateFromLocalStorage() {
|
||||||
longMemoryLength: defaultSettings.longMemoryLength,
|
const SETTINGS_KEY = 'extensions_memory_settings';
|
||||||
repetitionPenalty: defaultSettings.repetitionPenalty,
|
const settings = localStorage.getItem(SETTINGS_KEY);
|
||||||
temperature: defaultSettings.temperature,
|
|
||||||
lengthPenalty: defaultSettings.lengthPenalty,
|
|
||||||
memoryFrozen: defaultSettings.memoryFrozen,
|
|
||||||
}
|
|
||||||
|
|
||||||
function saveSettings() {
|
if (settings !== null) {
|
||||||
localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings));
|
const savedSettings = JSON.parse(settings);
|
||||||
|
Object.assign(extension_settings.memory, savedSettings);
|
||||||
|
localStorage.removeItem(SETTINGS_KEY);
|
||||||
|
saveSettingsDebounced();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadSettings() {
|
function loadSettings() {
|
||||||
const savedSettings = JSON.parse(localStorage.getItem(SETTINGS_KEY));
|
migrateFromLocalStorage();
|
||||||
Object.assign(settings, savedSettings ?? defaultSettings)
|
|
||||||
|
|
||||||
$('#memory_long_length').val(settings.longMemoryLength).trigger('input');
|
if (Object.keys(extension_settings.memory).length === 0) {
|
||||||
$('#memory_short_length').val(settings.shortMemoryLength).trigger('input');
|
Object.assign(extension_settings.memory, defaultSettings);
|
||||||
$('#memory_repetition_penalty').val(settings.repetitionPenalty).trigger('input');
|
}
|
||||||
$('#memory_temperature').val(settings.temperature).trigger('input');
|
|
||||||
$('#memory_length_penalty').val(settings.lengthPenalty).trigger('input');
|
$('#memory_long_length').val(extension_settings.memory.longMemoryLength).trigger('input');
|
||||||
$('#memory_frozen').prop('checked', settings.memoryFrozen).trigger('input');
|
$('#memory_short_length').val(extension_settings.memory.shortMemoryLength).trigger('input');
|
||||||
|
$('#memory_repetition_penalty').val(extension_settings.memory.repetitionPenalty).trigger('input');
|
||||||
|
$('#memory_temperature').val(extension_settings.memory.temperature).trigger('input');
|
||||||
|
$('#memory_length_penalty').val(extension_settings.memory.lengthPenalty).trigger('input');
|
||||||
|
$('#memory_frozen').prop('checked', extension_settings.memory.memoryFrozen).trigger('input');
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMemoryShortInput() {
|
function onMemoryShortInput() {
|
||||||
const value = $(this).val();
|
const value = $(this).val();
|
||||||
settings.shortMemoryLength = Number(value);
|
extension_settings.memory.shortMemoryLength = Number(value);
|
||||||
$('#memory_short_length_tokens').text(value);
|
$('#memory_short_length_tokens').text(value);
|
||||||
saveSettings();
|
saveSettingsDebounced();
|
||||||
|
|
||||||
// Don't let long buffer be bigger than short
|
// Don't let long buffer be bigger than short
|
||||||
if (settings.longMemoryLength > settings.shortMemoryLength) {
|
if (extension_settings.memory.longMemoryLength > extension_settings.memory.shortMemoryLength) {
|
||||||
$('#memory_long_length').val(settings.shortMemoryLength).trigger('input');
|
$('#memory_long_length').val(extension_settings.memory.shortMemoryLength).trigger('input');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMemoryLongInput() {
|
function onMemoryLongInput() {
|
||||||
const value = $(this).val();
|
const value = $(this).val();
|
||||||
settings.longMemoryLength = Number(value);
|
extension_settings.memory.longMemoryLength = Number(value);
|
||||||
$('#memory_long_length_tokens').text(value);
|
$('#memory_long_length_tokens').text(value);
|
||||||
saveSettings();
|
saveSettingsDebounced();
|
||||||
|
|
||||||
// Don't let long buffer be bigger than short
|
// Don't let long buffer be bigger than short
|
||||||
if (settings.longMemoryLength > settings.shortMemoryLength) {
|
if (extension_settings.memory.longMemoryLength > extension_settings.memory.shortMemoryLength) {
|
||||||
$('#memory_short_length').val(settings.longMemoryLength).trigger('input');
|
$('#memory_short_length').val(extension_settings.memory.longMemoryLength).trigger('input');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMemoryRepetitionPenaltyInput() {
|
function onMemoryRepetitionPenaltyInput() {
|
||||||
const value = $(this).val();
|
const value = $(this).val();
|
||||||
settings.repetitionPenalty = Number(value);
|
extension_settings.memory.repetitionPenalty = Number(value);
|
||||||
$('#memory_repetition_penalty_value').text(settings.repetitionPenalty.toFixed(2));
|
$('#memory_repetition_penalty_value').text(extension_settings.memory.repetitionPenalty.toFixed(2));
|
||||||
saveSettings();
|
saveSettingsDebounced();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMemoryTemperatureInput() {
|
function onMemoryTemperatureInput() {
|
||||||
const value = $(this).val();
|
const value = $(this).val();
|
||||||
settings.temperature = Number(value);
|
extension_settings.memory.temperature = Number(value);
|
||||||
$('#memory_temperature_value').text(settings.temperature.toFixed(2));
|
$('#memory_temperature_value').text(extension_settings.memory.temperature.toFixed(2));
|
||||||
saveSettings();
|
saveSettingsDebounced();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMemoryLengthPenaltyInput() {
|
function onMemoryLengthPenaltyInput() {
|
||||||
const value = $(this).val();
|
const value = $(this).val();
|
||||||
settings.lengthPenalty = Number(value);
|
extension_settings.memory.lengthPenalty = Number(value);
|
||||||
$('#memory_length_penalty_value').text(settings.lengthPenalty.toFixed(2));
|
$('#memory_length_penalty_value').text(extension_settings.memory.lengthPenalty.toFixed(2));
|
||||||
saveSettings();
|
saveSettingsDebounced();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMemoryFrozenInput() {
|
function onMemoryFrozenInput() {
|
||||||
const value = Boolean($(this).prop('checked'));
|
const value = Boolean($(this).prop('checked'));
|
||||||
settings.memoryFrozen = value;
|
extension_settings.memory.memoryFrozen = value;
|
||||||
saveSettings();
|
saveSettingsDebounced();
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveLastValues() {
|
function saveLastValues() {
|
||||||
@ -159,7 +161,7 @@ async function moduleWorker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Currently summarizing or frozen state - skip
|
// Currently summarizing or frozen state - skip
|
||||||
if (inApiCall || settings.memoryFrozen) {
|
if (inApiCall || extension_settings.memory.memoryFrozen) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,14 +223,14 @@ async function summarizeChat(context) {
|
|||||||
memoryBuffer.push(entry);
|
memoryBuffer.push(entry);
|
||||||
|
|
||||||
// check if token limit was reached
|
// check if token limit was reached
|
||||||
if (context.encode(getMemoryString()).length >= settings.shortMemoryLength) {
|
if (context.encode(getMemoryString()).length >= extension_settings.memory.shortMemoryLength) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const resultingString = getMemoryString();
|
const resultingString = getMemoryString();
|
||||||
|
|
||||||
if (context.encode(resultingString).length < settings.shortMemoryLength) {
|
if (context.encode(resultingString).length < extension_settings.memory.shortMemoryLength) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,11 +249,11 @@ async function summarizeChat(context) {
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
text: resultingString,
|
text: resultingString,
|
||||||
params: {
|
params: {
|
||||||
min_length: settings.longMemoryLength * 0.8,
|
min_length: extension_settings.memory.longMemoryLength * 0.8,
|
||||||
max_length: settings.longMemoryLength,
|
max_length: extension_settings.memory.longMemoryLength,
|
||||||
repetition_penalty: settings.repetitionPenalty,
|
repetition_penalty: extension_settings.memory.repetitionPenalty,
|
||||||
temperature: settings.temperature,
|
temperature: extension_settings.memory.temperature,
|
||||||
length_penalty: settings.lengthPenalty,
|
length_penalty: extension_settings.memory.lengthPenalty,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user