diff --git a/packages/openai-adapters/src/apis/OpenAI.ts b/packages/openai-adapters/src/apis/OpenAI.ts index d0f8d30ca3a..3ff2a33cc96 100644 --- a/packages/openai-adapters/src/apis/OpenAI.ts +++ b/packages/openai-adapters/src/apis/OpenAI.ts @@ -44,6 +44,10 @@ export class OpenAIApi implements BaseLlmApi { // Necessary because `new OpenAI()` will throw an error if there is no API Key apiKey: config.apiKey ?? "", baseURL: this.apiBase, + defaultHeaders: { + "openai-organization": undefined, + "openai-project": undefined, + }, fetch: customFetch(config.requestOptions), timeout: config?.requestOptions?.timeout || undefined, }); diff --git a/packages/openai-adapters/src/test/main.test.ts b/packages/openai-adapters/src/test/main.test.ts index 8a10c8b727f..300d1101e6c 100644 --- a/packages/openai-adapters/src/test/main.test.ts +++ b/packages/openai-adapters/src/test/main.test.ts @@ -235,6 +235,19 @@ describe("Configuration", () => { ); }); + it("should disable optional OpenAI org/project headers with lowercase keys", () => { + const openai = constructLlmApi({ + provider: "openai", + apiKey: "sk-xxx", + apiBase: "https://openrouter.ai/api/v1/", + }) as OpenAIApi; + + expect((openai.openai as any)._options.defaultHeaders).toMatchObject({ + "openai-organization": undefined, + "openai-project": undefined, + }); + }); + it("should configure Inception OpenAI client with correct apiBase and apiKey", () => { const inception = constructLlmApi({ provider: "inception",