From 658921af88a00c3ac37070d5cfce24fea9bab2ff Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 30 Oct 2025 19:57:03 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=97=20fix:=20Provided=20Azure=20Base?= =?UTF-8?q?=20URL=20Construction=20for=20Responses=20API=20(#10289)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: response api works with azure base url configured * add unit test --------- Co-authored-by: Peter Rothlaender --- .../api/src/endpoints/openai/config.spec.ts | 21 +++++++++++++++++++ packages/api/src/endpoints/openai/config.ts | 4 +++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/api/src/endpoints/openai/config.spec.ts b/packages/api/src/endpoints/openai/config.spec.ts index 8a8e3be07b..b1faac9012 100644 --- a/packages/api/src/endpoints/openai/config.spec.ts +++ b/packages/api/src/endpoints/openai/config.spec.ts @@ -737,6 +737,27 @@ describe('getOpenAIConfig', () => { ).toBeUndefined(); }); + it('should create correct Azure baseURL when response api is selected', () => { + const azure = { + azureOpenAIApiInstanceName: 'test-instance', + azureOpenAIApiDeploymentName: 'test-deployment', + azureOpenAIApiVersion: '2023-08-15', + azureOpenAIApiKey: 'azure-key', + }; + + const result = getOpenAIConfig(mockApiKey, { + azure, + modelOptions: { useResponsesApi: true }, + reverseProxyUrl: + 'https://${INSTANCE_NAME}.openai.azure.com/openai/deployments/${DEPLOYMENT_NAME}', + }); + + expect(result.configOptions?.baseURL).toBe( + 'https://test-instance.openai.azure.com/openai/v1', + ); + expect(result.configOptions?.baseURL).not.toContain('deployments'); + }); + it('should handle Azure with organization from environment', () => { const originalOrg = process.env.OPENAI_ORGANIZATION; process.env.OPENAI_ORGANIZATION = 'test-org-123'; diff --git a/packages/api/src/endpoints/openai/config.ts b/packages/api/src/endpoints/openai/config.ts index d137735552..0f586d45bc 100644 --- a/packages/api/src/endpoints/openai/config.ts +++ b/packages/api/src/endpoints/openai/config.ts @@ -113,8 +113,10 @@ export function getOpenAIConfig( return; } + const updatedUrl = configOptions.baseURL?.replace(/\/deployments(?:\/.*)?$/, '/v1'); + configOptions.baseURL = constructAzureURL({ - baseURL: configOptions.baseURL || 'https://${INSTANCE_NAME}.openai.azure.com/openai/v1', + baseURL: updatedUrl || 'https://${INSTANCE_NAME}.openai.azure.com/openai/v1', azureOptions: azure, });