diff --git a/src/renderer/src/aiCore/clients/AihubmixAPIClient.ts b/src/renderer/src/aiCore/clients/AihubmixAPIClient.ts index b24eea2a2d..541c083e8c 100644 --- a/src/renderer/src/aiCore/clients/AihubmixAPIClient.ts +++ b/src/renderer/src/aiCore/clients/AihubmixAPIClient.ts @@ -42,11 +42,19 @@ export class AihubmixAPIClient extends BaseApiClient { constructor(provider: Provider) { super(provider) + const providerExtraHeaders = { + ...provider, + extra_headers: { + ...provider.extra_headers, + 'APP-Code': 'MLTG2087' + } + } + // 初始化各个client - 现在有类型安全 - const claudeClient = new AnthropicAPIClient(provider) - const geminiClient = new GeminiAPIClient({ ...provider, apiHost: 'https://aihubmix.com/gemini' }) - const openaiClient = new OpenAIResponseAPIClient(provider) - const defaultClient = new OpenAIAPIClient(provider) + const claudeClient = new AnthropicAPIClient(providerExtraHeaders) + const geminiClient = new GeminiAPIClient({ ...providerExtraHeaders, apiHost: 'https://aihubmix.com/gemini' }) + const openaiClient = new OpenAIResponseAPIClient(providerExtraHeaders) + const defaultClient = new OpenAIAPIClient(providerExtraHeaders) this.clients.set('claude', claudeClient) this.clients.set('gemini', geminiClient) diff --git a/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts b/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts index eb7d930c5d..465cdff5ac 100644 --- a/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts +++ b/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts @@ -94,7 +94,8 @@ export class AnthropicAPIClient extends BaseApiClient< baseURL: this.getBaseURL(), dangerouslyAllowBrowser: true, defaultHeaders: { - 'anthropic-beta': 'output-128k-2025-02-19' + 'anthropic-beta': 'output-128k-2025-02-19', + ...this.provider.extra_headers } }) return this.sdkInstance diff --git a/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts b/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts index dd4fb1d516..8cb46143b2 100644 --- a/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts +++ b/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts @@ -176,7 +176,10 @@ export class GeminiAPIClient extends BaseApiClient< apiVersion: this.getApiVersion(), httpOptions: { baseUrl: this.getBaseURL(), - apiVersion: this.getApiVersion() + apiVersion: this.getApiVersion(), + headers: { + ...this.provider.extra_headers + } } }) diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts index 7730f228af..72fa1d7df8 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts @@ -159,6 +159,7 @@ export abstract class OpenAIBaseClient< baseURL: this.getBaseURL(), defaultHeaders: { ...this.defaultHeaders(), + ...this.provider.extra_headers, ...(this.provider.id === 'copilot' ? { 'editor-version': 'vscode/1.97.2' } : {}), ...(this.provider.id === 'copilot' ? { 'copilot-vision-request': 'true' } : {}) } diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts index 1f9af6ca77..a6c49a5cf8 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts @@ -81,7 +81,8 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< apiKey: this.apiKey, baseURL: this.getBaseURL(), defaultHeaders: { - ...this.defaultHeaders() + ...this.defaultHeaders(), + ...this.provider.extra_headers } }) } diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 75e1da19ce..beb93bdf44 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -161,6 +161,7 @@ export type Provider = { isNotSupportArrayContent?: boolean isVertex?: boolean notes?: string + extra_headers?: Record } export type ProviderType =