@@ -555,10 +555,19 @@ func (c *Client) call(ctx context.Context, request openai.ChatCompletionRequest,
555555 var (
556556 headers map [string ]string
557557 modelProviderEnv []string
558+ retryOpts = []openai.RetryOptions {
559+ {
560+ Retries : 5 ,
561+ RetryAboveCode : 499 , // 5xx errors
562+ RetryCodes : []int {429 }, // 429 Too Many Requests (ratelimit)
563+ },
564+ }
558565 )
559566 for _ , e := range env {
560567 if strings .HasPrefix (e , "GPTSCRIPT_MODEL_PROVIDER_" ) {
561568 modelProviderEnv = append (modelProviderEnv , e )
569+ } else if strings .HasPrefix (e , "GPTSCRIPT_DISABLE_RETRIES" ) {
570+ retryOpts = nil
562571 }
563572 }
564573
@@ -572,7 +581,7 @@ func (c *Client) call(ctx context.Context, request openai.ChatCompletionRequest,
572581
573582 if ! streamResponse {
574583 request .StreamOptions = nil
575- resp , err := c .c .CreateChatCompletion (ctx , request , headers )
584+ resp , err := c .c .CreateChatCompletion (ctx , request , headers , retryOpts ... )
576585 if err != nil {
577586 return types.CompletionMessage {}, err
578587 }
@@ -597,7 +606,7 @@ func (c *Client) call(ctx context.Context, request openai.ChatCompletionRequest,
597606 }), nil
598607 }
599608
600- stream , err := c .c .CreateChatCompletionStream (ctx , request , headers )
609+ stream , err := c .c .CreateChatCompletionStream (ctx , request , headers , retryOpts ... )
601610 if err != nil {
602611 return types.CompletionMessage {}, err
603612 }
0 commit comments