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
493export function getNovelGenerationData(finalPrompt, settings, maxLength, isImpersonate, isContinue, _cfgValues, type) {493export function getNovelGenerationData(finalPrompt, settings, maxLength, isImpersonate, isContinue, _cfgValues, type) {
494 console.debug('NovelAI generation data for', type);494 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
496 const tokenizerType = getTokenizerTypeForModel(nai_settings.model_novel);498 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
497 const stopSequences = (tokenizerType !== tokenizers.NONE)519 const stopSequences = (tokenizerType !== tokenizers.NONE)
498 ? getStoppingStrings(isImpersonate, isContinue)520 ? stoppingStrings.map(t => getTextTokens(tokenizerType, t))
499 .map(t => getTextTokens(tokenizerType, t))
500 : undefined;521 : undefined;
501522
502 const badWordIds = (tokenizerType !== tokenizers.NONE)523 const badWordIds = (tokenizerType !== tokenizers.NONE)
@@ -515,8 +536,6 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper
515 console.log(finalPrompt);536 console.log(finalPrompt);
516 }537 }
517538
518 const isKayra = nai_settings.model_novel.includes('kayra');
519 const isErato = nai_settings.model_novel.includes('erato');
520539
521 if (isErato) {540 if (isErato) {
522 finalPrompt = '<|startoftext|>' + finalPrompt;541 finalPrompt = '<|startoftext|>' + finalPrompt;