on main help sign in
fix(provider): do not retry auth errors
5633f24Carlos Alexandro Becker
internal/llm/provider/anthropic.go+1−6
@@ -493,12 +493,7 @@ func (a *anthropicClient) shouldRetry(attempts int, err error) (bool, int64, err
493 }
493 }
494
494
495 if apiErr.StatusCode == 401 {
495 if apiErr.StatusCode == 401 {
496− a.providerOptions.apiKey, err = config.Get().Resolve(a.providerOptions.config.APIKey)
497− if err != nil {
498− return false, 0, fmt.Errorf("failed to resolve API key: %w", err)
496+ return false, 0, err
499− }
500− a.client = createAnthropicClient(a.providerOptions, a.tp)
501− return true, 0, nil
502 }
497 }
503
498
504 // Handle context limit exceeded error (400 Bad Request)
499 // Handle context limit exceeded error (400 Bad Request)
internal/llm/provider/gemini.go+1−9
@@ -436,15 +436,7 @@ func (g *geminiClient) shouldRetry(attempts int, err error) (bool, int64, error)
436
436
437 // Check for token expiration (401 Unauthorized)
437 // Check for token expiration (401 Unauthorized)
438 if contains(errMsg, "unauthorized", "invalid api key", "api key expired") {
438 if contains(errMsg, "unauthorized", "invalid api key", "api key expired") {
439− g.providerOptions.apiKey, err = config.Get().Resolve(g.providerOptions.config.APIKey)
439+ return false, 0, err
440− if err != nil {
441− return false, 0, fmt.Errorf("failed to resolve API key: %w", err)
442− }
443− g.client, err = createGeminiClient(g.providerOptions)
444− if err != nil {
445− return false, 0, fmt.Errorf("failed to create Gemini client after API key refresh: %w", err)
446− }
447− return true, 0, nil
448 }
440 }
449
441
450 // Check for common rate limit error messages
442 // Check for common rate limit error messages
internal/llm/provider/openai.go+1−6
@@ -514,12 +514,7 @@ func (o *openaiClient) shouldRetry(attempts int, err error) (bool, int64, error)
514 if errors.As(err, &apiErr) {
514 if errors.As(err, &apiErr) {
515 // Check for token expiration (401 Unauthorized)
515 // Check for token expiration (401 Unauthorized)
516 if apiErr.StatusCode == 401 {
516 if apiErr.StatusCode == 401 {
517− o.providerOptions.apiKey, err = config.Get().Resolve(o.providerOptions.config.APIKey)
518− if err != nil {
519− return false, 0, fmt.Errorf("failed to resolve API key: %w", err)
517+ return false, 0, err
520− }
521− o.client = createOpenAIClient(o.providerOptions)
522− return true, 0, nil
523 }
518 }
524
519
525 if apiErr.StatusCode != 429 && apiErr.StatusCode != 500 {
520 if apiErr.StatusCode != 429 && apiErr.StatusCode != 500 {
internal/llm/provider/provider.go+1−1
@@ -13,7 +13,7 @@ import (
13
13
14type EventType string
14type EventType string
15
15
16−const maxRetries = 8
16+const maxRetries = 3
17
17
18const (
18const (
19 EventContentStart EventType = "content_start"
19 EventContentStart EventType = "content_start"