From da84f32a14209c201b75138b0bc027ef6ad65973 Mon Sep 17 00:00:00 2001 From: kaylieee Date: Tue, 24 Mar 2026 17:16:15 -0700 Subject: [PATCH 1/3] move responsesutils to responsesclient --- sdk/ai/azure-ai-agents/README.md | 2 +- .../checkstyle-suppressions.xml | 1 - .../com/azure/ai/agents/ResponsesClient.java | 12 ++++++++ .../com/azure/ai/agents/ResponsesUtils.java | 29 ------------------- .../CreateResponseWithStructuredInput.java | 2 +- .../com/azure/ai/agents/ReadmeSamples.java | 2 +- 6 files changed, 15 insertions(+), 33 deletions(-) delete mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesUtils.java diff --git a/sdk/ai/azure-ai-agents/README.md b/sdk/ai/azure-ai-agents/README.md index f2082003c780..82dd030ef00d 100644 --- a/sdk/ai/azure-ai-agents/README.md +++ b/sdk/ai/azure-ai-agents/README.md @@ -211,7 +211,7 @@ Response response = responsesClient.createAzureResponse( new AzureCreateResponseOptions().setAgentReference(agentReference), ResponseCreateParams.builder().conversation(conversation.id())); // To extract Azure-specific response details: -AzureCreateResponseDetails azureResults = ResponsesUtils.getAzureFields(response); +AzureCreateResponseDetails azureResults = ResponsesClient.getAzureFields(response); ``` ### Using Agent tools diff --git a/sdk/ai/azure-ai-agents/checkstyle-suppressions.xml b/sdk/ai/azure-ai-agents/checkstyle-suppressions.xml index 822556d23c2a..6eefe865751b 100644 --- a/sdk/ai/azure-ai-agents/checkstyle-suppressions.xml +++ b/sdk/ai/azure-ai-agents/checkstyle-suppressions.xml @@ -17,7 +17,6 @@ - diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java index 73bb2774919a..154a14cecbd3 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java @@ -6,6 +6,7 @@ import com.azure.ai.agents.implementation.OpenAIJsonHelper; import com.azure.ai.agents.implementation.StreamingUtils; +import com.azure.ai.agents.models.AzureCreateResponseDetails; import com.azure.ai.agents.models.AzureCreateResponseOptions; import com.azure.core.annotation.ServiceClient; import com.azure.core.annotation.ServiceMethod; @@ -84,4 +85,15 @@ public IterableStream createStreamingAzureResponse(AzureCre return StreamingUtils.toIterableStream(this.responseService.createStreaming(params.build())); } + /** + * Extracts Azure-specific fields from a Response's additional properties. + * + * @param response the OpenAI response. + * @return the Azure-specific create response result, or null if not present. + */ + public static AzureCreateResponseDetails getAzureFields(Response response) { + return OpenAIJsonHelper.fromAdditionalProperties(response._additionalProperties(), + AzureCreateResponseDetails::fromJson); + } + } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesUtils.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesUtils.java deleted file mode 100644 index 246fb24cab2f..000000000000 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesUtils.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents; - -import com.azure.ai.agents.implementation.OpenAIJsonHelper; -import com.azure.ai.agents.models.AzureCreateResponseDetails; -import com.openai.models.responses.Response; - -/** - * Utility methods for working with Azure-specific response properties. - */ -public final class ResponsesUtils { - - private ResponsesUtils() { - // utility class, prevent instantiation - } - - /** - * Extracts Azure-specific fields from a Response's additional properties. - * - * @param response the OpenAI response. - * @return the Azure-specific create response result, or null if not present. - */ - public static AzureCreateResponseDetails getAzureFields(Response response) { - return OpenAIJsonHelper.fromAdditionalProperties(response._additionalProperties(), - AzureCreateResponseDetails::fromJson); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/CreateResponseWithStructuredInput.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/CreateResponseWithStructuredInput.java index 6604b62e81c7..091e0deb77f6 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/CreateResponseWithStructuredInput.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/CreateResponseWithStructuredInput.java @@ -73,7 +73,7 @@ public static void main(String[] args) { System.out.println("Response model: " + response.model()); // Extract Azure-specific fields from the response - AzureCreateResponseDetails azureResult = ResponsesUtils.getAzureFields(response); + AzureCreateResponseDetails azureResult = ResponsesClient.getAzureFields(response); if (azureResult != null && azureResult.getAgentReference() != null) { AgentReference ref = azureResult.getAgentReference(); System.out.println("Azure agent_reference.type: " + ref.getType()); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/ReadmeSamples.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/ReadmeSamples.java index e736f1e91493..2716e412f5ea 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/ReadmeSamples.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/ReadmeSamples.java @@ -63,7 +63,7 @@ public void readmeSamples() { new AzureCreateResponseOptions().setAgentReference(agentReference), ResponseCreateParams.builder().conversation(conversation.id())); // To extract Azure-specific response details: - AzureCreateResponseDetails azureResults = ResponsesUtils.getAzureFields(response); + AzureCreateResponseDetails azureResults = ResponsesClient.getAzureFields(response); // END: com.azure.ai.agents.create_response // BEGIN: com.azure.ai.agents.openai_official_library From 81dfb0967651c11d480bccd7f56fb6de4a3fead4 Mon Sep 17 00:00:00 2001 From: kaylieee Date: Tue, 24 Mar 2026 17:17:27 -0700 Subject: [PATCH 2/3] update changelog --- sdk/ai/azure-ai-agents/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/ai/azure-ai-agents/CHANGELOG.md b/sdk/ai/azure-ai-agents/CHANGELOG.md index 2f0061332f8f..7d8b650d0bd0 100644 --- a/sdk/ai/azure-ai-agents/CHANGELOG.md +++ b/sdk/ai/azure-ai-agents/CHANGELOG.md @@ -25,6 +25,7 @@ - `deleteMemoryStore(String)` on `MemoryStoresClient` now returns `void` instead of `DeleteMemoryStoreResult`. The corresponding async method on `MemoryStoresAsyncClient` now returns `Mono` instead of `Mono`. - `deleteScope(String, String)` on `MemoryStoresClient` now returns `void` instead of `MemoryStoreDeleteScopeResponse`. The corresponding async method on `MemoryStoresAsyncClient` now returns `Mono` instead of `Mono`. - `DeleteMemoryStoreResult` and `MemoryStoreDeleteScopeResponse` removed from `com.azure.ai.agents.models` and are no longer part of the public API. +- `ResponsesUtils` class has been removed. Use `ResponsesClient.getAzureFields(Response)` instead of `ResponsesUtils.getAzureFields(Response)` to extract Azure-specific fields from a response. ### Bugs Fixed From ac8992252b7fee1b4caccdac8ce7e71820c71101 Mon Sep 17 00:00:00 2001 From: kaylieee Date: Tue, 24 Mar 2026 17:30:58 -0700 Subject: [PATCH 3/3] add error handling --- .../src/main/java/com/azure/ai/agents/ResponsesClient.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java index 154a14cecbd3..65b11e26e25a 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ResponsesClient.java @@ -92,6 +92,7 @@ public IterableStream createStreamingAzureResponse(AzureCre * @return the Azure-specific create response result, or null if not present. */ public static AzureCreateResponseDetails getAzureFields(Response response) { + Objects.requireNonNull(response, "response cannot be null"); return OpenAIJsonHelper.fromAdditionalProperties(response._additionalProperties(), AzureCreateResponseDetails::fromJson); }