Reputation: 23607
I have the following in my controller...
@GetMapping("/openai/image")
public String generate(@RequestParam(value = "message") String message) {
ImageOptions options = ImageOptionsBuilder.builder()
.withModel("dall-e-3")
.withHeight(1024)
.withWidth(1024)
.build();
ImagePrompt imagePrompt = new ImagePrompt(message, options);
ImageResponse response = imageModel.call(imagePrompt);
String imageUrl = response.getResult().getOutput().getUrl();
return "redirect:" + imageUrl;
}
But when it runs I get
2024-11-06T22:16:29.589-05:00 ERROR 23191 --- [my-spring-ai] [nio-8055-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServ
let] in context with path [] threw exception [Request processing failed: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://api.openai.com/v1/images/generations": timeout] with root cause
java.net.SocketTimeoutException: timeout
at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675) ~[okhttp-4.12.0.jar:na]
at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684) ~[okhttp-4.12.0.jar:na]
at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.kt:143) ~[okhttp-4.12.0.jar:na]
at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.kt:97) ~[okhttp-4.12.0.jar:na]
at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.kt:110) ~[okhttp-4.12.0.jar:na]
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:93) ~[okhttp-4.12.0.jar:na]
What is the proper way to configure this to work? Maybe increase the timeout on the okhttp client?
Also is there a MessageChatMemoryAdvisor messageChatMemoryAdvisor
equivalent for image search?
Upvotes: 1
Views: 218
Reputation: 23607
I got it by adding
@Bean
RestClientCustomizer restClientCustomizer() {
return restClientBuilder -> {
restClientBuilder
.requestFactory(new BufferingClientHttpRequestFactory(
ClientHttpRequestFactories.get(ClientHttpRequestFactorySettings.DEFAULTS
.withConnectTimeout(Duration.ofSeconds(60))
.withReadTimeout(Duration.ofSeconds(120))
)));
};
}
https://github.com/spring-projects/spring-ai/issues/1634
Upvotes: 1