diff --git a/sdk/openai/azure-ai-openai/src/samples/java/com/azure/ai/openai/responses/ChatbotResponsesSample.java b/sdk/openai/azure-ai-openai/src/samples/java/com/azure/ai/openai/responses/ChatbotResponsesSample.java new file mode 100644 index 000000000000..46728caf11a5 --- /dev/null +++ b/sdk/openai/azure-ai-openai/src/samples/java/com/azure/ai/openai/responses/ChatbotResponsesSample.java @@ -0,0 +1,54 @@ +package com.azure.ai.openai.responses; + +import com.azure.ai.openai.responses.models.CreateResponsesRequest; +import com.azure.ai.openai.responses.models.CreateResponsesRequestModel; +import com.azure.ai.openai.responses.models.ResponsesAssistantMessage; +import com.azure.ai.openai.responses.models.ResponsesInputContentText; +import com.azure.ai.openai.responses.models.ResponsesOutputContentText; +import com.azure.ai.openai.responses.models.ResponsesResponse; +import com.azure.ai.openai.responses.models.ResponsesSystemMessage; +import com.azure.ai.openai.responses.models.ResponsesUserMessage; +import com.azure.core.credential.AzureKeyCredential; +import com.azure.core.util.Configuration; + +import java.util.Arrays; + +public class ChatbotResponsesSample { + public static void main(String[] args) throws InterruptedException { + // Create a client + ResponsesClient client = new ResponsesClientBuilder() + .endpoint(Configuration.getGlobalConfiguration().get("AZURE_OPENAI_ENDPOINT")) + .credential(new AzureKeyCredential(Configuration.getGlobalConfiguration().get("AZURE_OPENAI_KEY"))) + .serviceVersion(AzureResponsesServiceVersion.V2025_03_01_PREVIEW) + .buildClient(); + + String prompt = "Tell me 3 jokes about trains"; + + // Create a request + CreateResponsesRequest request = createJokesRequest(prompt); + + // Send the request and get the response + ResponsesResponse response = client.createResponse(request); + ResponsesAssistantMessage responseMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent = (ResponsesOutputContentText) responseMessage.getContent().get(0); + + // Print the response + System.out.println("Response: " + response); + System.out.println("Jokes: " + outputContent.getText()); + } + + public static CreateResponsesRequest createJokesRequest(String prompt) { + return new CreateResponsesRequest( + CreateResponsesRequestModel.GPT_4O, + Arrays.asList( + new ResponsesSystemMessage(Arrays.asList( + new ResponsesInputContentText("You are a humorous assistant who tells jokes") + )), + new ResponsesUserMessage(Arrays.asList( + new ResponsesInputContentText("Please tell me some jokes about trains"), + new ResponsesInputContentText(prompt) + )) + ) + ); + } +} diff --git a/sdk/openai/azure-ai-openai/src/samples/java/com/azure/ai/openai/responses/SummarizeTextResponsesSample.java b/sdk/openai/azure-ai-openai/src/samples/java/com/azure/ai/openai/responses/SummarizeTextResponsesSample.java new file mode 100644 index 000000000000..44a2e67ecf5f --- /dev/null +++ b/sdk/openai/azure-ai-openai/src/samples/java/com/azure/ai/openai/responses/SummarizeTextResponsesSample.java @@ -0,0 +1,62 @@ +package com.azure.ai.openai.responses; + +import com.azure.ai.openai.responses.models.CreateResponsesRequest; +import com.azure.ai.openai.responses.models.CreateResponsesRequestModel; +import com.azure.ai.openai.responses.models.ResponsesAssistantMessage; +import com.azure.ai.openai.responses.models.ResponsesInputContentText; +import com.azure.ai.openai.responses.models.ResponsesOutputContentText; +import com.azure.ai.openai.responses.models.ResponsesResponse; +import com.azure.ai.openai.responses.models.ResponsesSystemMessage; +import com.azure.ai.openai.responses.models.ResponsesUserMessage; +import com.azure.core.credential.AzureKeyCredential; +import com.azure.core.util.Configuration; + +import java.util.Arrays; + +public class SummarizeTextResponsesSample { + public static void main(String[] args) throws InterruptedException { + // Create a client + ResponsesClient client = new ResponsesClientBuilder() + .endpoint(Configuration.getGlobalConfiguration().get("AZURE_OPENAI_ENDPOINT")) + .credential(new AzureKeyCredential(Configuration.getGlobalConfiguration().get("AZURE_OPENAI_KEY"))) + .serviceVersion(AzureResponsesServiceVersion.V2025_03_01_PREVIEW) + .buildClient(); + + String summarizationPrompt = getSummarizationPrompt(); + + // Create a request + CreateResponsesRequest request = createSummarizationRequest(summarizationPrompt); + + // Send the request and get the response + ResponsesResponse response = client.createResponse(request); + ResponsesAssistantMessage responseMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent = (ResponsesOutputContentText) responseMessage.getContent().get(0); + + // Print the response + System.out.println("Response: " + response); + System.out.println("Summary: " + outputContent.getText()); + } + + public static String getSummarizationPrompt() { + String textToSummarize = "On December 5, 192 giant lasers at the laboratory’s National Ignition Facility blasted a small cylinder about the size of a pencil eraser that contained a frozen nubbin of hydrogen encased in diamond. " + + "The laser beams entered at the top and bottom of the cylinder, vaporizing it. That generated an inward onslaught of X-rays that compresses a BB-size fuel pellet of deuterium and tritium, the heavier forms of hydrogen. " + + "In a brief moment lasting less than 100 trillionths of a second, 2.05 megajoules of energy — roughly the equivalent of a pound of TNT — bombarded the hydrogen pellet. Out flowed a flood of neutron particles — the product of fusion — which carried about 3 megajoules of energy, a factor of 1.5 in energy gain."; + + return "Summarize the following text.%n" + "Text:%n" + textToSummarize + "%n Summary:%n"; + } + + public static CreateResponsesRequest createSummarizationRequest(String summarizationPrompt) { + return new CreateResponsesRequest( + CreateResponsesRequestModel.GPT_4O, + Arrays.asList( + new ResponsesSystemMessage(Arrays.asList( + new ResponsesInputContentText("You are a helpful assistant that summarizes texts") + )), + new ResponsesUserMessage(Arrays.asList( + new ResponsesInputContentText("Please summarize the following text"), + new ResponsesInputContentText(summarizationPrompt) + )) + ) + ); + } +} diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesAsyncTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesAsyncTest.java index acc001376a66..be3a418874ef 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesAsyncTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesAsyncTest.java @@ -7,10 +7,13 @@ import com.azure.ai.openai.responses.models.CreateResponsesRequestIncludable; import com.azure.ai.openai.responses.models.CreateResponsesRequestModel; import com.azure.ai.openai.responses.models.ListInputItemsRequestOrder; +import com.azure.ai.openai.responses.models.ResponsesAssistantMessage; import com.azure.ai.openai.responses.models.ResponsesInputContentText; import com.azure.ai.openai.responses.models.ResponsesResponse; import com.azure.ai.openai.responses.models.ResponsesStreamEventCompleted; import com.azure.ai.openai.responses.models.ResponsesUserMessage; +import com.azure.ai.openai.responses.models.ResponsesOutputContentText; +import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.RequestOptions; import org.junit.jupiter.api.Disabled; @@ -20,8 +23,12 @@ import java.util.Arrays; +import static com.azure.ai.openai.responses.ChatbotResponsesSample.createJokesRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.createSummarizationRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.getSummarizationPrompt; import static com.azure.ai.openai.responses.TestUtils.DISPLAY_NAME_WITH_ARGUMENTS; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -205,4 +212,72 @@ public void chatWithCua(HttpClient httpClient, AzureResponsesServiceVersion serv .verifyComplete(); }); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getAzureResponseAsyncClient(httpClient, serviceVersion); + + String summarizationPrompt = getSummarizationPrompt(); + CreateResponsesRequest request = createSummarizationRequest(summarizationPrompt); + + StepVerifier.create(client.createResponse(request)).assertNext(response -> { + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent + = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + }).verifyComplete(); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getAzureResponseAsyncClient(httpClient, serviceVersion); + + CreateResponsesRequest request = createSummarizationRequest(null); + + StepVerifier.create(client.createResponse(request)).verifyErrorSatisfies(error -> { + assertInstanceOf(HttpResponseException.class, error); + HttpResponseException httpResponseException = (HttpResponseException) error; + assertEquals(400, httpResponseException.getResponse().getStatusCode()); + assertTrue(httpResponseException.getMessage().contains("Missing required parameter")); + }); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getAzureResponseAsyncClient(httpClient, serviceVersion); + + String prompt = "Tell me 3 jokes about trains"; + CreateResponsesRequest request = createJokesRequest(prompt); + + StepVerifier.create(client.createResponse(request)).assertNext(response -> { + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent + = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + }).verifyComplete(); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getAzureResponseAsyncClient(httpClient, serviceVersion); + + CreateResponsesRequest request = createJokesRequest(null); + + StepVerifier.create(client.createResponse(request)).verifyErrorSatisfies(error -> { + assertInstanceOf(HttpResponseException.class, error); + HttpResponseException httpResponseException = (HttpResponseException) error; + assertEquals(400, httpResponseException.getResponse().getStatusCode()); + assertTrue(httpResponseException.getMessage().contains("Missing required parameter")); + }); + } } diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesTest.java index 463e61da69a4..9e3200bfb6d0 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/AzureResponsesTest.java @@ -8,12 +8,15 @@ import com.azure.ai.openai.responses.models.CreateResponsesRequestModel; import com.azure.ai.openai.responses.models.DeleteResponseResponse; import com.azure.ai.openai.responses.models.ListInputItemsRequestOrder; +import com.azure.ai.openai.responses.models.ResponsesAssistantMessage; import com.azure.ai.openai.responses.models.ResponsesInputContentText; import com.azure.ai.openai.responses.models.ResponsesItem; import com.azure.ai.openai.responses.models.ResponsesResponse; import com.azure.ai.openai.responses.models.ResponsesStreamEvent; import com.azure.ai.openai.responses.models.ResponsesStreamEventCompleted; import com.azure.ai.openai.responses.models.ResponsesUserMessage; +import com.azure.ai.openai.responses.models.ResponsesOutputContentText; +import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; import com.azure.core.http.rest.RequestOptions; @@ -24,9 +27,13 @@ import java.util.Arrays; +import static com.azure.ai.openai.responses.ChatbotResponsesSample.createJokesRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.createSummarizationRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.getSummarizationPrompt; import static com.azure.ai.openai.responses.TestUtils.DISPLAY_NAME_WITH_ARGUMENTS; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; public class AzureResponsesTest extends AzureResponsesTestBase { @@ -213,4 +220,66 @@ public void chatWithCua(HttpClient httpClient, AzureResponsesServiceVersion serv assertResponsesResponse(response); }); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getAzureResponseClient(httpClient, serviceVersion); + + String summarizationPrompt = getSummarizationPrompt(); + CreateResponsesRequest request = createSummarizationRequest(summarizationPrompt); + + ResponsesResponse response = client.createResponse(request); + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getAzureResponseClient(httpClient, serviceVersion); + + CreateResponsesRequest request = createSummarizationRequest(null); + + HttpResponseException exception + = assertThrows(HttpResponseException.class, () -> client.createResponse(request)); + + assertEquals(400, exception.getResponse().getStatusCode()); + assertTrue(exception.getMessage().contains("Missing required parameter")); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getAzureResponseClient(httpClient, serviceVersion); + + String prompt = "Tell me 3 jokes about trains"; + CreateResponsesRequest request = createJokesRequest(prompt); + + ResponsesResponse response = client.createResponse(request); + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getAzureResponseClient(httpClient, serviceVersion); + + CreateResponsesRequest request = createJokesRequest(null); + + HttpResponseException exception + = assertThrows(HttpResponseException.class, () -> client.createResponse(request)); + + assertEquals(400, exception.getResponse().getStatusCode()); + assertTrue(exception.getMessage().contains("Missing required parameter")); + } } diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesAsyncTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesAsyncTest.java index 20a81fb10572..8561c80543bf 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesAsyncTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesAsyncTest.java @@ -7,10 +7,13 @@ import com.azure.ai.openai.responses.models.CreateResponsesRequestIncludable; import com.azure.ai.openai.responses.models.CreateResponsesRequestModel; import com.azure.ai.openai.responses.models.ListInputItemsRequestOrder; +import com.azure.ai.openai.responses.models.ResponsesAssistantMessage; import com.azure.ai.openai.responses.models.ResponsesInputContentText; +import com.azure.ai.openai.responses.models.ResponsesOutputContentText; import com.azure.ai.openai.responses.models.ResponsesResponse; import com.azure.ai.openai.responses.models.ResponsesStreamEventCompleted; import com.azure.ai.openai.responses.models.ResponsesUserMessage; +import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.RequestOptions; import org.junit.jupiter.params.ParameterizedTest; @@ -19,10 +22,14 @@ import java.util.Arrays; +import static com.azure.ai.openai.responses.ChatbotResponsesSample.createJokesRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.createSummarizationRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.getSummarizationPrompt; import static com.azure.ai.openai.responses.TestUtils.DISPLAY_NAME_WITH_ARGUMENTS; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; public class ResponsesAsyncTest extends AzureResponsesTestBase { @@ -203,4 +210,72 @@ public void chatWithCua(HttpClient httpClient, AzureResponsesServiceVersion serv .verifyComplete(); }); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getResponseAsyncClient(httpClient); + + String summarizationPrompt = getSummarizationPrompt(); + CreateResponsesRequest request = createSummarizationRequest(summarizationPrompt); + + StepVerifier.create(client.createResponse(request)).assertNext(response -> { + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent + = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + }).verifyComplete(); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getResponseAsyncClient(httpClient); + + CreateResponsesRequest request = createSummarizationRequest(null); + + StepVerifier.create(client.createResponse(request)).verifyErrorSatisfies(error -> { + assertInstanceOf(HttpResponseException.class, error); + HttpResponseException httpResponseException = (HttpResponseException) error; + assertEquals(400, httpResponseException.getResponse().getStatusCode()); + assertTrue(httpResponseException.getMessage().contains("Missing required parameter")); + }); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getResponseAsyncClient(httpClient); + + String prompt = "Tell me 3 jokes about trains"; + CreateResponsesRequest request = createJokesRequest(prompt); + + StepVerifier.create(client.createResponse(request)).assertNext(response -> { + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent + = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + }).verifyComplete(); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesAsyncClient client = getResponseAsyncClient(httpClient); + + CreateResponsesRequest request = createJokesRequest(null); + + StepVerifier.create(client.createResponse(request)).verifyErrorSatisfies(error -> { + assertInstanceOf(HttpResponseException.class, error); + HttpResponseException httpResponseException = (HttpResponseException) error; + assertEquals(400, httpResponseException.getResponse().getStatusCode()); + assertTrue(httpResponseException.getMessage().contains("Missing required parameter")); + }); + } } diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesTest.java index 50e6176041be..2db2cab161b1 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/responses/ResponsesTest.java @@ -8,12 +8,15 @@ import com.azure.ai.openai.responses.models.CreateResponsesRequestModel; import com.azure.ai.openai.responses.models.DeleteResponseResponse; import com.azure.ai.openai.responses.models.ListInputItemsRequestOrder; +import com.azure.ai.openai.responses.models.ResponsesAssistantMessage; import com.azure.ai.openai.responses.models.ResponsesInputContentText; +import com.azure.ai.openai.responses.models.ResponsesOutputContentText; import com.azure.ai.openai.responses.models.ResponsesItem; import com.azure.ai.openai.responses.models.ResponsesResponse; import com.azure.ai.openai.responses.models.ResponsesStreamEvent; import com.azure.ai.openai.responses.models.ResponsesStreamEventCompleted; import com.azure.ai.openai.responses.models.ResponsesUserMessage; +import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; import com.azure.core.http.rest.RequestOptions; @@ -23,10 +26,14 @@ import java.util.Arrays; +import static com.azure.ai.openai.responses.ChatbotResponsesSample.createJokesRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.createSummarizationRequest; +import static com.azure.ai.openai.responses.SummarizeTextResponsesSample.getSummarizationPrompt; import static com.azure.ai.openai.responses.TestUtils.DISPLAY_NAME_WITH_ARGUMENTS; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; public class ResponsesTest extends AzureResponsesTestBase { @@ -211,4 +218,66 @@ public void chatWithCua(HttpClient httpClient, AzureResponsesServiceVersion serv assertResponsesResponse(response); }); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getResponseClient(httpClient); + + String summarizationPrompt = getSummarizationPrompt(); + CreateResponsesRequest request = createSummarizationRequest(summarizationPrompt); + + ResponsesResponse response = client.createResponse(request); + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testSummarizeTextResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getResponseClient(httpClient); + + CreateResponsesRequest request = createSummarizationRequest(null); + + HttpResponseException exception + = assertThrows(HttpResponseException.class, () -> client.createResponse(request)); + + assertEquals(400, exception.getResponse().getStatusCode()); + assertTrue(exception.getMessage().contains("Missing required parameter")); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesSuccess(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getResponseClient(httpClient); + + String prompt = "Tell me 3 jokes about trains"; + CreateResponsesRequest request = createJokesRequest(prompt); + + ResponsesResponse response = client.createResponse(request); + ResponsesAssistantMessage assistantMessage = (ResponsesAssistantMessage) response.getOutput().get(0); + ResponsesOutputContentText outputContent = (ResponsesOutputContentText) assistantMessage.getContent().get(0); + + assertNotNull(assistantMessage); + assertNotNull(outputContent); + assertNotNull(outputContent.getText()); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.responses.TestUtils#getTestParametersResponses") + public void testChatbotResponsesFailure(HttpClient httpClient, AzureResponsesServiceVersion serviceVersion) { + ResponsesClient client = getResponseClient(httpClient); + + CreateResponsesRequest request = createJokesRequest(null); + + HttpResponseException exception + = assertThrows(HttpResponseException.class, () -> client.createResponse(request)); + + assertEquals(400, exception.getResponse().getStatusCode()); + assertTrue(exception.getMessage().contains("Missing required parameter")); + } }