Skip to content

Commit

Permalink
[azopenai] Fixing issue where content filtering being non-determinist…
Browse files Browse the repository at this point in the history
…ic is making tests fail. (#23490)

* Fixing issue where content filtering being non-deterministic is making our tests flaky.
* Allowing throttling in another oversubscribed test.
  • Loading branch information
richardpark-msft authored Sep 25, 2024
1 parent 3aa2c46 commit 07eaf8f
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 17 deletions.
4 changes: 2 additions & 2 deletions sdk/ai/azopenai/client_chat_completions_extensions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func TestChatCompletions_extensions_bringYourOwnData(t *testing.T) {
},
DeploymentName: &azureOpenAI.ChatCompletionsOYD.Model,
}, nil)
require.NoError(t, err)
customRequireNoError(t, err, true)
require.NotEmpty(t, resp)

msgContext := resp.Choices[0].Message.Context
Expand All @@ -54,7 +54,7 @@ func TestChatExtensionsStreaming_extensions_bringYourOwnData(t *testing.T) {
DeploymentName: &azureOpenAI.ChatCompletionsOYD.Model,
}, nil)

require.NoError(t, err)
customRequireNoError(t, err, true)
defer streamResp.ChatCompletionsStream.Close()

text := ""
Expand Down
23 changes: 8 additions & 15 deletions sdk/ai/azopenai/client_chat_completions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,22 +68,21 @@ func TestClient_GetChatCompletions(t *testing.T) {
skipNowIfThrottled(t, err)
require.NoError(t, err)

if checkRAI {
// Azure also provides content-filtering. This particular prompt and responses
// will be considered safe.
expected.PromptFilterResults = []azopenai.ContentFilterResultsForPrompt{
{PromptIndex: to.Ptr[int32](0), ContentFilterResults: safeContentFilterResultDetailsForPrompt},
}
expected.Choices[0].ContentFilterResults = safeContentFilter
}

require.NotEmpty(t, resp.ID)
require.NotEmpty(t, resp.Created)

expected.ID = resp.ID
expected.Created = resp.Created

t.Logf("isAzure: %t, deployment: %s, returnedModel: %s", checkRAI, deployment, *resp.ChatCompletions.Model)

// Content filtering results are proving too difficult to make predictable.
resp.ChatCompletions.PromptFilterResults = nil

for i := 0; i < len(resp.ChatCompletions.Choices); i++ {
resp.ChatCompletions.Choices[i].ContentFilterResults = nil
}

require.Equal(t, expected, resp.ChatCompletions)
}

Expand Down Expand Up @@ -240,12 +239,6 @@ func TestClient_GetChatCompletionsStream(t *testing.T) {

require.NoError(t, err)

if completion.PromptFilterResults != nil {
require.Equal(t, []azopenai.ContentFilterResultsForPrompt{
{PromptIndex: to.Ptr[int32](0), ContentFilterResults: safeContentFilterResultDetailsForPrompt},
}, completion.PromptFilterResults)
}

if len(completion.Choices) == 0 {
// you can get empty entries that contain just metadata (ie, prompt annotations)
continue
Expand Down
5 changes: 5 additions & 0 deletions sdk/ai/azopenai/client_rai_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/internal/recording"
"github.com/stretchr/testify/require"
)

Expand All @@ -36,6 +37,9 @@ func TestClient_GetCompletions_AzureOpenAI_ContentFilter_Response(t *testing.T)
}

func TestClient_GetChatCompletions_AzureOpenAI_ContentFilterWithError(t *testing.T) {
if recording.GetRecordMode() != recording.PlaybackMode {
t.Skip("Skipping content filter test in live/record mode. Content filtering isn't easily triggerable.")
}
client := newTestClient(t, azureOpenAI.ChatCompletionsRAI.Endpoint)

resp, err := client.GetChatCompletions(context.Background(), azopenai.ChatCompletionsOptions{
Expand All @@ -47,6 +51,7 @@ func TestClient_GetChatCompletions_AzureOpenAI_ContentFilterWithError(t *testing
Temperature: to.Ptr(float32(0.0)),
DeploymentName: &azureOpenAI.ChatCompletionsRAI.Model,
}, nil)

require.Empty(t, resp)
assertContentFilterError(t, err, true)
}
Expand Down

0 comments on commit 07eaf8f

Please sign in to comment.