Add common punctuation to Erato stop strings that start with a newline #2894

8344232fe59b2595e0a089bc3ee2550b48178ad2

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +23 -4Showing whitespace changes
public/scripts/nai-settings.js+23 -4
@@ -492,11 +492,32 @@ function getBadWordPermutations(text) {
492492
493493export function getNovelGenerationData(finalPrompt, settings, maxLength, isImpersonate, isContinue, _cfgValues, type) {
494494 console.debug('NovelAI generation data for', type);
495+ const isKayra = nai_settings.model_novel.includes('kayra');
496+ const isErato = nai_settings.model_novel.includes('erato');
495497
496498 const tokenizerType = getTokenizerTypeForModel(nai_settings.model_novel);
499+ const stoppingStrings = getStoppingStrings(isImpersonate, isContinue);
500+
501+ // Llama 3 tokenizer, huh?
502+ if (isErato) {
503+ const additionalStopStrings = [];
504+ for (const stoppingString of stoppingStrings) {
505+ if (stoppingString.startsWith('\n')) {
506+ additionalStopStrings.push('.' + stoppingString);
507+ additionalStopStrings.push('!' + stoppingString);
508+ additionalStopStrings.push('?' + stoppingString);
509+ additionalStopStrings.push('*' + stoppingString);
510+ additionalStopStrings.push('"' + stoppingString);
511+ additionalStopStrings.push('_' + stoppingString);
512+ additionalStopStrings.push('...' + stoppingString);
513+ additionalStopStrings.push(')' + stoppingString);
514+ }
515+ }
516+ stoppingStrings.push(...additionalStopStrings);
517+ }
518+
497519 const stopSequences = (tokenizerType !== tokenizers.NONE)
498- ? getStoppingStrings(isImpersonate, isContinue)
520+ ? stoppingStrings.map(t => getTextTokens(tokenizerType, t))
499- .map(t => getTextTokens(tokenizerType, t))
500521 : undefined;
501522
502523 const badWordIds = (tokenizerType !== tokenizers.NONE)
@@ -515,8 +536,6 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper
515536 console.log(finalPrompt);
516537 }
517538
518- const isKayra = nai_settings.model_novel.includes('kayra');
519- const isErato = nai_settings.model_novel.includes('erato');
520539
521540 if (isErato) {
522541 finalPrompt = '<|startoftext|>' + finalPrompt;