Please do a quick search on GitHub issues first, there might be already a duplicate issue for the one you are about to create. If the bug is trivial, just go ahead and create the issue. Otherwise, please take a few moments and fill in the following sections:

Bug description A clear and concise description of what the bug is about.

"Read timed out" when LLM response time is too long.

How can I configure this manually? Thank you.

com.google.api.gax.rpc.UnknownException: java.net.SocketTimeoutException: Read timed out at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:119) ~[gax-2.65.0.jar:2.65.0] Suppressed: java.lang.RuntimeException: Asynchronous task failed at com.google.api.gax.rpc.ServerStreamIterator.hasNext(ServerStreamIterator.java:105) ~[gax-2.65.0.jar:2.65.0] at com.google.cloud.vertexai.generativeai.ResponseStreamIteratorWithHistory.hasNext(ResponseStreamIteratorWithHistory.java:37) ~[google-cloud-vertexai-1.22.0.jar:1.22.0] at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1855) ~[na:na] at reactor.core.publisher.FluxIterable$IterableSubscription.hasNext(FluxIterable.java:271) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:187) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxStream.subscribe(FluxStream.java:69) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:68) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxDeferContextual.subscribe(FluxDeferContextual.java:57) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:68) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxPublishOn.subscribeOrReturn(FluxPublishOn.java:92) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:55) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxDeferContextual.subscribe(FluxDeferContextual.java:57) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.Flux.subscribe(Flux.java:8848) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:196) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.publisher.FluxSubscribeOnValue$ScheduledScalar.run(FluxSubscribeOnValue.java:181) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.6.13.jar:3.6.13] at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.6.13.jar:3.6.13] at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) ~[na:na] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na] at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): __checkpoint ⇢ Handler spring.ai.example.spring_ai_demo.ConversationController#chat(Map, String) [DispatcherHandler] __checkpoint ⇢ spring.ai.example.spring_ai_demo.config.CommonConfiguration$TokenMailboxFilter [DefaultWebFilterChain] *__checkpoint ⇢ HTTP POST "/api/ai/chat" [ExceptionHandlingWebHandler] Original Stack Trace: at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:119) ~[gax-2.65.0.jar:2.65.0] at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:41) ~[gax-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonApiExceptionFactory.create(HttpJsonApiExceptionFactory.java:67) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonExceptionResponseObserver.onErrorImpl(HttpJsonExceptionResponseObserver.java:82) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.rpc.StateCheckingResponseObserver.onError(StateCheckingResponseObserver.java:84) ~[gax-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonDirectStreamController$ResponseObserverAdapter.onClose(HttpJsonDirectStreamController.java:125) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.ForwardingHttpJsonClientCallListener.onClose(ForwardingHttpJsonClientCallListener.java:54) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonLoggingInterceptor$1$1.onClose(HttpJsonLoggingInterceptor.java:95) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonClientCallImpl$OnCloseNotificationTask.call(HttpJsonClientCallImpl.java:551) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonClientCallImpl.notifyListeners(HttpJsonClientCallImpl.java:390) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonClientCallImpl.deliver(HttpJsonClientCallImpl.java:317) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpJsonClientCallImpl.setResult(HttpJsonClientCallImpl.java:163) ~[gax-httpjson-2.65.0.jar:2.65.0] at com.google.api.gax.httpjson.HttpRequestRunnable.run(HttpRequestRunnable.java:148) ~[gax-httpjson-2.65.0.jar:2.65.0] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na] at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) ~[na:na] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na] at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] Caused by: java.net.SocketTimeoutException: Read timed out at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:283) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:309) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803) ~[na:na] at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966) ~[na:na] at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478) ~[na:na] at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472) ~[na:na] at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70) ~[na:na] at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1455) ~[na:na] at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1059) ~[na:na] at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:244) ~[na:na] at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:284) ~[na:na] at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:343) ~[na:na] at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:791) ~[na:na] at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:726) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1688) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[na:na] at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529) ~[na:na] at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308) ~[na:na] at com.google.api.client.http.javanet.NetHttpResponse.(NetHttpResponse.java:36) ~[google-http-client-1.46.3.jar:1.46.3] at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:152) ~[google-http-client-1.46.3.jar:1.46.3] at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84) ~[google-http-client-1.46.3.jar:1.46.3] at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012) ~[google-http-client-1.46.3.jar:1.46.3] at com.google.api.gax.httpjson.HttpRequestRunnable.run(HttpRequestRunnable.java:114) ~[gax-httpjson-2.65.0.jar:2.65.0] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na] at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) ~[na:na] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na] at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

Environment Please provide as many details as possible: Spring AI version, Java version, which vector store you use if any, etc spring ai 1.0.0 spring-ai-starter-model-vertex-ai-gemini 1.0.0

Steps to reproduce Steps to reproduce the issue.

Expected behavior A clear and concise description of what you expected to happen.

Minimal Complete Reproducible example Please provide a failing test or a minimal complete verifiable example that reproduces the issue. Bug reports that are reproducible will take priority in resolution over reports that are not reproducible.