Skip to content

Commit 2e447ea

Browse files
committed
feat: chat-completion-client retries by default - to disable via env
1 parent c5d85f1 commit 2e447ea

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

go.mod

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ module github.com/gptscript-ai/gptscript
22

33
go 1.23.1
44

5+
replace (
6+
github.com/gptscript-ai/chat-completion-client => ../chat-completion-client
7+
)
8+
59
require (
610
github.com/AlecAivazis/survey/v2 v2.3.7
711
github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69

pkg/openai/client.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)