mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Update auto summary interval calculation algorithms
This commit is contained in:
@@ -137,14 +137,17 @@ async function onPromptForceWordsAutoClick() {
|
|||||||
// How many words will be needed to fit the allowance buffer
|
// How many words will be needed to fit the allowance buffer
|
||||||
const summaryPromptWords = extractAllWords(extension_settings.memory.prompt).length;
|
const summaryPromptWords = extractAllWords(extension_settings.memory.prompt).length;
|
||||||
const promptAllowanceWords = maxPromptLengthWords - extension_settings.memory.promptWords - summaryPromptWords;
|
const promptAllowanceWords = maxPromptLengthWords - extension_settings.memory.promptWords - summaryPromptWords;
|
||||||
|
const averageMessagesPerPrompt = Math.floor(promptAllowanceWords / averageMessageWordCount);
|
||||||
const maxMessagesPerSummary = extension_settings.memory.maxMessagesPerRequest || 0;
|
const maxMessagesPerSummary = extension_settings.memory.maxMessagesPerRequest || 0;
|
||||||
const additionalWords = maxMessagesPerSummary > 0 ? Math.floor(averageMessageWordCount * maxMessagesPerSummary) : Math.max(0, promptAllowanceWords);
|
const targetMessagesInPrompt = maxMessagesPerSummary > 0 ? maxMessagesPerSummary : Math.max(0, averageMessagesPerPrompt);
|
||||||
const targetSummaryWords = Math.round((wordsPerPrompt / 2) + additionalWords);
|
const targetSummaryWords = (targetMessagesInPrompt * averageMessageWordCount) + (promptAllowanceWords / 4);
|
||||||
|
|
||||||
console.table({
|
console.table({
|
||||||
maxPromptLength,
|
maxPromptLength,
|
||||||
maxPromptLengthWords,
|
maxPromptLengthWords,
|
||||||
promptAllowanceWords,
|
promptAllowanceWords,
|
||||||
|
averageMessagesPerPrompt,
|
||||||
|
targetMessagesInPrompt,
|
||||||
targetSummaryWords,
|
targetSummaryWords,
|
||||||
wordsPerPrompt,
|
wordsPerPrompt,
|
||||||
wordsPerToken,
|
wordsPerToken,
|
||||||
@@ -171,8 +174,8 @@ async function onPromptIntervalAutoClick() {
|
|||||||
const promptAllowance = maxPromptLength - promptTokens - targetSummaryTokens;
|
const promptAllowance = maxPromptLength - promptTokens - targetSummaryTokens;
|
||||||
const maxMessagesPerSummary = extension_settings.memory.maxMessagesPerRequest || 0;
|
const maxMessagesPerSummary = extension_settings.memory.maxMessagesPerRequest || 0;
|
||||||
const averageMessagesPerPrompt = Math.floor(promptAllowance / averageMessageTokenCount);
|
const averageMessagesPerPrompt = Math.floor(promptAllowance / averageMessageTokenCount);
|
||||||
const unfitMessages = maxMessagesPerSummary > 0 ? averageMessagesPerPrompt - maxMessagesPerSummary : 0;
|
const targetMessagesInPrompt = maxMessagesPerSummary > 0 ? maxMessagesPerSummary : Math.max(0, averageMessagesPerPrompt);
|
||||||
const adjustedAverageMessagesPerPrompt = Math.max(1, averageMessagesPerPrompt - (unfitMessages > 0 ? Math.ceil(unfitMessages / 2) : 0));
|
const adjustedAverageMessagesPerPrompt = targetMessagesInPrompt + (averageMessagesPerPrompt - targetMessagesInPrompt) / 4;
|
||||||
|
|
||||||
console.table({
|
console.table({
|
||||||
maxPromptLength,
|
maxPromptLength,
|
||||||
@@ -184,9 +187,9 @@ async function onPromptIntervalAutoClick() {
|
|||||||
tokensPerWord,
|
tokensPerWord,
|
||||||
averageMessageTokenCount,
|
averageMessageTokenCount,
|
||||||
averageMessagesPerPrompt,
|
averageMessagesPerPrompt,
|
||||||
|
targetMessagesInPrompt,
|
||||||
adjustedAverageMessagesPerPrompt,
|
adjustedAverageMessagesPerPrompt,
|
||||||
maxMessagesPerSummary,
|
maxMessagesPerSummary,
|
||||||
unfitMessages,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const ROUNDING = 5;
|
const ROUNDING = 5;
|
||||||
|
Reference in New Issue
Block a user