Remove CFG for Novel, fix logitbias and text adventure bans for Erato

26f4d1a4ada3e82dba3461003a4de20db13f7baf

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

22 files changed, +51 -96Ignore whitespace
default/content/presets/novel/Asper-Kayra.json+0 -1
@@ -14,7 +14,6 @@
14 "use_cache": false,14 "use_cache": false,
15 "return_full_text": false,15 "return_full_text": false,
16 "prefix": "vanilla",16 "prefix": "vanilla",
17 "cfg_scale": 1,
18 "phrase_rep_pen": "medium",17 "phrase_rep_pen": "medium",
19 "max_context": 7800,18 "max_context": 7800,
20 "min_p": 0,19 "min_p": 0,
default/content/presets/novel/Blended-Coffee-Kayra.json+1 -2
@@ -1,5 +1,5 @@
1{1{
2 "order": [6, 0, 1, 2, 3],2 "order": [0, 1, 2, 3],
3 "temperature": 1,3 "temperature": 1,
4 "max_length": 150,4 "max_length": 150,
5 "min_length": 1,5 "min_length": 1,
@@ -14,7 +14,6 @@
14 "return_full_text": false,14 "return_full_text": false,
15 "prefix": "vanilla",15 "prefix": "vanilla",
16 "phrase_rep_pen": "medium",16 "phrase_rep_pen": "medium",
17 "cfg_scale": 1.55,
18 "max_context": 7800,17 "max_context": 7800,
19 "min_p": 0,18 "min_p": 0,
20 "math1_temp": 1,19 "math1_temp": 1,
default/content/presets/novel/Blook-Kayra.json+1 -2
@@ -1,5 +1,5 @@
1{1{
2 "order": [6, 2, 3, 1, 0],2 "order": [2, 3, 1, 0],
3 "temperature": 1,3 "temperature": 1,
4 "max_length": 150,4 "max_length": 150,
5 "min_length": 1,5 "min_length": 1,
@@ -15,7 +15,6 @@
15 "return_full_text": false,15 "return_full_text": false,
16 "prefix": "vanilla",16 "prefix": "vanilla",
17 "phrase_rep_pen": "very_aggressive",17 "phrase_rep_pen": "very_aggressive",
18 "cfg_scale": 1.3,
19 "max_context": 7800,18 "max_context": 7800,
20 "min_p": 0,19 "min_p": 0,
21 "math1_temp": 1,20 "math1_temp": 1,
default/content/presets/novel/Carefree-Kayra.json+0 -1
@@ -15,7 +15,6 @@
15 "use_cache": false,15 "use_cache": false,
16 "return_full_text": false,16 "return_full_text": false,
17 "prefix": "vanilla",17 "prefix": "vanilla",
18 "cfg_scale": 1,
19 "phrase_rep_pen": "aggressive",18 "phrase_rep_pen": "aggressive",
20 "max_context": 7800,19 "max_context": 7800,
21 "min_p": 0,20 "min_p": 0,
default/content/presets/novel/CosmicCube-Kayra.json+1 -2
@@ -1,5 +1,5 @@
1{1{
2 "order": [8, 6, 5, 0, 3],2 "order": [8, 5, 0, 3],
3 "temperature": 0.9,3 "temperature": 0.9,
4 "max_length": 150,4 "max_length": 150,
5 "min_length": 1,5 "min_length": 1,
@@ -15,7 +15,6 @@
15 "return_full_text": false,15 "return_full_text": false,
16 "prefix": "vanilla",16 "prefix": "vanilla",
17 "phrase_rep_pen": "off",17 "phrase_rep_pen": "off",
18 "cfg_scale": 1.48,
19 "max_context": 7800,18 "max_context": 7800,
20 "min_p": 0,19 "min_p": 0,
21 "math1_temp": 1,20 "math1_temp": 1,
default/content/presets/novel/Edgewise-Clio.json+0 -1
@@ -15,7 +15,6 @@
15 "use_cache": false,15 "use_cache": false,
16 "return_full_text": false,16 "return_full_text": false,
17 "prefix": "vanilla",17 "prefix": "vanilla",
18 "cfg_scale": 1,
19 "phrase_rep_pen": "very_light",18 "phrase_rep_pen": "very_light",
20 "max_context": 7800,19 "max_context": 7800,
21 "min_p": 0,20 "min_p": 0,
default/content/presets/novel/Fresh-Coffee-Clio.json+0 -1
@@ -16,7 +16,6 @@
16 "use_cache": false,16 "use_cache": false,
17 "return_full_text": false,17 "return_full_text": false,
18 "prefix": "vanilla",18 "prefix": "vanilla",
19 "cfg_scale": 1,
20 "phrase_rep_pen": "very_light",19 "phrase_rep_pen": "very_light",
21 "max_context": 7800,20 "max_context": 7800,
22 "min_p": 0,21 "min_p": 0,
default/content/presets/novel/Fresh-Coffee-Kayra.json+0 -1
@@ -14,7 +14,6 @@
14 "use_cache": false,14 "use_cache": false,
15 "return_full_text": false,15 "return_full_text": false,
16 "prefix": "vanilla",16 "prefix": "vanilla",
17 "cfg_scale": 1,
18 "phrase_rep_pen": "off",17 "phrase_rep_pen": "off",
19 "max_context": 7800,18 "max_context": 7800,
20 "min_p": 0,19 "min_p": 0,
default/content/presets/novel/Green-Active-Writer-Kayra.json+1 -2
@@ -1,5 +1,5 @@
1{1{
2 "order": [6, 0, 8, 5, 3],2 "order": [0, 8, 5, 3],
3 "temperature": 1.5,3 "temperature": 1.5,
4 "max_length": 150,4 "max_length": 150,
5 "min_length": 1,5 "min_length": 1,
@@ -15,7 +15,6 @@
15 "return_full_text": false,15 "return_full_text": false,
16 "prefix": "vanilla",16 "prefix": "vanilla",
17 "phrase_rep_pen": "very_aggressive",17 "phrase_rep_pen": "very_aggressive",
18 "cfg_scale": 1.4,
19 "max_context": 7800,18 "max_context": 7800,
20 "min_p": 0,19 "min_p": 0,
21 "math1_temp": 1,20 "math1_temp": 1,
default/content/presets/novel/Keelback-Clio.json+0 -1
@@ -16,7 +16,6 @@
16 "use_cache": false,16 "use_cache": false,
17 "return_full_text": false,17 "return_full_text": false,
18 "prefix": "vanilla",18 "prefix": "vanilla",
19 "cfg_scale": 1,
20 "phrase_rep_pen": "very_light",19 "phrase_rep_pen": "very_light",
21 "max_context": 7800,20 "max_context": 7800,
22 "min_p": 0,21 "min_p": 0,
default/content/presets/novel/Long-Press-Clio.json+0 -1
@@ -16,7 +16,6 @@
16 "use_cache": false,16 "use_cache": false,
17 "return_full_text": false,17 "return_full_text": false,
18 "prefix": "vanilla",18 "prefix": "vanilla",
19 "cfg_scale": 1,
20 "phrase_rep_pen": "very_light",19 "phrase_rep_pen": "very_light",
21 "max_context": 7800,20 "max_context": 7800,
22 "min_p": 0,21 "min_p": 0,
default/content/presets/novel/Pilotfish-Kayra.json+1 -2
@@ -1,5 +1,5 @@
1{1{
2 "order": [6, 0, 4, 1, 2, 5, 3],2 "order": [0, 4, 1, 2, 5, 3],
3 "temperature": 1.31,3 "temperature": 1.31,
4 "max_length": 150,4 "max_length": 150,
5 "min_length": 1,5 "min_length": 1,
@@ -17,7 +17,6 @@
17 "return_full_text": false,17 "return_full_text": false,
18 "prefix": "vanilla",18 "prefix": "vanilla",
19 "phrase_rep_pen": "medium",19 "phrase_rep_pen": "medium",
20 "cfg_scale": 1.35,
21 "max_context": 7800,20 "max_context": 7800,
22 "min_p": 0,21 "min_p": 0,
23 "math1_temp": 1,22 "math1_temp": 1,
default/content/presets/novel/Pro_Writer-Kayra.json+0 -1
@@ -15,7 +15,6 @@
15 "return_full_text": false,15 "return_full_text": false,
16 "prefix": "vanilla",16 "prefix": "vanilla",
17 "phrase_rep_pen": "medium",17 "phrase_rep_pen": "medium",
18 "cfg_scale": 1.0,
19 "max_context": 7800,18 "max_context": 7800,
20 "min_p": 0,19 "min_p": 0,
21 "math1_temp": 1,20 "math1_temp": 1,
default/content/presets/novel/Talker-Chat-Clio.json+0 -1
@@ -16,7 +16,6 @@
16 "use_cache": false,16 "use_cache": false,
17 "return_full_text": false,17 "return_full_text": false,
18 "prefix": "vanilla",18 "prefix": "vanilla",
19 "cfg_scale": 1,
20 "phrase_rep_pen": "very_light",19 "phrase_rep_pen": "very_light",
21 "max_context": 7800,20 "max_context": 7800,
22 "min_p": 0,21 "min_p": 0,
default/content/presets/novel/Tea_Time-Kayra.json+0 -1
@@ -14,7 +14,6 @@
14 "return_full_text": false,14 "return_full_text": false,
15 "prefix": "vanilla",15 "prefix": "vanilla",
16 "phrase_rep_pen": "aggressive",16 "phrase_rep_pen": "aggressive",
17 "cfg_scale": 1.0,
18 "max_context": 7800,17 "max_context": 7800,
19 "min_p": 0,18 "min_p": 0,
20 "math1_temp": 1,19 "math1_temp": 1,
default/content/presets/novel/Tesseract-Kayra.json+1 -2
@@ -1,5 +1,5 @@
1{1{
2 "order": [6, 0, 5],2 "order": [0, 5],
3 "temperature": 0.895,3 "temperature": 0.895,
4 "max_length": 150,4 "max_length": 150,
5 "min_length": 1,5 "min_length": 1,
@@ -13,7 +13,6 @@
13 "return_full_text": false,13 "return_full_text": false,
14 "prefix": "vanilla",14 "prefix": "vanilla",
15 "phrase_rep_pen": "aggressive",15 "phrase_rep_pen": "aggressive",
16 "cfg_scale": 1.3,
17 "max_context": 7800,16 "max_context": 7800,
18 "min_p": 0,17 "min_p": 0,
19 "math1_temp": 1,18 "math1_temp": 1,
default/content/presets/novel/Universal-Erato.json+0 -2
@@ -16,14 +16,12 @@
16 "math1_quad_entropy_scale": 0,16 "math1_quad_entropy_scale": 0,
17 "min_length": 1,17 "min_length": 1,
18 "prefix": "vanilla",18 "prefix": "vanilla",
19 "cfg_uc": "",
20 "banned_tokens": "",19 "banned_tokens": "",
21 "order": [20 "order": [
22 0,21 0,
23 1022 10
24 ],23 ],
25 "phrase_rep_pen": "off",24 "phrase_rep_pen": "off",
26 "cfg_scale": 1,
27 "mirostat_lr": 0,25 "mirostat_lr": 0,
28 "mirostat_tau": 026 "mirostat_tau": 0
29}27}
default/content/presets/novel/Vingt-Un-Clio.json+0 -1
@@ -16,7 +16,6 @@
16 "use_cache": false,16 "use_cache": false,
17 "return_full_text": false,17 "return_full_text": false,
18 "prefix": "vanilla",18 "prefix": "vanilla",
19 "cfg_scale": 1,
20 "phrase_rep_pen": "very_light",19 "phrase_rep_pen": "very_light",
21 "max_context": 7800,20 "max_context": 7800,
22 "min_p": 0,21 "min_p": 0,
default/content/settings.json+0 -1
@@ -417,7 +417,6 @@
417 "preset_settings_novel": "Talker-Chat-Clio",417 "preset_settings_novel": "Talker-Chat-Clio",
418 "streaming_novel": true,418 "streaming_novel": true,
419 "preamble": "[ Style: chat, complex, sensory, visceral ]",419 "preamble": "[ Style: chat, complex, sensory, visceral ]",
420 "cfg_uc": "",
421 "banned_tokens": "",420 "banned_tokens": "",
422 "order": [421 "order": [
423 1,422 1,
public/index.html+1 -32
@@ -532,32 +532,6 @@
532 <div class="logit_bias_list"></div>532 <div class="logit_bias_list"></div>
533 </div>533 </div>
534 </div>534 </div>
535 <div class="range-block">
536 <hr>
537 <div class="range-block-title justifyLeft" data-i18n="CFG Scale">
538 CFG Scale
539 </div>
540 <div class="range-block-range-and-counter">
541 <div class="range-block-range">
542 <input type="range" id="cfg_scale_novel" name="volume" min="1" max="3" step="0.05">
543 </div>
544 <div class="range-block-counter">
545 <input type="number" min="1" max="3" step="0.05" data-for="cfg_scale_novel" id="cfg_scale_counter_novel">
546 </div>
547 </div>
548 </div>
549 <div class="range-block">
550 <div class="range-block-title justifyLeft">
551 <span data-i18n="Negative Prompt">Negative Prompt</span>
552 </div>
553 <div class="wide100p">
554 <textarea id="nai_cfg_uc" class="text_pole textarea_compact" name="cfg_uc" rows="2" data-i18n="[placeholder]Add text here that would make the AI generate things you don't want in your outputs." placeholder="Add text here that would make the AI generate things you don't want in your outputs."></textarea>
555 </div>
556 <small class="margin-bot-10px" data-i18n="Used if CFG Scale is unset globally, per chat or character">
557 Used if CFG Scale is unset globally, per chat or character
558 </small>
559 <hr>
560 </div>
561 </div>535 </div>
562 <div id="range_block_openai">536 <div id="range_block_openai">
563 <div class="range-block">537 <div class="range-block">
@@ -1154,12 +1128,7 @@
1154 <small>5</small>1128 <small>5</small>
1155 <div class="toggle_button right_menu_button"></div>1129 <div class="toggle_button right_menu_button"></div>
1156 </div>1130 </div>
1157 <div data-id="6">1131 <!-- 6 and 7 were removed samplers. -->
1158 <span data-i18n="CFG">CFG</span>
1159 <small>6</small>
1160 <div class="toggle_button right_menu_button"></div>
1161 </div>
1162 <!-- Yes, there is no 7. It was a removed Top G sampling. RIP. -->
1163 <div data-id="8">1132 <div data-id="8">
1164 <span data-i18n="Mirostat">Mirostat</span>1133 <span data-i18n="Mirostat">Mirostat</span>
1165 <small>8</small>1134 <small>8</small>
public/scripts/nai-settings.js+1 -26
@@ -49,7 +49,6 @@ export const nai_settings = {
49 streaming_novel: false,49 streaming_novel: false,
50 preamble: default_preamble,50 preamble: default_preamble,
51 prefix: '',51 prefix: '',
52 cfg_uc: '',
53 banned_tokens: '',52 banned_tokens: '',
54 order: default_order,53 order: default_order,
55 logit_bias: [],54 logit_bias: [],
@@ -146,12 +145,10 @@ export function loadNovelPreset(preset) {
146 nai_settings.top_a = preset.top_a;145 nai_settings.top_a = preset.top_a;
147 nai_settings.typical_p = preset.typical_p;146 nai_settings.typical_p = preset.typical_p;
148 nai_settings.min_length = preset.min_length;147 nai_settings.min_length = preset.min_length;
149 nai_settings.cfg_scale = preset.cfg_scale;
150 nai_settings.phrase_rep_pen = preset.phrase_rep_pen;148 nai_settings.phrase_rep_pen = preset.phrase_rep_pen;
151 nai_settings.mirostat_lr = preset.mirostat_lr;149 nai_settings.mirostat_lr = preset.mirostat_lr;
152 nai_settings.mirostat_tau = preset.mirostat_tau;150 nai_settings.mirostat_tau = preset.mirostat_tau;
153 nai_settings.prefix = preset.prefix;151 nai_settings.prefix = preset.prefix;
154 nai_settings.cfg_uc = preset.cfg_uc || '';
155 nai_settings.banned_tokens = preset.banned_tokens || '';152 nai_settings.banned_tokens = preset.banned_tokens || '';
156 nai_settings.order = preset.order || default_order;153 nai_settings.order = preset.order || default_order;
157 nai_settings.logit_bias = preset.logit_bias || [];154 nai_settings.logit_bias = preset.logit_bias || [];
@@ -187,13 +184,11 @@ export function loadNovelSettings(settings) {
187 nai_settings.typical_p = settings.typical_p;184 nai_settings.typical_p = settings.typical_p;
188 nai_settings.min_length = settings.min_length;185 nai_settings.min_length = settings.min_length;
189 nai_settings.phrase_rep_pen = settings.phrase_rep_pen;186 nai_settings.phrase_rep_pen = settings.phrase_rep_pen;
190 nai_settings.cfg_scale = settings.cfg_scale;
191 nai_settings.mirostat_lr = settings.mirostat_lr;187 nai_settings.mirostat_lr = settings.mirostat_lr;
192 nai_settings.mirostat_tau = settings.mirostat_tau;188 nai_settings.mirostat_tau = settings.mirostat_tau;
193 nai_settings.streaming_novel = !!settings.streaming_novel;189 nai_settings.streaming_novel = !!settings.streaming_novel;
194 nai_settings.preamble = settings.preamble || default_preamble;190 nai_settings.preamble = settings.preamble || default_preamble;
195 nai_settings.prefix = settings.prefix;191 nai_settings.prefix = settings.prefix;
196 nai_settings.cfg_uc = settings.cfg_uc || '';
197 nai_settings.banned_tokens = settings.banned_tokens || '';192 nai_settings.banned_tokens = settings.banned_tokens || '';
198 nai_settings.order = settings.order || default_order;193 nai_settings.order = settings.order || default_order;
199 nai_settings.logit_bias = settings.logit_bias || [];194 nai_settings.logit_bias = settings.logit_bias || [];
@@ -227,8 +222,6 @@ function loadNovelSettingsUi(ui_settings) {
227 $('#top_a_counter_novel').val(Number(ui_settings.top_a).toFixed(3));222 $('#top_a_counter_novel').val(Number(ui_settings.top_a).toFixed(3));
228 $('#typical_p_novel').val(ui_settings.typical_p);223 $('#typical_p_novel').val(ui_settings.typical_p);
229 $('#typical_p_counter_novel').val(Number(ui_settings.typical_p).toFixed(3));224 $('#typical_p_counter_novel').val(Number(ui_settings.typical_p).toFixed(3));
230 $('#cfg_scale_novel').val(ui_settings.cfg_scale);
231 $('#cfg_scale_counter_novel').val(Number(ui_settings.cfg_scale).toFixed(2));
232 $('#phrase_rep_pen_novel').val(ui_settings.phrase_rep_pen || 'off');225 $('#phrase_rep_pen_novel').val(ui_settings.phrase_rep_pen || 'off');
233 $('#mirostat_lr_novel').val(ui_settings.mirostat_lr);226 $('#mirostat_lr_novel').val(ui_settings.mirostat_lr);
234 $('#mirostat_lr_counter_novel').val(Number(ui_settings.mirostat_lr).toFixed(2));227 $('#mirostat_lr_counter_novel').val(Number(ui_settings.mirostat_lr).toFixed(2));
@@ -238,7 +231,6 @@ function loadNovelSettingsUi(ui_settings) {
238 $('#min_length_counter_novel').val(Number(ui_settings.min_length).toFixed(0));231 $('#min_length_counter_novel').val(Number(ui_settings.min_length).toFixed(0));
239 $('#nai_preamble_textarea').val(ui_settings.preamble);232 $('#nai_preamble_textarea').val(ui_settings.preamble);
240 $('#nai_prefix').val(ui_settings.prefix || 'vanilla');233 $('#nai_prefix').val(ui_settings.prefix || 'vanilla');
241 $('#nai_cfg_uc').val(ui_settings.cfg_uc || '');
242 $('#nai_banned_tokens').val(ui_settings.banned_tokens || '');234 $('#nai_banned_tokens').val(ui_settings.banned_tokens || '');
243 $('#min_p_novel').val(ui_settings.min_p);235 $('#min_p_novel').val(ui_settings.min_p);
244 $('#min_p_counter_novel').val(Number(ui_settings.min_p).toFixed(3));236 $('#min_p_counter_novel').val(Number(ui_settings.min_p).toFixed(3));
@@ -334,24 +326,12 @@ const sliders = [
334 setValue: (val) => { nai_settings.mirostat_lr = Number(val).toFixed(2); },326 setValue: (val) => { nai_settings.mirostat_lr = Number(val).toFixed(2); },
335 },327 },
336 {328 {
337 sliderId: '#cfg_scale_novel',
338 counterId: '#cfg_scale_counter_novel',
339 format: (val) => `${val}`,
340 setValue: (val) => { nai_settings.cfg_scale = Number(val).toFixed(2); },
341 },
342 {
343 sliderId: '#min_length_novel',329 sliderId: '#min_length_novel',
344 counterId: '#min_length_counter_novel',330 counterId: '#min_length_counter_novel',
345 format: (val) => `${val}`,331 format: (val) => `${val}`,
346 setValue: (val) => { nai_settings.min_length = Number(val).toFixed(0); },332 setValue: (val) => { nai_settings.min_length = Number(val).toFixed(0); },
347 },333 },
348 {334 {
349 sliderId: '#nai_cfg_uc',
350 counterId: '#nai_cfg_uc_counter',
351 format: (val) => val,
352 setValue: (val) => { nai_settings.cfg_uc = val; },
353 },
354 {
355 sliderId: '#nai_banned_tokens',335 sliderId: '#nai_banned_tokens',
356 counterId: '#nai_banned_tokens_counter',336 counterId: '#nai_banned_tokens_counter',
357 format: (val) => val,337 format: (val) => val,
@@ -468,11 +448,8 @@ function getBadWordPermutations(text) {
468 return result.filter(onlyUnique);448 return result.filter(onlyUnique);
469}449}
470450
471export function getNovelGenerationData(finalPrompt, settings, maxLength, isImpersonate, isContinue, cfgValues, type) {451export function getNovelGenerationData(finalPrompt, settings, maxLength, isImpersonate, isContinue, _cfgValues, type) {
472 console.debug('NovelAI generation data for', type);452 console.debug('NovelAI generation data for', type);
473 if (cfgValues && cfgValues.guidanceScale && cfgValues.guidanceScale?.value !== 1) {
474 cfgValues.negativePrompt = (getCfgPrompt(cfgValues.guidanceScale, true))?.value;
475 }
476453
477 const tokenizerType = getTokenizerTypeForModel(nai_settings.model_novel);454 const tokenizerType = getTokenizerTypeForModel(nai_settings.model_novel);
478 const stopSequences = (tokenizerType !== tokenizers.NONE)455 const stopSequences = (tokenizerType !== tokenizers.NONE)
@@ -528,8 +505,6 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper
528 'typical_p': Number(nai_settings.typical_p),505 'typical_p': Number(nai_settings.typical_p),
529 'mirostat_lr': Number(nai_settings.mirostat_lr),506 'mirostat_lr': Number(nai_settings.mirostat_lr),
530 'mirostat_tau': Number(nai_settings.mirostat_tau),507 'mirostat_tau': Number(nai_settings.mirostat_tau),
531 'cfg_scale': cfgValues?.guidanceScale?.value ?? Number(nai_settings.cfg_scale),
532 'cfg_uc': cfgValues?.negativePrompt ?? substituteParams(nai_settings.cfg_uc) ?? '',
533 'phrase_rep_pen': nai_settings.phrase_rep_pen,508 'phrase_rep_pen': nai_settings.phrase_rep_pen,
534 'stop_sequences': stopSequences,509 'stop_sequences': stopSequences,
535 'bad_words_ids': badWordIds,510 'bad_words_ids': badWordIds,
src/endpoints/novelai.js+43 -12
@@ -48,6 +48,11 @@ const logitBiasExp = [
48 { 'sequence': [21], 'bias': -0.08, 'ensure_sequence_finish': false, 'generate_once': false },48 { 'sequence': [21], 'bias': -0.08, 'ensure_sequence_finish': false, 'generate_once': false },
49];49];
5050
51const eratoLogitBiasExp = [
52 { 'sequence': [12488], 'bias': -0.08, 'ensure_sequence_finish': false, 'generate_once': false },
53 { 'sequence': [128041], 'bias': -0.08, 'ensure_sequence_finish': false, 'generate_once': false },
54];
55
51function getBadWordsList(model) {56function getBadWordsList(model) {
52 let list = [];57 let list = [];
5358
@@ -63,6 +68,28 @@ function getBadWordsList(model) {
63 return list.slice();68 return list.slice();
64}69}
6570
71function getLogitBiasList(model) {
72 let list = [];
73
74 if (model.includes('erato')) {
75 list = eratoLogitBiasExp;
76 }
77
78 if (model.includes('clio') || model.includes('kayra')) {
79 list = logitBiasExp;
80 }
81
82 return list.slice();
83}
84
85function getRepPenaltyWhitelist(model) {
86 if (model.includes('clio') || model.includes('kayra')) {
87 return repPenaltyAllowList.flat();
88 }
89
90 return null;
91}
92
66const router = express.Router();93const router = express.Router();
6794
68router.post('/status', jsonParser, async function (req, res) {95router.post('/status', jsonParser, async function (req, res) {
@@ -116,11 +143,10 @@ router.post('/generate', jsonParser, async function (req, res) {
116 controller.abort();143 controller.abort();
117 });144 });
118145
119 const isNewModel = (req.body.model.includes('clio') || req.body.model.includes('kayra') || req.body.model.includes('erato'));146 // Add customized bad words for Clio, Kayra, and Erato
120 const badWordsList = getBadWordsList(req.body.model);147 const badWordsList = getBadWordsList(req.body.model);
121148
122 // Add customized bad words for Clio, Kayra, and Erato149 if (Array.isArray(badWordsList) && Array.isArray(req.body.bad_words_ids)) {
123 if (isNewModel && Array.isArray(req.body.bad_words_ids)) {
124 for (const badWord of req.body.bad_words_ids) {150 for (const badWord of req.body.bad_words_ids) {
125 if (Array.isArray(badWord) && badWord.every(x => Number.isInteger(x))) {151 if (Array.isArray(badWord) && badWord.every(x => Number.isInteger(x))) {
126 badWordsList.push(badWord);152 badWordsList.push(badWord);
@@ -136,12 +162,14 @@ router.post('/generate', jsonParser, async function (req, res) {
136 }162 }
137163
138 // Add default biases for dinkus and asterism164 // Add default biases for dinkus and asterism
139 const logit_bias_exp = isNewModel ? logitBiasExp.slice() : [];165 const logitBiasList = getLogitBiasList(req.body.model);
140166
141 if (Array.isArray(logit_bias_exp) && Array.isArray(req.body.logit_bias_exp)) {167 if (Array.isArray(logitBiasList) && Array.isArray(req.body.logit_bias_exp)) {
142 logit_bias_exp.push(...req.body.logit_bias_exp);168 logitBiasList.push(...req.body.logit_bias_exp);
143 }169 }
144170
171 const repPenWhitelist = getRepPenaltyWhitelist(req.body.model);
172
145 const data = {173 const data = {
146 'input': req.body.input,174 'input': req.body.input,
147 'model': req.body.model,175 'model': req.body.model,
@@ -156,19 +184,17 @@ router.post('/generate', jsonParser, async function (req, res) {
156 'repetition_penalty_slope': req.body.repetition_penalty_slope,184 'repetition_penalty_slope': req.body.repetition_penalty_slope,
157 'repetition_penalty_frequency': req.body.repetition_penalty_frequency,185 'repetition_penalty_frequency': req.body.repetition_penalty_frequency,
158 'repetition_penalty_presence': req.body.repetition_penalty_presence,186 'repetition_penalty_presence': req.body.repetition_penalty_presence,
159 'repetition_penalty_whitelist': isNewModel ? repPenaltyAllowList.flat() : null,187 'repetition_penalty_whitelist': repPenWhitelist,
160 'top_a': req.body.top_a,188 'top_a': req.body.top_a,
161 'top_p': req.body.top_p,189 'top_p': req.body.top_p,
162 'top_k': req.body.top_k,190 'top_k': req.body.top_k,
163 'typical_p': req.body.typical_p,191 'typical_p': req.body.typical_p,
164 'mirostat_lr': req.body.mirostat_lr,192 'mirostat_lr': req.body.mirostat_lr,
165 'mirostat_tau': req.body.mirostat_tau,193 'mirostat_tau': req.body.mirostat_tau,
166 'cfg_scale': req.body.cfg_scale,
167 'cfg_uc': req.body.cfg_uc,
168 'phrase_rep_pen': req.body.phrase_rep_pen,194 'phrase_rep_pen': req.body.phrase_rep_pen,
169 'stop_sequences': req.body.stop_sequences,195 'stop_sequences': req.body.stop_sequences,
170 'bad_words_ids': badWordsList.length ? badWordsList : null,196 'bad_words_ids': badWordsList.length ? badWordsList : null,
171 'logit_bias_exp': logit_bias_exp,197 'logit_bias_exp': logitBiasList,
172 'generate_until_sentence': req.body.generate_until_sentence,198 'generate_until_sentence': req.body.generate_until_sentence,
173 'use_cache': req.body.use_cache,199 'use_cache': req.body.use_cache,
174 'return_full_text': req.body.return_full_text,200 'return_full_text': req.body.return_full_text,
@@ -183,8 +209,13 @@ router.post('/generate', jsonParser, async function (req, res) {
183 };209 };
184210
185 // Tells the model to stop generation at '>'211 // Tells the model to stop generation at '>'
186 if ('theme_textadventure' === req.body.prefix && isNewModel && !req.body.model.includes('erato')) {212 if ('theme_textadventure' === req.body.prefix) {
187 data.parameters.eos_token_id = 49405;213 if (req.body.model.includes('clio') || req.body.model.includes('kayra')) {
214 data.parameters.eos_token_id = 49405;
215 }
216 if (req.body.model.includes('erato')) {
217 data.parameters.eos_token_id = 29;
218 }
188 }219 }
189220
190 console.log(util.inspect(data, { depth: 4 }));221 console.log(util.inspect(data, { depth: 4 }));