From 1ad0154f0f41ece40b96e78402b62eafb63a36ee Mon Sep 17 00:00:00 2001 From: Wolfsblvt Date: Wed, 25 Sep 2024 04:55:48 +0200 Subject: [PATCH 01/11] Fix classify not using extension-defined prompt --- public/scripts/extensions/expressions/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/scripts/extensions/expressions/index.js b/public/scripts/extensions/expressions/index.js index 00eb75a6f..71be1e422 100644 --- a/public/scripts/extensions/expressions/index.js +++ b/public/scripts/extensions/expressions/index.js @@ -1161,7 +1161,7 @@ export async function getExpressionLabel(text, expressionsApi = extension_settin } const expressionsList = await getExpressionsList(); - const prompt = substituteParamsExtended(String(customPrompt), { labels: expressionsList }) || await getLlmPrompt(expressionsList); + const prompt = substituteParamsExtended(customPrompt, { labels: expressionsList }) || await getLlmPrompt(expressionsList); let functionResult = null; eventSource.once(event_types.TEXT_COMPLETION_SETTINGS_READY, onTextGenSettingsReady); eventSource.once(event_types.LLM_FUNCTION_TOOL_REGISTER, onFunctionToolRegister); From 5a4e23f62f12d3b91d01d261d52a3e78abff8492 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:01:34 +0000 Subject: [PATCH 02/11] Fix Novel bias not displaying --- public/scripts/nai-settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/scripts/nai-settings.js b/public/scripts/nai-settings.js index cbe0934fa..e24353499 100644 --- a/public/scripts/nai-settings.js +++ b/public/scripts/nai-settings.js @@ -74,7 +74,7 @@ const samplers = { let novel_data = null; let badWordsCache = {}; -const BIAS_KEY = '#novel_api-settings'; +const BIAS_KEY = '#range_block_novel'; export function setNovelData(data) { novel_data = data; From d9a863810954097838d670b00b271007ce792cb8 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 25 Sep 2024 13:09:13 +0000 Subject: [PATCH 03/11] Don't silence migration errors + add backups Closes #2900 --- src/users.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/users.js b/src/users.js index 618641bab..7ef260ac0 100644 --- a/src/users.js +++ b/src/users.js @@ -347,6 +347,8 @@ async function migrateSystemPrompts() { if (fs.existsSync(migrateMarker)) { continue; } + const backupsPath = path.join(directory.backups, '_sysprompt'); + fs.mkdirSync(backupsPath, { recursive: true }); const defaultPrompts = await getDefaultSystemPrompts(); const instucts = fs.readdirSync(directory.instruct); let migratedPrompts = []; @@ -356,6 +358,8 @@ async function migrateSystemPrompts() { if (path.extname(instruct) === '.json' && !fs.existsSync(sysPromptPath)) { const instructData = JSON.parse(fs.readFileSync(instructPath, 'utf8')); if ('system_prompt' in instructData && 'name' in instructData) { + const backupPath = path.join(backupsPath, `${instructData.name}.json`); + fs.cpSync(instructPath, backupPath, { force: true }); const syspromptData = { name: instructData.name, content: instructData.system_prompt }; migratedPrompts.push(syspromptData); delete instructData.system_prompt; @@ -374,8 +378,8 @@ async function migrateSystemPrompts() { console.log(`Migrated system prompt ${sysPromptData.name} for ${directory.root.split(path.sep).pop()}`); } writeFileAtomicSync(migrateMarker, ''); - } catch { - // Ignore errors + } catch (error) { + console.error('Error migrating system prompts:', error); } } } From 17e279addfe4195d9c03b31453770a3fcee56d4f Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 25 Sep 2024 14:58:07 +0000 Subject: [PATCH 04/11] Fix sysprompts set with commands --- public/scripts/sysprompt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/scripts/sysprompt.js b/public/scripts/sysprompt.js index 5b1ef89bb..6d54f0220 100644 --- a/public/scripts/sysprompt.js +++ b/public/scripts/sysprompt.js @@ -143,7 +143,7 @@ function selectSystemPromptCallback(args, name) { foundName = result[0].item; } - $select.val(foundName).trigger('input'); + $select.val(foundName).trigger('change'); !quiet && toastr.success(`System prompt "${foundName}" selected`); return foundName; } From b01ae4e0ea4783ef13acfd1efc9f10e91752817f Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 25 Sep 2024 14:58:07 +0000 Subject: [PATCH 05/11] Fix sysprompts set with commands --- public/scripts/sysprompt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/scripts/sysprompt.js b/public/scripts/sysprompt.js index 5b1ef89bb..6d54f0220 100644 --- a/public/scripts/sysprompt.js +++ b/public/scripts/sysprompt.js @@ -143,7 +143,7 @@ function selectSystemPromptCallback(args, name) { foundName = result[0].item; } - $select.val(foundName).trigger('input'); + $select.val(foundName).trigger('change'); !quiet && toastr.success(`System prompt "${foundName}" selected`); return foundName; } From fbc590b6417500bfc626cd058f081006e97ef489 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 25 Sep 2024 16:02:45 +0000 Subject: [PATCH 06/11] Tabby: Unhide UI controls for XTC --- public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/index.html b/public/index.html index de3f399e4..9e53da59f 100644 --- a/public/index.html +++ b/public/index.html @@ -1310,7 +1310,7 @@ -
+

From 8344232fe59b2595e0a089bc3ee2550b48178ad2 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 25 Sep 2024 23:14:28 +0300 Subject: [PATCH 07/11] Add common punctuation to Erato stop strings that start with a newline #2894 --- public/scripts/nai-settings.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/public/scripts/nai-settings.js b/public/scripts/nai-settings.js index e24353499..f853957ee 100644 --- a/public/scripts/nai-settings.js +++ b/public/scripts/nai-settings.js @@ -492,11 +492,32 @@ function getBadWordPermutations(text) { export function getNovelGenerationData(finalPrompt, settings, maxLength, isImpersonate, isContinue, _cfgValues, type) { console.debug('NovelAI generation data for', type); + const isKayra = nai_settings.model_novel.includes('kayra'); + const isErato = nai_settings.model_novel.includes('erato'); const tokenizerType = getTokenizerTypeForModel(nai_settings.model_novel); + const stoppingStrings = getStoppingStrings(isImpersonate, isContinue); + + // Llama 3 tokenizer, huh? + if (isErato) { + const additionalStopStrings = []; + for (const stoppingString of stoppingStrings) { + if (stoppingString.startsWith('\n')) { + additionalStopStrings.push('.' + stoppingString); + additionalStopStrings.push('!' + stoppingString); + additionalStopStrings.push('?' + stoppingString); + additionalStopStrings.push('*' + stoppingString); + additionalStopStrings.push('"' + stoppingString); + additionalStopStrings.push('_' + stoppingString); + additionalStopStrings.push('...' + stoppingString); + additionalStopStrings.push(')' + stoppingString); + } + } + stoppingStrings.push(...additionalStopStrings); + } + const stopSequences = (tokenizerType !== tokenizers.NONE) - ? getStoppingStrings(isImpersonate, isContinue) - .map(t => getTextTokens(tokenizerType, t)) + ? stoppingStrings.map(t => getTextTokens(tokenizerType, t)) : undefined; const badWordIds = (tokenizerType !== tokenizers.NONE) @@ -515,8 +536,6 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper console.log(finalPrompt); } - const isKayra = nai_settings.model_novel.includes('kayra'); - const isErato = nai_settings.model_novel.includes('erato'); if (isErato) { finalPrompt = '<|startoftext|>' + finalPrompt; From c4462cc8bb2f4898a250dfa6d29d526668d073b6 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Thu, 26 Sep 2024 07:56:32 +0000 Subject: [PATCH 08/11] Add Erato preamble token --- public/script.js | 2 +- public/scripts/nai-settings.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/script.js b/public/script.js index 8bfbe5a64..0f7705b1e 100644 --- a/public/script.js +++ b/public/script.js @@ -4863,7 +4863,7 @@ export function getMaxContextSize(overrideResponseLength = null) { this_max_context = Math.min(max_context, 8192); // Added special tokens and whatnot - this_max_context -= 1; + this_max_context -= 10; } this_max_context = this_max_context - (overrideResponseLength || amount_gen); diff --git a/public/scripts/nai-settings.js b/public/scripts/nai-settings.js index f853957ee..224265056 100644 --- a/public/scripts/nai-settings.js +++ b/public/scripts/nai-settings.js @@ -538,7 +538,7 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper if (isErato) { - finalPrompt = '<|startoftext|>' + finalPrompt; + finalPrompt = '<|startoftext|><|reserved_special_token81|>' + finalPrompt; } const adjustedMaxLength = (isKayra || isErato) ? getKayraMaxResponseTokens() : maximum_output_length; From e6d5b5a8a1ce4f5f49fce4133ea5e5431f4f0ce2 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Thu, 26 Sep 2024 07:58:26 +0000 Subject: [PATCH 09/11] Limit NAI stop sequences count --- public/scripts/nai-settings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/scripts/nai-settings.js b/public/scripts/nai-settings.js index 224265056..ca3769f31 100644 --- a/public/scripts/nai-settings.js +++ b/public/scripts/nai-settings.js @@ -516,8 +516,9 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper stoppingStrings.push(...additionalStopStrings); } + const MAX_STOP_SEQUENCES = 1024; const stopSequences = (tokenizerType !== tokenizers.NONE) - ? stoppingStrings.map(t => getTextTokens(tokenizerType, t)) + ? stoppingStrings.slice(0, MAX_STOP_SEQUENCES).map(t => getTextTokens(tokenizerType, t)) : undefined; const badWordIds = (tokenizerType !== tokenizers.NONE) From 4c159dfb5024eb2be18a407e4f6a259be89a0fa1 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Thu, 26 Sep 2024 12:56:19 +0000 Subject: [PATCH 10/11] Hotfix: Chrome 129 wide popup sizing --- public/style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/style.css b/public/style.css index afbd231d0..dd716d0f6 100644 --- a/public/style.css +++ b/public/style.css @@ -3245,8 +3245,9 @@ grammarly-extension { } .wide_dialogue_popup { - aspect-ratio: 1 / 1; - width: unset !important; + /* FIXME: Chrome 129 broke max-height for aspect-ratio sized elements */ + /* aspect-ratio: 1 / 1; */ + /* width: unset !important; */ min-width: var(--sheldWidth); } From 3a03e1a6b2b98a9f6cc84557740914476d5eb8a5 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Thu, 26 Sep 2024 23:26:42 +0300 Subject: [PATCH 11/11] NovelAI: More newline stop string permutations --- public/scripts/nai-settings.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/scripts/nai-settings.js b/public/scripts/nai-settings.js index ca3769f31..fc4a042c5 100644 --- a/public/scripts/nai-settings.js +++ b/public/scripts/nai-settings.js @@ -510,6 +510,10 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper additionalStopStrings.push('"' + stoppingString); additionalStopStrings.push('_' + stoppingString); additionalStopStrings.push('...' + stoppingString); + additionalStopStrings.push('."' + stoppingString); + additionalStopStrings.push('?"' + stoppingString); + additionalStopStrings.push('!"' + stoppingString); + additionalStopStrings.push('.*' + stoppingString); additionalStopStrings.push(')' + stoppingString); } }