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