From ebe85ba24a7b652f0133e7a72baea48a219dd616 Mon Sep 17 00:00:00 2001 From: suyao Date: Sat, 21 Jun 2025 22:38:54 +0800 Subject: [PATCH] fix: enhance anthropic provider configuration and middleware handling - Updated providerToAiSdkConfig to support both OpenAI and Anthropic providers, improving flexibility in API host formatting. - Refactored thinkingTimeMiddleware to ensure all chunks are correctly enqueued, enhancing middleware functionality. - Corrected parameter naming in getAnthropicReasoningParams for consistency and clarity in configuration. --- src/renderer/src/aiCore/index_new.ts | 2 +- .../src/aiCore/middleware/aisdk/ThinkingTimeMiddleware.ts | 6 ++++-- src/renderer/src/aiCore/utils/reasoning.ts | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index a359463487..750e83b2cd 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -45,7 +45,7 @@ function providerToAiSdkConfig(provider: Provider): { actualProvider = createVertexProvider(provider) } - if (actualProvider.type === 'openai') { + if (actualProvider.type === 'openai' || actualProvider.type === 'anthropic') { actualProvider.apiHost = formatApiHost(actualProvider.apiHost) } diff --git a/src/renderer/src/aiCore/middleware/aisdk/ThinkingTimeMiddleware.ts b/src/renderer/src/aiCore/middleware/aisdk/ThinkingTimeMiddleware.ts index 9025cb2e49..7fc4d33f6f 100644 --- a/src/renderer/src/aiCore/middleware/aisdk/ThinkingTimeMiddleware.ts +++ b/src/renderer/src/aiCore/middleware/aisdk/ThinkingTimeMiddleware.ts @@ -25,6 +25,8 @@ export default function thinkingTimeMiddleware(): LanguageModelV1Middleware { thinkingStartTime = Date.now() } accumulatedThinkingContent += chunk.textDelta || '' + // 将所有 chunk 原样传递下去 + controller.enqueue(chunk) } else { if (hasThinkingContent && thinkingStartTime > 0) { const thinkingTime = Date.now() - thinkingStartTime @@ -37,10 +39,10 @@ export default function thinkingTimeMiddleware(): LanguageModelV1Middleware { hasThinkingContent = false thinkingStartTime = 0 accumulatedThinkingContent = '' + } else { + controller.enqueue(chunk) } } - // 将所有 chunk 原样传递下去 - controller.enqueue(chunk) }, flush(controller) { // 如果流的末尾都是 reasoning,也需要发送 complete 事件 diff --git a/src/renderer/src/aiCore/utils/reasoning.ts b/src/renderer/src/aiCore/utils/reasoning.ts index 789688a027..80471e75e6 100644 --- a/src/renderer/src/aiCore/utils/reasoning.ts +++ b/src/renderer/src/aiCore/utils/reasoning.ts @@ -382,7 +382,7 @@ function getAnthropicReasoningParams(assistant: Assistant, model: Model): Record return { thinking: { type: 'enabled', - budget_tokens: budgetTokens + budgetTokens: budgetTokens } } }