diff --git a/public/script.js b/public/script.js index 4aa297de1..19c449005 100644 --- a/public/script.js +++ b/public/script.js @@ -113,7 +113,6 @@ import { loadProxyPresets, selected_proxy, initOpenAI, - isHiddenReasoningModel, } from './scripts/openai.js'; import { @@ -270,7 +269,7 @@ import { initSettingsSearch } from './scripts/setting-search.js'; import { initBulkEdit } from './scripts/bulk-edit.js'; import { deriveTemplatesFromChatTemplate } from './scripts/chat-templates.js'; import { getContext } from './scripts/st-context.js'; -import { extractReasoningFromData, initReasoning, PromptReasoning, updateReasoningTimeUI, updateReasoningUI } from './scripts/reasoning.js'; +import { extractReasoningFromData, initReasoning, isHiddenReasoningModel, PromptReasoning, updateReasoningUI } from './scripts/reasoning.js'; // API OBJECT FOR EXTERNAL WIRING globalThis.SillyTavern = { diff --git a/public/scripts/openai.js b/public/scripts/openai.js index dab85b418..8094a4b7b 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -4995,54 +4995,6 @@ export function isImageInliningSupported() { } } - - -/** - * Check if the model supports reasoning, but does not send back the reasoning - * @returns {boolean} True if the model supports reasoning - */ -export function isHiddenReasoningModel() { - if (main_api !== 'openai') { - return false; - } - - /** @typedef {Object. boolean?; }|string)[]; }>} */ - const hiddenReasoningModels = { - [chat_completion_sources.OPENAI]: { - currentModel: oai_settings.openai_model, - models: [ - { name: 'o1', startsWith: true }, - { name: 'o3', startsWith: true }, - ], - }, - [chat_completion_sources.MAKERSUITE]: { - currentModel: oai_settings.google_model, - models: [ - { name: 'gemini-2.0-flash-thinking-exp', startsWith: true }, - { name: 'gemini-2.0-pro-exp', startsWith: true }, - ], - }, - }; - - const sourceConfig = hiddenReasoningModels[oai_settings.chat_completion_source]; - if (!sourceConfig) { - return false; - } - - return sourceConfig.models.some(model => { - if (typeof model === 'string') { - return sourceConfig.currentModel === model; - } - if (model.startsWith) { - return (sourceConfig.currentModel).startsWith(model.name); - } - if (model.matchingFunc) { - return model.matchingFunc(sourceConfig.currentModel); - } - return false; - }); -} - /** * Proxy stuff */ diff --git a/public/scripts/reasoning.js b/public/scripts/reasoning.js index 5e3c9f6cb..4b7189066 100644 --- a/public/scripts/reasoning.js +++ b/public/scripts/reasoning.js @@ -5,7 +5,7 @@ import { chat, closeMessageEditor, event_types, eventSource, main_api, messageFo import { getRegexedString, regex_placement } from './extensions/regex/engine.js'; import { getCurrentLocale, t } from './i18n.js'; import { MacrosParser } from './macros.js'; -import { chat_completion_sources, isHiddenReasoningModel, oai_settings } from './openai.js'; +import { chat_completion_sources, oai_settings } from './openai.js'; import { Popup } from './popup.js'; import { power_user } from './power-user.js'; import { SlashCommand } from './slash-commands/SlashCommand.js'; @@ -70,6 +70,52 @@ export function extractReasoningFromData(data) { return ''; } +/** + * Check if the model supports reasoning, but does not send back the reasoning + * @returns {boolean} True if the model supports reasoning + */ +export function isHiddenReasoningModel() { + if (main_api !== 'openai') { + return false; + } + + /** @typedef {Object. boolean?; }|string)[]; }>} */ + const hiddenReasoningModels = { + [chat_completion_sources.OPENAI]: { + currentModel: oai_settings.openai_model, + models: [ + { name: 'o1', startsWith: true }, + { name: 'o3', startsWith: true }, + ], + }, + [chat_completion_sources.MAKERSUITE]: { + currentModel: oai_settings.google_model, + models: [ + { name: 'gemini-2.0-flash-thinking-exp', startsWith: true }, + { name: 'gemini-2.0-pro-exp', startsWith: true }, + ], + }, + }; + + const sourceConfig = hiddenReasoningModels[oai_settings.chat_completion_source]; + if (!sourceConfig) { + return false; + } + + return sourceConfig.models.some(model => { + if (typeof model === 'string') { + return sourceConfig.currentModel === model; + } + if (model.startsWith) { + return (sourceConfig.currentModel).startsWith(model.name); + } + if (model.matchingFunc) { + return model.matchingFunc(sourceConfig.currentModel); + } + return false; + }); +} + /** * Updates the Reasoning UI. * @param {number|JQuery|HTMLElement} messageIdOrElement The message ID or the message element.