From 106db97f8c5be534c29dc8bde7bdfdfa738c45b7 Mon Sep 17 00:00:00 2001 From: Davidlasky Date: Tue, 1 Apr 2025 17:47:16 -0500 Subject: [PATCH] enable o3-mini-high, optimize timeout for thinking models --- app/client/platforms/openai.ts | 15 +++++++-------- app/utils.ts | 10 +++++++++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/client/platforms/openai.ts b/app/client/platforms/openai.ts index b6c2393e6..72e882467 100644 --- a/app/client/platforms/openai.ts +++ b/app/client/platforms/openai.ts @@ -241,18 +241,18 @@ export class ChatGPTApi implements LLMApi { // O1 使用 max_completion_tokens 控制token数 (https://platform.openai.com/docs/guides/reasoning#controlling-costs) if (isO1OrO3) { - requestPayload["max_completion_tokens"] = 25000; + requestPayload["max_completion_tokens"] = modelConfig.max_tokens; } if (isO3) { requestPayload["reasoning_effort"] = "high"; + // make o3-mini defaults to high reasoning effort } // add max_tokens to vision model if (visionModel) { if (isO1) { requestPayload["max_completion_tokens"] = modelConfig.max_tokens; - } else { requestPayload["max_tokens"] = Math.max(modelConfig.max_tokens, 4000); } @@ -297,6 +297,11 @@ export class ChatGPTApi implements LLMApi { isDalle3 ? OpenaiPath.ImagePath : OpenaiPath.ChatPath, ); } + // make a fetch request + const requestTimeoutId = setTimeout( + () => controller.abort(), + getTimeoutMSByModel(options.config.model), + ); if (shouldStream) { let index = -1; const [tools, funcs] = usePluginStore @@ -404,12 +409,6 @@ export class ChatGPTApi implements LLMApi { headers: getHeaders(), }; - // make a fetch request - const requestTimeoutId = setTimeout( - () => controller.abort(), - getTimeoutMSByModel(options.config.model), - ); - const res = await fetch(chatPath, chatPayload); clearTimeout(requestTimeoutId); diff --git a/app/utils.ts b/app/utils.ts index fed0c953e..f2454e5cc 100644 --- a/app/utils.ts +++ b/app/utils.ts @@ -306,8 +306,16 @@ export function getTimeoutMSByModel(model: string) { model.includes("deepseek-r") || model.includes("-thinking") || model.includes("pro") - ) + ) { + console.log( + "thinking model is " + + model + + " timeout is " + + REQUEST_TIMEOUT_MS_FOR_THINKING, + ); return REQUEST_TIMEOUT_MS_FOR_THINKING; + } + console.log("normal model is " + model + " timeout is " + REQUEST_TIMEOUT_MS); return REQUEST_TIMEOUT_MS; }