diff --git a/internal/llm/provider/anthropic.go b/internal/llm/provider/anthropic.go index a5355b09e235d791d178a445ba98095974acbef4..d07b657e4ca2861bdbf8f82401a9283c82263e57 100644 --- a/internal/llm/provider/anthropic.go +++ b/internal/llm/provider/anthropic.go @@ -493,12 +493,7 @@ func (a *anthropicClient) shouldRetry(attempts int, err error) (bool, int64, err } if apiErr.StatusCode == 401 { - a.providerOptions.apiKey, err = config.Get().Resolve(a.providerOptions.config.APIKey) - if err != nil { - return false, 0, fmt.Errorf("failed to resolve API key: %w", err) - } - a.client = createAnthropicClient(a.providerOptions, a.tp) - return true, 0, nil + return false, 0, err } // Handle context limit exceeded error (400 Bad Request) diff --git a/internal/llm/provider/gemini.go b/internal/llm/provider/gemini.go index c1db9561e7db5fd3ae8da1ae1c9ea143f5ea20ec..54835596d171ded734b245c27fc3a628ddc8c36a 100644 --- a/internal/llm/provider/gemini.go +++ b/internal/llm/provider/gemini.go @@ -436,15 +436,7 @@ func (g *geminiClient) shouldRetry(attempts int, err error) (bool, int64, error) // Check for token expiration (401 Unauthorized) if contains(errMsg, "unauthorized", "invalid api key", "api key expired") { - g.providerOptions.apiKey, err = config.Get().Resolve(g.providerOptions.config.APIKey) - if err != nil { - return false, 0, fmt.Errorf("failed to resolve API key: %w", err) - } - g.client, err = createGeminiClient(g.providerOptions) - if err != nil { - return false, 0, fmt.Errorf("failed to create Gemini client after API key refresh: %w", err) - } - return true, 0, nil + return false, 0, err } // Check for common rate limit error messages diff --git a/internal/llm/provider/openai.go b/internal/llm/provider/openai.go index 8df3989abbacbb7e46c59a0c750df8a7879789c1..587f01384a151a940dcbcdcecb71eb5ba27a554b 100644 --- a/internal/llm/provider/openai.go +++ b/internal/llm/provider/openai.go @@ -514,12 +514,7 @@ func (o *openaiClient) shouldRetry(attempts int, err error) (bool, int64, error) if errors.As(err, &apiErr) { // Check for token expiration (401 Unauthorized) if apiErr.StatusCode == 401 { - o.providerOptions.apiKey, err = config.Get().Resolve(o.providerOptions.config.APIKey) - if err != nil { - return false, 0, fmt.Errorf("failed to resolve API key: %w", err) - } - o.client = createOpenAIClient(o.providerOptions) - return true, 0, nil + return false, 0, err } if apiErr.StatusCode != 429 && apiErr.StatusCode != 500 { diff --git a/internal/llm/provider/provider.go b/internal/llm/provider/provider.go index 3705645517cd10803ede285f8d2935f43575b746..0dada9d8b1e353801fde43b1d9ebb1fc6eaa0a1e 100644 --- a/internal/llm/provider/provider.go +++ b/internal/llm/provider/provider.go @@ -13,7 +13,7 @@ import ( type EventType string -const maxRetries = 8 +const maxRetries = 3 const ( EventContentStart EventType = "content_start"