From 43dff802110102cb9348674051de6f68811d318a Mon Sep 17 00:00:00 2001 From: Pleasure1234 <3196812536@qq.com> Date: Thu, 16 Oct 2025 17:20:33 +0100 Subject: [PATCH] fix: ensure API key rotation for each request (#10776) Updated ModernAiProvider to regenerate config on every request, ensuring API key rotation is effective. Refactored BaseApiClient to use an API key getter for dynamic key retrieval, supporting key rotation when multiple keys are configured. --- src/renderer/src/aiCore/index_new.ts | 6 ++---- .../src/aiCore/legacy/clients/BaseApiClient.ts | 10 ++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index 0225d15d26..57e52d4f11 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -83,10 +83,8 @@ export default class ModernAiProvider { throw new Error('Model is required for completions. Please use constructor with model parameter.') } - // 确保配置存在 - if (!this.config) { - this.config = providerToAiSdkConfig(this.actualProvider, this.model) - } + // 每次请求时重新生成配置以确保API key轮换生效 + this.config = providerToAiSdkConfig(this.actualProvider, this.model) // 准备特殊配置 await prepareSpecialProviderConfig(this.actualProvider, this.config) diff --git a/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts b/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts index 9fb687a265..4a41db7c97 100644 --- a/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts @@ -70,13 +70,19 @@ export abstract class BaseApiClient< { public provider: Provider protected host: string - protected apiKey: string protected sdkInstance?: TSdkInstance constructor(provider: Provider) { this.provider = provider this.host = this.getBaseURL() - this.apiKey = this.getApiKey() + } + + /** + * Get the current API key with rotation support + * This getter ensures API keys rotate on each access when multiple keys are configured + */ + protected get apiKey(): string { + return this.getApiKey() } /**