mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Reasoning template
This commit is contained in:
@@ -21,7 +21,7 @@ import { groups, selected_group } from './group-chats.js';
|
||||
import { instruct_presets } from './instruct-mode.js';
|
||||
import { kai_settings } from './kai-settings.js';
|
||||
import { convertNovelPreset } from './nai-settings.js';
|
||||
import { openai_settings, openai_setting_names, oai_settings } from './openai.js';
|
||||
import { openai_settings, openai_setting_names } from './openai.js';
|
||||
import { Popup, POPUP_RESULT, POPUP_TYPE } from './popup.js';
|
||||
import { context_presets, getContextSettings, power_user } from './power-user.js';
|
||||
import { SlashCommand } from './slash-commands/SlashCommand.js';
|
||||
@@ -38,6 +38,7 @@ import {
|
||||
} from './textgen-settings.js';
|
||||
import { download, parseJsonFile, waitUntilCondition } from './utils.js';
|
||||
import { t } from './i18n.js';
|
||||
import { reasoning_templates } from './reasoning.js';
|
||||
|
||||
const presetManagers = {};
|
||||
|
||||
@@ -168,6 +169,20 @@ class PresetManager {
|
||||
},
|
||||
isValid: (data) => PresetManager.isPossiblyTextCompletionData(data),
|
||||
},
|
||||
'reasoning': {
|
||||
name: 'Reasoning Formatting',
|
||||
getData: () => {
|
||||
const manager = getPresetManager('reasoning');
|
||||
const name = manager.getSelectedPresetName();
|
||||
return manager.getPresetSettings(name);
|
||||
},
|
||||
setData: (data) => {
|
||||
const manager = getPresetManager('reasoning');
|
||||
const name = data.name;
|
||||
return manager.savePreset(name, data);
|
||||
},
|
||||
isValid: (data) => PresetManager.isPossiblyReasoningData(data),
|
||||
},
|
||||
};
|
||||
|
||||
static isPossiblyInstructData(data) {
|
||||
@@ -190,6 +205,11 @@ class PresetManager {
|
||||
return data && textCompletionProps.every(prop => Object.keys(data).includes(prop));
|
||||
}
|
||||
|
||||
static isPossiblyReasoningData(data) {
|
||||
const reasoningProps = ['name', 'prefix', 'suffix', 'separator'];
|
||||
return data && reasoningProps.every(prop => Object.keys(data).includes(prop));
|
||||
}
|
||||
|
||||
/**
|
||||
* Imports master settings from JSON data.
|
||||
* @param {object} data Data to import
|
||||
@@ -227,6 +247,12 @@ class PresetManager {
|
||||
return await getPresetManager('textgenerationwebui').savePreset(fileName, data);
|
||||
}
|
||||
|
||||
// 5. Reasoning Template
|
||||
if (this.isPossiblyReasoningData(data)) {
|
||||
toastr.info(t`Importing as reasoning template...`, t`Reasoning template detected`);
|
||||
return await getPresetManager('reasoning').savePreset(data.name, data);
|
||||
}
|
||||
|
||||
const validSections = [];
|
||||
for (const [key, section] of Object.entries(this.masterSections)) {
|
||||
if (key in data && section.isValid(data[key])) {
|
||||
@@ -478,6 +504,10 @@ class PresetManager {
|
||||
presets = system_prompts;
|
||||
preset_names = system_prompts.map(x => x.name);
|
||||
break;
|
||||
case 'reasoning':
|
||||
presets = reasoning_templates;
|
||||
preset_names = reasoning_templates.map(x => x.name);
|
||||
break;
|
||||
default:
|
||||
console.warn(`Unknown API ID ${api}`);
|
||||
}
|
||||
@@ -490,7 +520,7 @@ class PresetManager {
|
||||
}
|
||||
|
||||
isAdvancedFormatting() {
|
||||
return this.apiId == 'context' || this.apiId == 'instruct' || this.apiId == 'sysprompt';
|
||||
return ['context', 'instruct', 'sysprompt', 'reasoning'].includes(this.apiId);
|
||||
}
|
||||
|
||||
updateList(name, preset) {
|
||||
@@ -553,6 +583,11 @@ class PresetManager {
|
||||
sysprompt_preset['name'] = name || power_user.sysprompt.preset;
|
||||
return sysprompt_preset;
|
||||
}
|
||||
case 'reasoning': {
|
||||
const reasoning_preset = structuredClone(power_user.reasoning);
|
||||
reasoning_preset['name'] = name || power_user.reasoning.preset;
|
||||
return reasoning_preset;
|
||||
}
|
||||
default:
|
||||
console.warn(`Unknown API ID ${apiId}`);
|
||||
return {};
|
||||
@@ -599,6 +634,13 @@ class PresetManager {
|
||||
'include_reasoning',
|
||||
'global_banned_tokens',
|
||||
'send_banned_tokens',
|
||||
|
||||
// Reasoning exclusions
|
||||
'auto_parse',
|
||||
'add_to_prompts',
|
||||
'auto_expand',
|
||||
'show_hidden',
|
||||
'max_additions',
|
||||
];
|
||||
const settings = Object.assign({}, getSettingsByApiId(this.apiId));
|
||||
|
||||
|
Reference in New Issue
Block a user