From 9b9a39545110d55911ca0c53ce8df22f6258c57d Mon Sep 17 00:00:00 2001 From: suyao Date: Sun, 11 May 2025 05:36:52 +0800 Subject: [PATCH] fix: update regex for function calling models and improve time tracking logic --- src/renderer/src/config/models.ts | 2 +- .../src/pages/home/Messages/Blocks/ThinkingBlock.tsx | 1 + src/renderer/src/providers/AiProvider/OpenAIProvider.ts | 7 +++---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 0e744131ad..acfd8d2915 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -206,7 +206,7 @@ export const FUNCTION_CALLING_MODELS = [ 'gpt-4o-mini', 'gpt-4', 'gpt-4.5', - 'o1(?:-[\\w-]+)?', + 'o(1|3|4)(?:-[\\w-]+)?', 'claude', 'qwen', 'qwen3', diff --git a/src/renderer/src/pages/home/Messages/Blocks/ThinkingBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/ThinkingBlock.tsx index 2e49e9f1ad..f1d546bd58 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/ThinkingBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/ThinkingBlock.tsx @@ -52,6 +52,7 @@ const ThinkingBlock: React.FC = ({ block }) => { } }, [block.content, t]) + // FIXME: 这里统计的和请求处统计的有一定误差 useEffect(() => { if (isThinking) { intervalId.current = setInterval(() => { diff --git a/src/renderer/src/providers/AiProvider/OpenAIProvider.ts b/src/renderer/src/providers/AiProvider/OpenAIProvider.ts index 51c690ee41..747dad5986 100644 --- a/src/renderer/src/providers/AiProvider/OpenAIProvider.ts +++ b/src/renderer/src/providers/AiProvider/OpenAIProvider.ts @@ -428,7 +428,6 @@ export abstract class BaseOpenAiProvider extends BaseProvider { type: 'input_text' } if (isSupportedReasoningEffortOpenAIModel(model)) { - systemMessageInput.text = `Formatting re-enabled${systemMessageInput.text ? '\n' + systemMessageInput.text : ''}` systemMessage.role = 'developer' } @@ -640,10 +639,10 @@ export abstract class BaseOpenAiProvider extends BaseProvider { break } switch (chunk.type) { - case 'response.created': - time_first_token_millsec = new Date().getTime() - break case 'response.output_item.added': + if (time_first_token_millsec === 0) { + time_first_token_millsec = new Date().getTime() + } if (chunk.item.type === 'function_call') { outputItems.push(chunk.item) }