From 43e6c73b20eac1f69ceba4c22d0d7131096e2a11 Mon Sep 17 00:00:00 2001 From: Shawn Fang Date: Tue, 1 Apr 2025 17:46:11 -0700 Subject: [PATCH 1/6] response url support --- .../com/openai/azure/HttpRequestBuilderExtensions.kt | 7 +++++-- .../com/openai/services/blocking/ResponseServiceImpl.kt | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt b/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt index 2530d3a2..eed67e65 100644 --- a/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt +++ b/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt @@ -10,8 +10,11 @@ internal fun HttpRequest.Builder.addPathSegmentsForAzure( clientOptions: ClientOptions, deploymentModel: String?, ): HttpRequest.Builder = apply { - if (isAzureEndpoint(clientOptions.baseUrl) && deploymentModel != null) { - addPathSegments("openai", "deployments", deploymentModel) + if (isAzureEndpoint(clientOptions.baseUrl)) { + addPathSegment("openai") + if (deploymentModel != null) { + addPathSegments("deployments", deploymentModel) + } } } diff --git a/openai-java-core/src/main/kotlin/com/openai/services/blocking/ResponseServiceImpl.kt b/openai-java-core/src/main/kotlin/com/openai/services/blocking/ResponseServiceImpl.kt index 22f1b79f..b683a7d6 100644 --- a/openai-java-core/src/main/kotlin/com/openai/services/blocking/ResponseServiceImpl.kt +++ b/openai-java-core/src/main/kotlin/com/openai/services/blocking/ResponseServiceImpl.kt @@ -90,7 +90,7 @@ class ResponseServiceImpl internal constructor(private val clientOptions: Client .addPathSegments("responses") .body(json(clientOptions.jsonMapper, params._body())) .build() - .prepare(clientOptions, params, deploymentModel = params.model().toString()) + .prepare(clientOptions, params, deploymentModel = null) val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) val response = clientOptions.httpClient.execute(request, requestOptions) return response.parseable { @@ -128,7 +128,7 @@ class ResponseServiceImpl internal constructor(private val clientOptions: Client ) ) .build() - .prepare(clientOptions, params, deploymentModel = params.model().toString()) + .prepare(clientOptions, params, deploymentModel = null) val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) val response = clientOptions.httpClient.execute(request, requestOptions) return response.parseable { From ac1a4f2d43147d0cc55ba691241dbdfb42bf1707 Mon Sep 17 00:00:00 2001 From: Shawn Fang Date: Thu, 3 Apr 2025 13:02:42 -0700 Subject: [PATCH 2/6] add the missing azureServiceVersion param --- .../src/main/kotlin/com/openai/core/ClientOptions.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt b/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt index d81875f2..19ee6cfa 100644 --- a/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt +++ b/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt @@ -35,6 +35,7 @@ private constructor( @get:JvmName("timeout") val timeout: Timeout, @get:JvmName("maxRetries") val maxRetries: Int, @get:JvmName("credential") val credential: Credential, + @get:JvmName("azureServiceVersion") val azureServiceVersion: AzureOpenAIServiceVersion?, private val organization: String?, private val project: String?, ) { @@ -104,6 +105,7 @@ private constructor( credential = clientOptions.credential organization = clientOptions.organization project = clientOptions.project + azureServiceVersion = clientOptions.azureServiceVersion } fun httpClient(httpClient: HttpClient) = apply { this.httpClient = httpClient } @@ -350,6 +352,7 @@ private constructor( timeout, maxRetries, credential, + azureServiceVersion, organization, project, ) From a1bd63b46714e25da2111bdc7aa24d99fdbe5588 Mon Sep 17 00:00:00 2001 From: Shawn Fang Date: Thu, 3 Apr 2025 13:31:21 -0700 Subject: [PATCH 3/6] add new Azure OpenAI service API version --- .../main/kotlin/com/openai/azure/AzureOpenAIServiceVersion.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openai-java-core/src/main/kotlin/com/openai/azure/AzureOpenAIServiceVersion.kt b/openai-java-core/src/main/kotlin/com/openai/azure/AzureOpenAIServiceVersion.kt index e83b6ebc..3b08766f 100644 --- a/openai-java-core/src/main/kotlin/com/openai/azure/AzureOpenAIServiceVersion.kt +++ b/openai-java-core/src/main/kotlin/com/openai/azure/AzureOpenAIServiceVersion.kt @@ -17,7 +17,7 @@ class AzureOpenAIServiceVersion private constructor(@get:JvmName("value") val va @JvmStatic fun latestPreviewVersion(): AzureOpenAIServiceVersion { // We can update the value every preview announcement. - return V2025_01_01_PREVIEW + return V2025_03_01_PREVIEW } @JvmStatic @@ -41,6 +41,8 @@ class AzureOpenAIServiceVersion private constructor(@get:JvmName("value") val va @JvmStatic val V2024_10_01_PREVIEW = fromString("2024-10-01-preview") @JvmStatic val V2024_12_01_PREVIEW = fromString("2024-12-01-preview") @JvmStatic val V2025_01_01_PREVIEW = fromString("2025-01-01-preview") + @JvmStatic val V2025_02_01_PREVIEW = fromString("2025-02-01-preview") + @JvmStatic val V2025_03_01_PREVIEW = fromString("2025-03-01-preview") } override fun equals(other: Any?): Boolean = From 1ac37f0b4862724301e0bebae71221f30b3a9958 Mon Sep 17 00:00:00 2001 From: Shawn Fang Date: Thu, 3 Apr 2025 14:57:19 -0700 Subject: [PATCH 4/6] update async client as well --- .../com/openai/services/async/ResponseServiceAsyncImpl.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt b/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt index 1630bd57..8a652601 100644 --- a/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt +++ b/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt @@ -106,7 +106,7 @@ class ResponseServiceAsyncImpl internal constructor(private val clientOptions: C .prepareAsync( clientOptions, params, - deploymentModel = params.model().toString(), + deploymentModel = null, ) val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) return request @@ -151,7 +151,7 @@ class ResponseServiceAsyncImpl internal constructor(private val clientOptions: C .prepareAsync( clientOptions, params, - deploymentModel = params.model().toString(), + deploymentModel = null, ) val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) return request From 959edd0245b15e4770156fdf46f0969b78a9250b Mon Sep 17 00:00:00 2001 From: Shawn Fang Date: Thu, 3 Apr 2025 15:16:47 -0700 Subject: [PATCH 5/6] Spotless: format --- .../services/async/ResponseServiceAsyncImpl.kt | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt b/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt index 8a652601..122e68f4 100644 --- a/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt +++ b/openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt @@ -103,11 +103,7 @@ class ResponseServiceAsyncImpl internal constructor(private val clientOptions: C .addPathSegments("responses") .body(json(clientOptions.jsonMapper, params._body())) .build() - .prepareAsync( - clientOptions, - params, - deploymentModel = null, - ) + .prepareAsync(clientOptions, params, deploymentModel = null) val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) return request .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } @@ -148,11 +144,7 @@ class ResponseServiceAsyncImpl internal constructor(private val clientOptions: C ) ) .build() - .prepareAsync( - clientOptions, - params, - deploymentModel = null, - ) + .prepareAsync(clientOptions, params, deploymentModel = null) val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) return request .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } From 29cb8999cce93d28cc7426424cf6b5186650f294 Mon Sep 17 00:00:00 2001 From: Shawn Fang Date: Thu, 3 Apr 2025 20:37:54 -0700 Subject: [PATCH 6/6] address feedbacks --- .../kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt | 4 +--- .../src/main/kotlin/com/openai/core/ClientOptions.kt | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt b/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt index eed67e65..90511d49 100644 --- a/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt +++ b/openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt @@ -12,9 +12,7 @@ internal fun HttpRequest.Builder.addPathSegmentsForAzure( ): HttpRequest.Builder = apply { if (isAzureEndpoint(clientOptions.baseUrl)) { addPathSegment("openai") - if (deploymentModel != null) { - addPathSegments("deployments", deploymentModel) - } + deploymentModel?.let { addPathSegments("deployments", it) } } } diff --git a/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt b/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt index 19ee6cfa..419073d7 100644 --- a/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt +++ b/openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt @@ -103,9 +103,9 @@ private constructor( timeout = clientOptions.timeout maxRetries = clientOptions.maxRetries credential = clientOptions.credential + azureServiceVersion = clientOptions.azureServiceVersion organization = clientOptions.organization project = clientOptions.project - azureServiceVersion = clientOptions.azureServiceVersion } fun httpClient(httpClient: HttpClient) = apply { this.httpClient = httpClient }