@@ -255,6 +255,67 @@ func TestCreateChatCompletionStreamRateLimitError(t *testing.T) {
255
255
t .Logf ("%+v\n " , apiErr )
256
256
}
257
257
258
+ func TestAzureCreateChatCompletionStreamRateLimitError (t * testing.T ) {
259
+ wantCode := "429"
260
+ wantMessage := "Requests to the Creates a completion for the chat message Operation under Azure OpenAI API " +
261
+ "version 2023-03-15-preview have exceeded token rate limit of your current OpenAI S0 pricing tier. " +
262
+ "Please retry after 20 seconds. " +
263
+ "Please go here: https://aka.ms/oai/quotaincrease if you would like to further increase the default rate limit."
264
+
265
+ server := test .NewTestServer ()
266
+ server .RegisterHandler ("/openai/deployments/gpt-35-turbo/chat/completions" ,
267
+ func (w http.ResponseWriter , r * http.Request ) {
268
+ w .Header ().Set ("Content-Type" , "application/json" )
269
+ w .WriteHeader (http .StatusTooManyRequests )
270
+ // Send test responses
271
+ dataBytes := []byte (`{"error": { "code": "` + wantCode + `", "message": "` + wantMessage + `"}}` )
272
+ _ , err := w .Write (dataBytes )
273
+
274
+ checks .NoError (t , err , "Write error" )
275
+ })
276
+ // create the test server
277
+ var err error
278
+ ts := server .OpenAITestServer ()
279
+ ts .Start ()
280
+ defer ts .Close ()
281
+
282
+ config := DefaultAzureConfig (test .GetTestToken (), ts .URL )
283
+ client := NewClientWithConfig (config )
284
+ ctx := context .Background ()
285
+
286
+ request := ChatCompletionRequest {
287
+ MaxTokens : 5 ,
288
+ Model : GPT3Dot5Turbo ,
289
+ Messages : []ChatCompletionMessage {
290
+ {
291
+ Role : ChatMessageRoleUser ,
292
+ Content : "Hello!" ,
293
+ },
294
+ },
295
+ Stream : true ,
296
+ }
297
+
298
+ apiErr := & APIError {}
299
+ _ , err = client .CreateChatCompletionStream (ctx , request )
300
+ if ! errors .As (err , & apiErr ) {
301
+ t .Errorf ("Did not return APIError: %+v\n " , apiErr )
302
+ return
303
+ }
304
+ if apiErr .HTTPStatusCode != http .StatusTooManyRequests {
305
+ t .Errorf ("Did not return HTTPStatusCode got = %d, want = %d\n " , apiErr .HTTPStatusCode , http .StatusTooManyRequests )
306
+ return
307
+ }
308
+ code , ok := apiErr .Code .(string )
309
+ if ! ok || code != wantCode {
310
+ t .Errorf ("Did not return Code. got = %v, want = %s\n " , apiErr .Code , wantCode )
311
+ return
312
+ }
313
+ if apiErr .Message != wantMessage {
314
+ t .Errorf ("Did not return Message. got = %s, want = %s\n " , apiErr .Message , wantMessage )
315
+ return
316
+ }
317
+ }
318
+
258
319
func TestCreateChatCompletionStreamErrorAccumulatorWriteErrors (t * testing.T ) {
259
320
var err error
260
321
server := test .NewTestServer ()
0 commit comments