fix(azure): stop auto-filling API version from pasted URL

Pasted URLs often contain older API versions (e.g., 2024-05-01-preview) that
are incompatible with the Responses API. The parser now only extracts endpoint
and deployment name, letting the API version default to 2025-04-01-preview.
This commit is contained in:
Hannes Rudolph 2026-02-06 17:41:59 -07:00
parent ae946fa991
commit e462255415
3 changed files with 6 additions and 15 deletions

View file

@ -36,9 +36,6 @@ export const Azure = ({ apiConfiguration, setApiConfigurationField }: AzureProps
if (parsed) {
setApiConfigurationField("azureBaseUrl", parsed.baseUrl)
setApiConfigurationField("azureDeploymentName", parsed.deploymentName)
if (parsed.apiVersion) {
setApiConfigurationField("azureApiVersion", parsed.apiVersion)
}
} else {
setApiConfigurationField("azureBaseUrl", rawValue)
}

View file

@ -1,14 +1,13 @@
import { parseAzureUrl } from "../parseAzureUrl"
describe("parseAzureUrl", () => {
it("parses a full openai.azure.com URL with api-version", () => {
it("parses a full openai.azure.com URL (ignores api-version)", () => {
const result = parseAzureUrl(
"https://my-resource.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",
)
expect(result).toEqual({
baseUrl: "https://my-resource.openai.azure.com/openai",
deploymentName: "gpt-4o",
apiVersion: "2024-10-21",
})
})
@ -19,7 +18,6 @@ describe("parseAzureUrl", () => {
expect(result).toEqual({
baseUrl: "https://my-deployment.cognitiveservices.azure.com/openai",
deploymentName: "gpt-5.2",
apiVersion: "2024-05-01-preview",
})
})
@ -30,7 +28,6 @@ describe("parseAzureUrl", () => {
expect(result).toEqual({
baseUrl: "https://my-resource.services.ai.azure.com/openai",
deploymentName: "my-model",
apiVersion: "2025-01-01",
})
})
@ -57,7 +54,6 @@ describe("parseAzureUrl", () => {
expect(result).toEqual({
baseUrl: "https://my-resource.openai.azure.com/openai",
deploymentName: "gpt-4.turbo.2024",
apiVersion: "2024-10-21",
})
})
@ -68,7 +64,6 @@ describe("parseAzureUrl", () => {
expect(result).toEqual({
baseUrl: "https://my-resource.openai.azure.com/openai",
deploymentName: "my-deploy",
apiVersion: "2024-10-21",
})
})
@ -102,14 +97,13 @@ describe("parseAzureUrl", () => {
})
})
it("handles additional query parameters besides api-version", () => {
it("ignores query parameters including api-version", () => {
const result = parseAzureUrl(
"https://my-resource.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21&extra=param",
)
expect(result).toEqual({
baseUrl: "https://my-resource.openai.azure.com/openai",
deploymentName: "gpt-4o",
apiVersion: "2024-10-21",
})
})
})

View file

@ -3,14 +3,15 @@ export interface ParsedAzureUrl {
baseUrl: string
/** e.g. "gpt-5.2" */
deploymentName: string
/** e.g. "2024-05-01-preview" */
apiVersion?: string
}
/**
* Parses a full Azure OpenAI URL into its components.
* Returns null if the URL doesn't match the expected pattern.
*
* Extracts the base URL and deployment name only the api-version query
* parameter is intentionally ignored so the application default is used.
*
* Supported URL formats:
* - https://{resource}.openai.azure.com/openai/deployments/{deployment}/chat/completions?api-version={ver}
* - https://{resource}.cognitiveservices.azure.com/openai/deployments/{deployment}/responses?api-version={ver}
@ -32,7 +33,6 @@ export function parseAzureUrl(input: string): ParsedAzureUrl | null {
const baseUrl = `${url.origin}${match[1]}`
const deploymentName = decodeURIComponent(match[2])
const apiVersion = url.searchParams.get("api-version") ?? undefined
return { baseUrl, deploymentName, ...(apiVersion !== undefined && { apiVersion }) }
return { baseUrl, deploymentName }
}