mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Merge branch 'staging' into hidden-reasoning-tracking
This commit is contained in:
@ -1934,7 +1934,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="range-block" data-source="openai,cohere,mistralai,custom,claude,openrouter,groq">
|
||||
<div class="range-block" data-source="openai,cohere,mistralai,custom,claude,openrouter,groq,deepseek">
|
||||
<label for="openai_function_calling" class="checkbox_label flexWrap widthFreeExpand">
|
||||
<input id="openai_function_calling" type="checkbox" />
|
||||
<span data-i18n="Enable function calling">Enable function calling</span>
|
||||
|
@ -269,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, ReasoningHandler, updateReasoningUI } from './scripts/reasoning.js';
|
||||
import { extractReasoningFromData, initReasoning, PromptReasoning, ReasoningHandler, removeReasoningFromString, updateReasoningUI } from './scripts/reasoning.js';
|
||||
|
||||
// API OBJECT FOR EXTERNAL WIRING
|
||||
globalThis.SillyTavern = {
|
||||
@ -2785,7 +2785,8 @@ export async function generateQuietPrompt(quiet_prompt, quietToLoud, skipWIAN, q
|
||||
TempResponseLength.save(main_api, responseLength);
|
||||
eventHook = TempResponseLength.setupEventHook(main_api);
|
||||
}
|
||||
return await Generate('quiet', options);
|
||||
const result = await Generate('quiet', options);
|
||||
return removeReasoningFromString(result);
|
||||
} finally {
|
||||
if (responseLengthCustomized && TempResponseLength.isCustomized()) {
|
||||
TempResponseLength.restore(main_api);
|
||||
|
@ -1916,6 +1916,10 @@ async function sendOpenAIRequest(type, messages, signal) {
|
||||
'reasoning_effort': String(oai_settings.reasoning_effort),
|
||||
};
|
||||
|
||||
if (!canMultiSwipe && ToolManager.canPerformToolCalls(type)) {
|
||||
await ToolManager.registerFunctionToolsOpenAI(generate_data);
|
||||
}
|
||||
|
||||
// Empty array will produce a validation error
|
||||
if (!Array.isArray(generate_data.stop) || !generate_data.stop.length) {
|
||||
delete generate_data.stop;
|
||||
@ -2039,6 +2043,8 @@ async function sendOpenAIRequest(type, messages, signal) {
|
||||
delete generate_data.top_logprobs;
|
||||
delete generate_data.logprobs;
|
||||
delete generate_data.logit_bias;
|
||||
delete generate_data.tools;
|
||||
delete generate_data.tool_choice;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2046,10 +2052,6 @@ async function sendOpenAIRequest(type, messages, signal) {
|
||||
generate_data['seed'] = oai_settings.seed;
|
||||
}
|
||||
|
||||
if (!canMultiSwipe && ToolManager.canPerformToolCalls(type)) {
|
||||
await ToolManager.registerFunctionToolsOpenAI(generate_data);
|
||||
}
|
||||
|
||||
if (isOAI && (oai_settings.openai_model.startsWith('o1') || oai_settings.openai_model.startsWith('o3'))) {
|
||||
generate_data.messages.forEach((msg) => {
|
||||
if (msg.role === 'system') {
|
||||
|
@ -767,6 +767,20 @@ function setReasoningEventHandlers() {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes reasoning from a string if auto-parsing is enabled.
|
||||
* @param {string} str Input string
|
||||
* @returns {string} Output string
|
||||
*/
|
||||
export function removeReasoningFromString(str) {
|
||||
if (!power_user.reasoning.auto_parse) {
|
||||
return str;
|
||||
}
|
||||
|
||||
const parsedReasoning = parseReasoningFromString(str);
|
||||
return parsedReasoning?.content ?? str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses reasoning from a string using the power user reasoning settings.
|
||||
* @typedef {Object} ParsedReasoning
|
||||
|
@ -563,6 +563,7 @@ export class ToolManager {
|
||||
chat_completion_sources.OPENROUTER,
|
||||
chat_completion_sources.GROQ,
|
||||
chat_completion_sources.COHERE,
|
||||
chat_completion_sources.DEEPSEEK,
|
||||
];
|
||||
return supportedSources.includes(oai_settings.chat_completion_source);
|
||||
}
|
||||
|
@ -672,6 +672,11 @@ async function sendDeepSeekRequest(request, response) {
|
||||
bodyParams['logprobs'] = true;
|
||||
}
|
||||
|
||||
if (Array.isArray(request.body.tools) && request.body.tools.length > 0) {
|
||||
bodyParams['tools'] = request.body.tools;
|
||||
bodyParams['tool_choice'] = request.body.tool_choice;
|
||||
}
|
||||
|
||||
const postProcessType = String(request.body.model).endsWith('-reasoner') ? 'deepseek-reasoner' : 'deepseek';
|
||||
const processedMessages = postProcessPrompt(request.body.messages, postProcessType, getPromptNames(request));
|
||||
|
||||
|
Reference in New Issue
Block a user