Skip to content

Commit 9b79359

Browse files
committed
Add openai model retry error listener logging
1 parent 0abf152 commit 9b79359

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
import org.springframework.ai.openai.metadata.OpenAiChatResponseMetadata;
4141
import org.springframework.ai.openai.metadata.support.OpenAiResponseHeaderExtractor;
4242
import org.springframework.http.ResponseEntity;
43+
import org.springframework.retry.RetryCallback;
44+
import org.springframework.retry.RetryContext;
45+
import org.springframework.retry.RetryListener;
4346
import org.springframework.retry.support.RetryTemplate;
4447
import org.springframework.util.Assert;
4548

@@ -69,6 +72,12 @@ public class OpenAiChatClient implements ChatClient, StreamingChatClient {
6972
.maxAttempts(10)
7073
.retryOn(OpenAiApiException.class)
7174
.exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000))
75+
.withListener(new RetryListener() {
76+
public <T extends Object, E extends Throwable> void onError(RetryContext context,
77+
RetryCallback<T, E> callback, Throwable throwable) {
78+
logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable);
79+
};
80+
})
7281
.build();
7382

7483
private final OpenAiApi openAiApi;

models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
import org.springframework.ai.openai.api.OpenAiApi.EmbeddingList;
3535
import org.springframework.ai.openai.api.OpenAiApi.OpenAiApiException;
3636
import org.springframework.ai.openai.api.OpenAiApi.Usage;
37+
import org.springframework.retry.RetryCallback;
38+
import org.springframework.retry.RetryContext;
39+
import org.springframework.retry.RetryListener;
3740
import org.springframework.retry.support.RetryTemplate;
3841
import org.springframework.util.Assert;
3942

@@ -56,6 +59,12 @@ public class OpenAiEmbeddingClient extends AbstractEmbeddingClient {
5659
.maxAttempts(10)
5760
.retryOn(OpenAiApiException.class)
5861
.exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000))
62+
.withListener(new RetryListener() {
63+
public <T extends Object, E extends Throwable> void onError(RetryContext context,
64+
RetryCallback<T, E> callback, Throwable throwable) {
65+
logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable);
66+
};
67+
})
5968
.build();
6069

6170
private final OpenAiApi openAiApi;

models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import org.springframework.ai.openai.metadata.OpenAiImageGenerationMetadata;
2525
import org.springframework.ai.openai.metadata.OpenAiImageResponseMetadata;
2626
import org.springframework.http.ResponseEntity;
27+
import org.springframework.retry.RetryCallback;
28+
import org.springframework.retry.RetryContext;
29+
import org.springframework.retry.RetryListener;
2730
import org.springframework.retry.support.RetryTemplate;
2831
import org.springframework.util.Assert;
2932

@@ -42,6 +45,12 @@ public class OpenAiImageClient implements ImageClient {
4245
.maxAttempts(10)
4346
.retryOn(OpenAiApi.OpenAiApiException.class)
4447
.exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000))
48+
.withListener(new RetryListener() {
49+
public <T extends Object, E extends Throwable> void onError(RetryContext context,
50+
RetryCallback<T, E> callback, Throwable throwable) {
51+
logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable);
52+
};
53+
})
4554
.build();
4655

4756
public OpenAiImageClient(OpenAiImageApi openAiImageApi) {

0 commit comments

Comments
 (0)