From aaa56da614bc14809220242f5c1d01b8f441e265 Mon Sep 17 00:00:00 2001 From: icarus Date: Sat, 30 Aug 2025 02:16:06 +0800 Subject: [PATCH] =?UTF-8?q?refactor(vertexai):=20=E5=B0=86VertexAI?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=A3=80=E6=9F=A5=E4=BB=8EApiClientFactory?= =?UTF-8?q?=E7=A7=BB=E8=87=B3VertexAPIClient?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构VertexAI客户端的配置检查逻辑,将其从工厂类移动到具体的客户端实现类中 --- src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts | 7 ------- .../legacy/clients/__tests__/ApiClientFactory.test.ts | 3 ++- .../src/aiCore/legacy/clients/gemini/VertexAPIClient.ts | 6 +++++- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts b/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts index 4e55905c34..168b749637 100644 --- a/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts +++ b/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts @@ -1,5 +1,4 @@ import { loggerService } from '@logger' -import { isVertexAIConfigured } from '@renderer/hooks/useVertexAI' import { Provider } from '@renderer/types' import { AihubmixAPIClient } from './AihubmixAPIClient' @@ -63,12 +62,6 @@ export class ApiClientFactory { break case 'vertexai': logger.debug(`Creating VertexAPIClient for provider: ${provider.id}`) - // 检查 VertexAI 配置 - if (!isVertexAIConfigured()) { - throw new Error( - 'VertexAI is not configured. Please configure project, location and service account credentials.' - ) - } instance = new VertexAPIClient(provider) as BaseApiClient break case 'anthropic': diff --git a/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts b/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts index 5ec3bf6404..b1618038f0 100644 --- a/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts +++ b/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts @@ -66,7 +66,8 @@ vi.mock('@renderer/config/models', () => ({ SYSTEM_MODELS: { silicon: [], defaultModel: [] - } + }, + isOpenAIModel: vi.fn(() => false) })) describe('ApiClientFactory', () => { diff --git a/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts index d87744805a..37e6677367 100644 --- a/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts @@ -1,6 +1,6 @@ import { GoogleGenAI } from '@google/genai' import { loggerService } from '@logger' -import { createVertexProvider, isVertexProvider } from '@renderer/hooks/useVertexAI' +import { createVertexProvider, isVertexAIConfigured, isVertexProvider } from '@renderer/hooks/useVertexAI' import { Model, Provider, VertexProvider } from '@renderer/types' import { isEmpty } from 'lodash' @@ -16,6 +16,10 @@ export class VertexAPIClient extends GeminiAPIClient { constructor(provider: Provider) { super(provider) + // 检查 VertexAI 配置 + if (!isVertexAIConfigured()) { + throw new Error('VertexAI is not configured. Please configure project, location and service account credentials.') + } this.anthropicVertexClient = new AnthropicVertexClient(provider) // 如果传入的是普通 Provider,转换为 VertexProvider if (isVertexProvider(provider)) {