Merge pull request #3544 from qvink/get_chat_completion_presets_from_preset_manager Get chat completion presets from preset manager

e71427953b1fc7525dfd01256d1440501a3010b2

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

Signed
2 files changed, +31 -2Showing whitespace changes
public/scripts/openai.js+2 -2
@@ -393,8 +393,8 @@ export let proxies = [
393393];
394394export let selected_proxy = proxies[0];
395395
396396export let openai_setting_names;
397397export let openai_settings;
398398
399399/** @type {import('./PromptManager.js').PromptManager} */
400400export let promptManager = null;
public/scripts/preset-manager.js+29 -0
@@ -21,6 +21,7 @@ import { groups, selected_group } from './group-chats.js';
2121import { instruct_presets } from './instruct-mode.js';
2222import { kai_settings } from './kai-settings.js';
2323import { convertNovelPreset } from './nai-settings.js';
24+import { openai_settings, openai_setting_names, oai_settings } from './openai.js';
2425import { Popup, POPUP_RESULT, POPUP_TYPE } from './popup.js';
2526import { context_presets, getContextSettings, power_user } from './power-user.js';
2627import { SlashCommand } from './slash-commands/SlashCommand.js';
@@ -456,6 +457,10 @@ class PresetManager {
456457 presets = textgenerationwebui_presets;
457458 preset_names = textgenerationwebui_preset_names;
458459 break;
460+ case 'openai':
461+ presets = openai_settings;
462+ preset_names = openai_setting_names;
463+ break;
459464 case 'context':
460465 presets = context_presets;
461466 preset_names = context_presets.map(x => x.name);
@@ -606,6 +611,30 @@ class PresetManager {
606611 return settings;
607612 }
608613
614+ getCompletionPresetByName(name) {
615+ // Retrieve a completion preset by name. Return undefined if not found.
616+ let { presets, preset_names } = this.getPresetList();
617+ let preset;
618+
619+ // Some APIs use an array of names, others use an object of {name: index}
620+ if (Array.isArray(preset_names)) { // array of names
621+ if (preset_names.includes(name)) {
622+ preset = presets[preset_names.indexOf(name)];
623+ }
624+ } else { // object of {names: index}
625+ if (preset_names[name] !== undefined) {
626+ preset = presets[preset_names[name]];
627+ }
628+ }
629+
630+ if (preset === undefined) {
631+ console.error(`Preset ${name} not found`);
632+ }
633+
634+ // if the preset isn't found, returns undefined
635+ return preset;
636+ }
637+
609638 // pass no arguments to delete current preset
610639 async deletePreset(name) {
611640 const { preset_names, presets } = this.getPresetList();