From 2437feb0ab546bc8db82f1a9f8e943b8bd7e1908 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Mon, 18 Aug 2025 15:09:44 -0300 Subject: [PATCH] fix(llm): log error when retrying (#781) Signed-off-by: Carlos Alexandro Becker --- internal/llm/provider/anthropic.go | 5 ++--- internal/llm/provider/gemini.go | 4 ++-- internal/llm/provider/openai.go | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/internal/llm/provider/anthropic.go b/internal/llm/provider/anthropic.go index 8e0e3cc623557e1098f4a31fcafcae79805f205e..ad87ccd6387d8ee3242501757e8b8effbe92a44f 100644 --- a/internal/llm/provider/anthropic.go +++ b/internal/llm/provider/anthropic.go @@ -291,13 +291,12 @@ func (a *anthropicClient) send(ctx context.Context, messages []message.Message, ) // If there is an error we are going to see if we can retry the call if err != nil { - slog.Error("Anthropic API error", "error", err.Error(), "attempt", attempts, "max_retries", maxRetries) retry, after, retryErr := a.shouldRetry(attempts, err) if retryErr != nil { return nil, retryErr } if retry { - slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries) + slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries, "error", err) select { case <-ctx.Done(): return nil, ctx.Err() @@ -446,7 +445,7 @@ func (a *anthropicClient) stream(ctx context.Context, messages []message.Message return } if retry { - slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries) + slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries, "error", err) select { case <-ctx.Done(): // context cancelled diff --git a/internal/llm/provider/gemini.go b/internal/llm/provider/gemini.go index 061f1a1496e5215e434deecfec589fc98d0420ef..21f4e65dfb400d449d3da050fe4c2436ffa66c0e 100644 --- a/internal/llm/provider/gemini.go +++ b/internal/llm/provider/gemini.go @@ -216,7 +216,7 @@ func (g *geminiClient) send(ctx context.Context, messages []message.Message, too return nil, retryErr } if retry { - slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries) + slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries, "error", err) select { case <-ctx.Done(): return nil, ctx.Err() @@ -327,7 +327,7 @@ func (g *geminiClient) stream(ctx context.Context, messages []message.Message, t return } if retry { - slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries) + slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries, "error", err) select { case <-ctx.Done(): if ctx.Err() != nil { diff --git a/internal/llm/provider/openai.go b/internal/llm/provider/openai.go index 4fe96d2b7e11c5e3953781653e8004c72d365226..aafb7168fc6aa9e3841802f20f95bfaa38662fa9 100644 --- a/internal/llm/provider/openai.go +++ b/internal/llm/provider/openai.go @@ -282,7 +282,7 @@ func (o *openaiClient) send(ctx context.Context, messages []message.Message, too return nil, retryErr } if retry { - slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries) + slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries, "error", err) select { case <-ctx.Done(): return nil, ctx.Err() @@ -463,7 +463,7 @@ func (o *openaiClient) stream(ctx context.Context, messages []message.Message, t return } if retry { - slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries) + slog.Warn("Retrying due to rate limit", "attempt", attempts, "max_retries", maxRetries, "error", err) select { case <-ctx.Done(): // context cancelled