mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Add Novel preset converter
This commit is contained in:
@@ -119,7 +119,7 @@
|
|||||||
<option value="gui" data-i18n="Default">Default</option>
|
<option value="gui" data-i18n="Default">Default</option>
|
||||||
</select>
|
</select>
|
||||||
<div class="flex-container marginLeft5 ">
|
<div class="flex-container marginLeft5 ">
|
||||||
<input type="file" hidden data-preset-manager-file="novel" accept=".json, .settings">
|
<input type="file" hidden data-preset-manager-file="novel" accept=".json, .settings, .preset">
|
||||||
<i data-preset-manager-update="novel" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i>
|
<i data-preset-manager-update="novel" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i>
|
||||||
<i data-preset-manager-new="novel" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
|
<i data-preset-manager-new="novel" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
|
||||||
<i data-preset-manager-import="novel" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
|
<i data-preset-manager-import="novel" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
|
||||||
|
@@ -5,9 +5,7 @@ import {
|
|||||||
novelai_setting_names,
|
novelai_setting_names,
|
||||||
saveSettingsDebounced,
|
saveSettingsDebounced,
|
||||||
setGenerationParamsFromPreset,
|
setGenerationParamsFromPreset,
|
||||||
substituteParams,
|
|
||||||
} from '../script.js';
|
} from '../script.js';
|
||||||
import { getCfgPrompt } from './cfg-scale.js';
|
|
||||||
import { MAX_CONTEXT_DEFAULT, MAX_RESPONSE_DEFAULT, power_user } from './power-user.js';
|
import { MAX_CONTEXT_DEFAULT, MAX_RESPONSE_DEFAULT, power_user } from './power-user.js';
|
||||||
import { getTextTokens, tokenizers } from './tokenizers.js';
|
import { getTextTokens, tokenizers } from './tokenizers.js';
|
||||||
import { getEventSourceStream } from './sse-stream.js';
|
import { getEventSourceStream } from './sse-stream.js';
|
||||||
@@ -61,6 +59,19 @@ const nai_tiers = {
|
|||||||
3: 'Opus',
|
3: 'Opus',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const samplers = {
|
||||||
|
temperature: 0,
|
||||||
|
top_k: 1,
|
||||||
|
top_p: 2,
|
||||||
|
tfs: 3,
|
||||||
|
top_a: 4,
|
||||||
|
typical_p: 5,
|
||||||
|
// removed samplers were here
|
||||||
|
mirostat: 8,
|
||||||
|
math1: 9,
|
||||||
|
min_p: 10,
|
||||||
|
};
|
||||||
|
|
||||||
let novel_data = null;
|
let novel_data = null;
|
||||||
let badWordsCache = {};
|
let badWordsCache = {};
|
||||||
const BIAS_KEY = '#novel_api-settings';
|
const BIAS_KEY = '#novel_api-settings';
|
||||||
@@ -95,6 +106,37 @@ export function getKayraMaxResponseTokens() {
|
|||||||
return maximum_output_length;
|
return maximum_output_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function convertNovelPreset(data) {
|
||||||
|
if (!data || typeof data !== 'object' || data.presetVersion !== 3 || !data.parameters || typeof data.parameters !== 'object') {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
max_context: 8000,
|
||||||
|
temperature: data.parameters.temperature,
|
||||||
|
max_length: data.parameters.max_length,
|
||||||
|
min_length: data.parameters.min_length,
|
||||||
|
top_k: data.parameters.top_k,
|
||||||
|
top_p: data.parameters.top_p,
|
||||||
|
top_a: data.parameters.top_a,
|
||||||
|
typical_p: data.parameters.typical_p,
|
||||||
|
tail_free_sampling: data.parameters.tail_free_sampling,
|
||||||
|
repetition_penalty: data.parameters.repetition_penalty,
|
||||||
|
repetition_penalty_range: data.parameters.repetition_penalty_range,
|
||||||
|
repetition_penalty_slope: data.parameters.repetition_penalty_slope,
|
||||||
|
repetition_penalty_frequency: data.parameters.repetition_penalty_frequency,
|
||||||
|
repetition_penalty_presence: data.parameters.repetition_penalty_presence,
|
||||||
|
phrase_rep_pen: data.parameters.phrase_rep_pen,
|
||||||
|
mirostat_lr: data.parameters.mirostat_lr,
|
||||||
|
mirostat_tau: data.parameters.mirostat_tau,
|
||||||
|
math1_temp: data.parameters.math1_temp,
|
||||||
|
math1_quad: data.parameters.math1_quad,
|
||||||
|
math1_quad_entropy_scale: data.parameters.math1_quad_entropy_scale,
|
||||||
|
min_p: data.parameters.min_p,
|
||||||
|
order: Array.isArray(data.parameters.order) ? data.parameters.order.filter(s => s.enabled && Object.keys(samplers).includes(s.id)).map(s => samplers[s.id]) : default_order,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function getNovelTier() {
|
export function getNovelTier() {
|
||||||
return nai_tiers[novel_data?.tier] ?? 'no_connection';
|
return nai_tiers[novel_data?.tier] ?? 'no_connection';
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@ import {
|
|||||||
import { groups, selected_group } from './group-chats.js';
|
import { groups, selected_group } from './group-chats.js';
|
||||||
import { instruct_presets } from './instruct-mode.js';
|
import { instruct_presets } from './instruct-mode.js';
|
||||||
import { kai_settings } from './kai-settings.js';
|
import { kai_settings } from './kai-settings.js';
|
||||||
|
import { convertNovelPreset } from './nai-settings.js';
|
||||||
import { Popup, POPUP_RESULT, POPUP_TYPE } from './popup.js';
|
import { Popup, POPUP_RESULT, POPUP_TYPE } from './popup.js';
|
||||||
import { context_presets, getContextSettings, power_user } from './power-user.js';
|
import { context_presets, getContextSettings, power_user } from './power-user.js';
|
||||||
import { SlashCommand } from './slash-commands/SlashCommand.js';
|
import { SlashCommand } from './slash-commands/SlashCommand.js';
|
||||||
@@ -397,6 +398,10 @@ class PresetManager {
|
|||||||
await checkForSystemPromptInInstructTemplate(name, settings);
|
await checkForSystemPromptInInstructTemplate(name, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.apiId === 'novel' && settings) {
|
||||||
|
settings = convertNovelPreset(settings);
|
||||||
|
}
|
||||||
|
|
||||||
const preset = settings ?? this.getPresetSettings(name);
|
const preset = settings ?? this.getPresetSettings(name);
|
||||||
|
|
||||||
const response = await fetch('/api/presets/save', {
|
const response = await fetch('/api/presets/save', {
|
||||||
|
Reference in New Issue
Block a user