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

26f4d1a4ada3e82dba3461003a4de20db13f7baf

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

22 files changed, +50 -95Showing whitespace changes
default/content/presets/novel/Asper-Kayra.json+0 -1
@@ -14,7 +14,6 @@
1414 "use_cache": false,
1515 "return_full_text": false,
1616 "prefix": "vanilla",
17- "cfg_scale": 1,
1817 "phrase_rep_pen": "medium",
1918 "max_context": 7800,
2019 "min_p": 0,
default/content/presets/novel/Blended-Coffee-Kayra.json+1 -2
@@ -1,5 +1,5 @@
11{
22 "order": [6, 0, 1, 2, 3],
33 "temperature": 1,
44 "max_length": 150,
55 "min_length": 1,
@@ -14,7 +14,6 @@
1414 "return_full_text": false,
1515 "prefix": "vanilla",
1616 "phrase_rep_pen": "medium",
17- "cfg_scale": 1.55,
1817 "max_context": 7800,
1918 "min_p": 0,
2019 "math1_temp": 1,
default/content/presets/novel/Blook-Kayra.json+1 -2
@@ -1,5 +1,5 @@
11{
22 "order": [6, 2, 3, 1, 0],
33 "temperature": 1,
44 "max_length": 150,
55 "min_length": 1,
@@ -15,7 +15,6 @@
1515 "return_full_text": false,
1616 "prefix": "vanilla",
1717 "phrase_rep_pen": "very_aggressive",
18- "cfg_scale": 1.3,
1918 "max_context": 7800,
2019 "min_p": 0,
2120 "math1_temp": 1,
default/content/presets/novel/Carefree-Kayra.json+0 -1
@@ -15,7 +15,6 @@
1515 "use_cache": false,
1616 "return_full_text": false,
1717 "prefix": "vanilla",
18- "cfg_scale": 1,
1918 "phrase_rep_pen": "aggressive",
2019 "max_context": 7800,
2120 "min_p": 0,
default/content/presets/novel/CosmicCube-Kayra.json+1 -2
@@ -1,5 +1,5 @@
11{
22 "order": [8, 6, 5, 0, 3],
33 "temperature": 0.9,
44 "max_length": 150,
55 "min_length": 1,
@@ -15,7 +15,6 @@
1515 "return_full_text": false,
1616 "prefix": "vanilla",
1717 "phrase_rep_pen": "off",
18- "cfg_scale": 1.48,
1918 "max_context": 7800,
2019 "min_p": 0,
2120 "math1_temp": 1,
default/content/presets/novel/Edgewise-Clio.json+0 -1
@@ -15,7 +15,6 @@
1515 "use_cache": false,
1616 "return_full_text": false,
1717 "prefix": "vanilla",
18- "cfg_scale": 1,
1918 "phrase_rep_pen": "very_light",
2019 "max_context": 7800,
2120 "min_p": 0,
default/content/presets/novel/Fresh-Coffee-Clio.json+0 -1
@@ -16,7 +16,6 @@
1616 "use_cache": false,
1717 "return_full_text": false,
1818 "prefix": "vanilla",
19- "cfg_scale": 1,
2019 "phrase_rep_pen": "very_light",
2120 "max_context": 7800,
2221 "min_p": 0,
default/content/presets/novel/Fresh-Coffee-Kayra.json+0 -1
@@ -14,7 +14,6 @@
1414 "use_cache": false,
1515 "return_full_text": false,
1616 "prefix": "vanilla",
17- "cfg_scale": 1,
1817 "phrase_rep_pen": "off",
1918 "max_context": 7800,
2019 "min_p": 0,
default/content/presets/novel/Green-Active-Writer-Kayra.json+1 -2
@@ -1,5 +1,5 @@
11{
22 "order": [6, 0, 8, 5, 3],
33 "temperature": 1.5,
44 "max_length": 150,
55 "min_length": 1,
@@ -15,7 +15,6 @@
1515 "return_full_text": false,
1616 "prefix": "vanilla",
1717 "phrase_rep_pen": "very_aggressive",
18- "cfg_scale": 1.4,
1918 "max_context": 7800,
2019 "min_p": 0,
2120 "math1_temp": 1,
default/content/presets/novel/Keelback-Clio.json+0 -1
@@ -16,7 +16,6 @@
1616 "use_cache": false,
1717 "return_full_text": false,
1818 "prefix": "vanilla",
19- "cfg_scale": 1,
2019 "phrase_rep_pen": "very_light",
2120 "max_context": 7800,
2221 "min_p": 0,
default/content/presets/novel/Long-Press-Clio.json+0 -1
@@ -16,7 +16,6 @@
1616 "use_cache": false,
1717 "return_full_text": false,
1818 "prefix": "vanilla",
19- "cfg_scale": 1,
2019 "phrase_rep_pen": "very_light",
2120 "max_context": 7800,
2221 "min_p": 0,
default/content/presets/novel/Pilotfish-Kayra.json+1 -2
@@ -1,5 +1,5 @@
11{
22 "order": [6, 0, 4, 1, 2, 5, 3],
33 "temperature": 1.31,
44 "max_length": 150,
55 "min_length": 1,
@@ -17,7 +17,6 @@
1717 "return_full_text": false,
1818 "prefix": "vanilla",
1919 "phrase_rep_pen": "medium",
20- "cfg_scale": 1.35,
2120 "max_context": 7800,
2221 "min_p": 0,
2322 "math1_temp": 1,
default/content/presets/novel/Pro_Writer-Kayra.json+0 -1
@@ -15,7 +15,6 @@
1515 "return_full_text": false,
1616 "prefix": "vanilla",
1717 "phrase_rep_pen": "medium",
18- "cfg_scale": 1.0,
1918 "max_context": 7800,
2019 "min_p": 0,
2120 "math1_temp": 1,
default/content/presets/novel/Talker-Chat-Clio.json+0 -1
@@ -16,7 +16,6 @@
1616 "use_cache": false,
1717 "return_full_text": false,
1818 "prefix": "vanilla",
19- "cfg_scale": 1,
2019 "phrase_rep_pen": "very_light",
2120 "max_context": 7800,
2221 "min_p": 0,
default/content/presets/novel/Tea_Time-Kayra.json+0 -1
@@ -14,7 +14,6 @@
1414 "return_full_text": false,
1515 "prefix": "vanilla",
1616 "phrase_rep_pen": "aggressive",
17- "cfg_scale": 1.0,
1817 "max_context": 7800,
1918 "min_p": 0,
2019 "math1_temp": 1,
default/content/presets/novel/Tesseract-Kayra.json+1 -2
@@ -1,5 +1,5 @@
11{
22 "order": [6, 0, 5],
33 "temperature": 0.895,
44 "max_length": 150,
55 "min_length": 1,
@@ -13,7 +13,6 @@
1313 "return_full_text": false,
1414 "prefix": "vanilla",
1515 "phrase_rep_pen": "aggressive",
16- "cfg_scale": 1.3,
1716 "max_context": 7800,
1817 "min_p": 0,
1918 "math1_temp": 1,
default/content/presets/novel/Universal-Erato.json+0 -2
@@ -16,14 +16,12 @@
1616 "math1_quad_entropy_scale": 0,
1717 "min_length": 1,
1818 "prefix": "vanilla",
19- "cfg_uc": "",
2019 "banned_tokens": "",
2120 "order": [
2221 0,
2322 10
2423 ],
2524 "phrase_rep_pen": "off",
26- "cfg_scale": 1,
2725 "mirostat_lr": 0,
2826 "mirostat_tau": 0
2927}
default/content/presets/novel/Vingt-Un-Clio.json+0 -1
@@ -16,7 +16,6 @@
1616 "use_cache": false,
1717 "return_full_text": false,
1818 "prefix": "vanilla",
19- "cfg_scale": 1,
2019 "phrase_rep_pen": "very_light",
2120 "max_context": 7800,
2221 "min_p": 0,
default/content/settings.json+0 -1
@@ -417,7 +417,6 @@
417417 "preset_settings_novel": "Talker-Chat-Clio",
418418 "streaming_novel": true,
419419 "preamble": "[ Style: chat, complex, sensory, visceral ]",
420- "cfg_uc": "",
421420 "banned_tokens": "",
422421 "order": [
423422 1,
public/index.html+1 -32
@@ -532,32 +532,6 @@
532532 <div class="logit_bias_list"></div>
533533 </div>
534534 </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>
561535 </div>
562536 <div id="range_block_openai">
563537 <div class="range-block">
@@ -1154,12 +1128,7 @@
11541128 <small>5</small>
11551129 <div class="toggle_button right_menu_button"></div>
11561130 </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. -->
11631132 <div data-id="8">
11641133 <span data-i18n="Mirostat">Mirostat</span>
11651134 <small>8</small>
public/scripts/nai-settings.js+1 -26
@@ -49,7 +49,6 @@ export const nai_settings = {
4949 streaming_novel: false,
5050 preamble: default_preamble,
5151 prefix: '',
52- cfg_uc: '',
5352 banned_tokens: '',
5453 order: default_order,
5554 logit_bias: [],
@@ -146,12 +145,10 @@ export function loadNovelPreset(preset) {
146145 nai_settings.top_a = preset.top_a;
147146 nai_settings.typical_p = preset.typical_p;
148147 nai_settings.min_length = preset.min_length;
149- nai_settings.cfg_scale = preset.cfg_scale;
150148 nai_settings.phrase_rep_pen = preset.phrase_rep_pen;
151149 nai_settings.mirostat_lr = preset.mirostat_lr;
152150 nai_settings.mirostat_tau = preset.mirostat_tau;
153151 nai_settings.prefix = preset.prefix;
154- nai_settings.cfg_uc = preset.cfg_uc || '';
155152 nai_settings.banned_tokens = preset.banned_tokens || '';
156153 nai_settings.order = preset.order || default_order;
157154 nai_settings.logit_bias = preset.logit_bias || [];
@@ -187,13 +184,11 @@ export function loadNovelSettings(settings) {
187184 nai_settings.typical_p = settings.typical_p;
188185 nai_settings.min_length = settings.min_length;
189186 nai_settings.phrase_rep_pen = settings.phrase_rep_pen;
190- nai_settings.cfg_scale = settings.cfg_scale;
191187 nai_settings.mirostat_lr = settings.mirostat_lr;
192188 nai_settings.mirostat_tau = settings.mirostat_tau;
193189 nai_settings.streaming_novel = !!settings.streaming_novel;
194190 nai_settings.preamble = settings.preamble || default_preamble;
195191 nai_settings.prefix = settings.prefix;
196- nai_settings.cfg_uc = settings.cfg_uc || '';
197192 nai_settings.banned_tokens = settings.banned_tokens || '';
198193 nai_settings.order = settings.order || default_order;
199194 nai_settings.logit_bias = settings.logit_bias || [];
@@ -227,8 +222,6 @@ function loadNovelSettingsUi(ui_settings) {
227222 $('#top_a_counter_novel').val(Number(ui_settings.top_a).toFixed(3));
228223 $('#typical_p_novel').val(ui_settings.typical_p);
229224 $('#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));
232225 $('#phrase_rep_pen_novel').val(ui_settings.phrase_rep_pen || 'off');
233226 $('#mirostat_lr_novel').val(ui_settings.mirostat_lr);
234227 $('#mirostat_lr_counter_novel').val(Number(ui_settings.mirostat_lr).toFixed(2));
@@ -238,7 +231,6 @@ function loadNovelSettingsUi(ui_settings) {
238231 $('#min_length_counter_novel').val(Number(ui_settings.min_length).toFixed(0));
239232 $('#nai_preamble_textarea').val(ui_settings.preamble);
240233 $('#nai_prefix').val(ui_settings.prefix || 'vanilla');
241- $('#nai_cfg_uc').val(ui_settings.cfg_uc || '');
242234 $('#nai_banned_tokens').val(ui_settings.banned_tokens || '');
243235 $('#min_p_novel').val(ui_settings.min_p);
244236 $('#min_p_counter_novel').val(Number(ui_settings.min_p).toFixed(3));
@@ -334,24 +326,12 @@ const sliders = [
334326 setValue: (val) => { nai_settings.mirostat_lr = Number(val).toFixed(2); },
335327 },
336328 {
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- {
343329 sliderId: '#min_length_novel',
344330 counterId: '#min_length_counter_novel',
345331 format: (val) => `${val}`,
346332 setValue: (val) => { nai_settings.min_length = Number(val).toFixed(0); },
347333 },
348334 {
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- {
355335 sliderId: '#nai_banned_tokens',
356336 counterId: '#nai_banned_tokens_counter',
357337 format: (val) => val,
@@ -468,11 +448,8 @@ function getBadWordPermutations(text) {
468448 return result.filter(onlyUnique);
469449}
470450
471451export function getNovelGenerationData(finalPrompt, settings, maxLength, isImpersonate, isContinue, cfgValues_cfgValues, type) {
472452 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
477454 const tokenizerType = getTokenizerTypeForModel(nai_settings.model_novel);
478455 const stopSequences = (tokenizerType !== tokenizers.NONE)
@@ -528,8 +505,6 @@ export function getNovelGenerationData(finalPrompt, settings, maxLength, isImper
528505 'typical_p': Number(nai_settings.typical_p),
529506 'mirostat_lr': Number(nai_settings.mirostat_lr),
530507 '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) ?? '',
533508 'phrase_rep_pen': nai_settings.phrase_rep_pen,
534509 'stop_sequences': stopSequences,
535510 'bad_words_ids': badWordIds,
src/endpoints/novelai.js+42 -11
@@ -48,6 +48,11 @@ const logitBiasExp = [
4848 { 'sequence': [21], 'bias': -0.08, 'ensure_sequence_finish': false, 'generate_once': false },
4949];
5050
51+const 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+
5156function getBadWordsList(model) {
5257 let list = [];
5358
@@ -63,6 +68,28 @@ function getBadWordsList(model) {
6368 return list.slice();
6469}
6570
71+function 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+
85+function getRepPenaltyWhitelist(model) {
86+ if (model.includes('clio') || model.includes('kayra')) {
87+ return repPenaltyAllowList.flat();
88+ }
89+
90+ return null;
91+}
92+
6693const router = express.Router();
6794
6895router.post('/status', jsonParser, async function (req, res) {
@@ -116,11 +143,10 @@ router.post('/generate', jsonParser, async function (req, res) {
116143 controller.abort();
117144 });
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
120147 const badWordsList = getBadWordsList(req.body.model);
121148
122- // Add customized bad words for Clio, Kayra, and Erato
149+ if (Array.isArray(badWordsList) && Array.isArray(req.body.bad_words_ids)) {
123- if (isNewModel && Array.isArray(req.body.bad_words_ids)) {
124150 for (const badWord of req.body.bad_words_ids) {
125151 if (Array.isArray(badWord) && badWord.every(x => Number.isInteger(x))) {
126152 badWordsList.push(badWord);
@@ -136,12 +162,14 @@ router.post('/generate', jsonParser, async function (req, res) {
136162 }
137163
138164 // Add default biases for dinkus and asterism
139- const logit_bias_exp = isNewModel ? logitBiasExp.slice() : [];
165+ const logitBiasList = getLogitBiasList(req.body.model);
140166
141167 if (Array.isArray(logit_bias_explogitBiasList) && Array.isArray(req.body.logit_bias_exp)) {
142168 logit_bias_explogitBiasList.push(...req.body.logit_bias_exp);
143169 }
144170
171+ const repPenWhitelist = getRepPenaltyWhitelist(req.body.model);
172+
145173 const data = {
146174 'input': req.body.input,
147175 'model': req.body.model,
@@ -156,19 +184,17 @@ router.post('/generate', jsonParser, async function (req, res) {
156184 'repetition_penalty_slope': req.body.repetition_penalty_slope,
157185 'repetition_penalty_frequency': req.body.repetition_penalty_frequency,
158186 'repetition_penalty_presence': req.body.repetition_penalty_presence,
159187 'repetition_penalty_whitelist': isNewModel ? repPenaltyAllowList.flat() : nullrepPenWhitelist,
160188 'top_a': req.body.top_a,
161189 'top_p': req.body.top_p,
162190 'top_k': req.body.top_k,
163191 'typical_p': req.body.typical_p,
164192 'mirostat_lr': req.body.mirostat_lr,
165193 'mirostat_tau': req.body.mirostat_tau,
166- 'cfg_scale': req.body.cfg_scale,
167- 'cfg_uc': req.body.cfg_uc,
168194 'phrase_rep_pen': req.body.phrase_rep_pen,
169195 'stop_sequences': req.body.stop_sequences,
170196 'bad_words_ids': badWordsList.length ? badWordsList : null,
171197 'logit_bias_exp': logit_bias_explogitBiasList,
172198 'generate_until_sentence': req.body.generate_until_sentence,
173199 'use_cache': req.body.use_cache,
174200 'return_full_text': req.body.return_full_text,
@@ -183,9 +209,14 @@ router.post('/generate', jsonParser, async function (req, res) {
183209 };
184210
185211 // Tells the model to stop generation at '>'
186212 if ('theme_textadventure' === req.body.prefix && isNewModel && !req.body.model.includes('erato')) {
213+ if (req.body.model.includes('clio') || req.body.model.includes('kayra')) {
187214 data.parameters.eos_token_id = 49405;
188215 }
216+ if (req.body.model.includes('erato')) {
217+ data.parameters.eos_token_id = 29;
218+ }
219+ }
189220
190221 console.log(util.inspect(data, { depth: 4 }));
191222