From 07360b8f7ea8fa0faa4892b717cccb47d507d5af Mon Sep 17 00:00:00 2001 From: ripark Date: Thu, 23 Jan 2025 10:29:43 -0800 Subject: [PATCH 1/2] customRequireNoError for all ChatCompletions calls - it's now tolerant of throttling. --- sdk/ai/azopenai/client_chat_completions_test.go | 13 ++++++------- sdk/ai/azopenai/client_functions_test.go | 4 ++-- sdk/ai/azopenai/client_shared_test.go | 6 ------ 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/sdk/ai/azopenai/client_chat_completions_test.go b/sdk/ai/azopenai/client_chat_completions_test.go index 1090d94112d6..398c680c6761 100644 --- a/sdk/ai/azopenai/client_chat_completions_test.go +++ b/sdk/ai/azopenai/client_chat_completions_test.go @@ -90,8 +90,7 @@ func TestClient_GetChatCompletions(t *testing.T) { } resp, err := client.GetChatCompletions(context.Background(), newTestChatCompletionOptions(deployment), nil) - skipNowIfThrottled(t, err) - require.NoError(t, err) + customRequireNoError(t, err, true) require.NotEmpty(t, resp.ID) require.NotEmpty(t, resp.Created) @@ -173,7 +172,7 @@ func TestClient_GetChatCompletions_LogProbs(t *testing.T) { } resp, err := client.GetChatCompletions(context.Background(), opts, nil) - require.NoError(t, err) + customRequireNoError(t, err, true) for _, choice := range resp.Choices { require.NotEmpty(t, choice.LogProbs) @@ -221,7 +220,7 @@ func TestClient_GetChatCompletions_LogitBias(t *testing.T) { } resp, err := client.GetChatCompletions(context.Background(), opts, nil) - require.NoError(t, err) + customRequireNoError(t, err, true) for _, choice := range resp.Choices { if choice.Message == nil || choice.Message.Content == nil { @@ -394,7 +393,7 @@ func TestGetChatCompletions_usingResponseFormatForJSON(t *testing.T) { } resp, err := chatClient.GetChatCompletions(context.Background(), body, nil) - require.NoError(t, err) + customRequireNoError(t, err, true) // validate that it came back as JSON data var v any @@ -536,7 +535,7 @@ func TestGetChatCompletions_StructuredOutputs(t *testing.T) { }, }, }, nil) - require.NoError(t, err) + customRequireNoError(t, err, true) // and now the results should contain proper JSON for the arguments, every time. fn := resp.Choices[0].Message.ToolCalls[0].(*azopenai.ChatCompletionsFunctionToolCall).Function @@ -619,7 +618,7 @@ func TestGetChatCompletions_StructuredOutputsResponseFormat(t *testing.T) { }, }, }, nil) - require.NoError(t, err) + customRequireNoError(t, err, true) jsonText := *resp.Choices[0].Message.Content diff --git a/sdk/ai/azopenai/client_functions_test.go b/sdk/ai/azopenai/client_functions_test.go index 7c317cf9de41..72a8e8b67f97 100644 --- a/sdk/ai/azopenai/client_functions_test.go +++ b/sdk/ai/azopenai/client_functions_test.go @@ -59,7 +59,7 @@ func TestGetChatCompletions_usingFunctions(t *testing.T) { } resp, err := chatClient.GetChatCompletions(context.Background(), body, nil) - require.NoError(t, err) + customRequireNoError(t, err, true) funcCall := resp.Choices[0].Message.ToolCalls[0].(*azopenai.ChatCompletionsFunctionToolCall).Function @@ -166,7 +166,7 @@ func TestGetChatCompletions_usingFunctions_legacy(t *testing.T) { } resp, err := client.GetChatCompletions(context.Background(), body, nil) - require.NoError(t, err) + customRequireNoError(t, err, true) funcCall := resp.ChatCompletions.Choices[0].Message.FunctionCall diff --git a/sdk/ai/azopenai/client_shared_test.go b/sdk/ai/azopenai/client_shared_test.go index 6164e45b28cc..92d34dc23230 100644 --- a/sdk/ai/azopenai/client_shared_test.go +++ b/sdk/ai/azopenai/client_shared_test.go @@ -382,12 +382,6 @@ func getEndpoint(ev string, azure bool) string { return v } -func skipNowIfThrottled(t *testing.T, err error) { - if respErr := (*azcore.ResponseError)(nil); errors.As(err, &respErr) && respErr.StatusCode == http.StatusTooManyRequests { - t.Skipf("OpenAI resource overloaded, skipping this test") - } -} - type mimeTypeRecordingPolicy struct{} // Do changes out the boundary for a multipart message. This makes it simpler to write From 5726d70bb532d638188755981f7c67dc5714afe7 Mon Sep 17 00:00:00 2001 From: ripark Date: Thu, 23 Jan 2025 11:36:08 -0800 Subject: [PATCH 2/2] Missed a few spots using the old version of customRequireNoError --- sdk/ai/azopenai/client_completions_test.go | 3 +-- sdk/ai/azopenai/custom_client_test.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/sdk/ai/azopenai/client_completions_test.go b/sdk/ai/azopenai/client_completions_test.go index cd1bcd9effd2..65907e21728a 100644 --- a/sdk/ai/azopenai/client_completions_test.go +++ b/sdk/ai/azopenai/client_completions_test.go @@ -25,8 +25,7 @@ func TestClient_GetCompletions(t *testing.T) { Temperature: to.Ptr(float32(0.0)), DeploymentName: &epm.Model, }, nil) - skipNowIfThrottled(t, err) - require.NoError(t, err) + customRequireNoError(t, err, true) // we'll do a general check here - as models change the answers can also change, token usages are different, // etc... So we'll just make sure data is coming back and is reasonable. diff --git a/sdk/ai/azopenai/custom_client_test.go b/sdk/ai/azopenai/custom_client_test.go index e31d70658d31..ea97e627d774 100644 --- a/sdk/ai/azopenai/custom_client_test.go +++ b/sdk/ai/azopenai/custom_client_test.go @@ -31,8 +31,7 @@ func TestGetCompletionsStream(t *testing.T) { client := newTestClient(t, epm.Endpoint) response, err := client.GetCompletionsStream(context.TODO(), body, nil) - skipNowIfThrottled(t, err) - require.NoError(t, err) + customRequireNoError(t, err, true) if err != nil { t.Errorf("Client.GetCompletionsStream() error = %v", err)