quarkus-langchain4j
quarkus-langchain4j copied to clipboard
AWS Bedrock, Conversation blocks and tool use blocks cannot be provided in the same turn.
When using aws bedrock (llama), I just call my AiService's chat() method with some user text like "hello" and I get the error (see below).
Note this same code works just fine locally hitting lmstudio hosted a qwen 2.5 instruct model.
quarkus: 3.29.4
implementation 'io.quarkiverse.langchain4j:quarkus-langchain4j-mcp:1.4.0'
implementation 'io.quarkiverse.langchain4j:quarkus-langchain4j-openai:1.4.0'
implementation 'io.quarkiverse.langchain4j:quarkus-langchain4j-tavily:1.4.0'
implementation 'io.quarkiverse.langchain4j:quarkus-langchain4j-pgvector:1.4.0'
implementation 'dev.langchain4j:langchain4j:1.8.0'
implementation 'dev.langchain4j:langchain4j-bedrock:1.9.0'
My Tool
@SystemMessage(DefaultModelConfig.MY_SYSTEM_PROMPT)
public interface TestToolService extends ChatMemoryAccess {
@ToolBox(WebSearchTool.class)
@McpToolBox("myTool")
String chat(@UserMessage String message, @MemoryId String memoryId);
}
my service
AiServices.builder(TestToolService.class)
.chatModel(getChatModel())
.chatMemoryProvider(myChatMemoryProvider)
.build();
ChatModel getChatModel() {
return BedrockChatModel.builder()
.modelId("us.meta.llama3-2-11b-instruct-v1:0")
.returnThinking(false)
.sendThinking(false)
.timeout(Duration.ofSeconds(60))
.maxRetries(2)
.logRequests(true)
.logResponses(true)
.defaultRequestParameters(BedrockChatRequestParameters.builder()
.enableReasoning(1024) // token budget
.build())
.build();
}
2025-11-28 07:31:34,220 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /v1/chat/completions failed, error id: 6361affc-5d3f-4b56-bc47-433583283923-1: dev.langchain4j.exception.InvalidRequestException: messages.7.content: Conversation blocks and tool use blocks cannot be provided in the same turn. (Service: BedrockRuntime, Status Code: 400, Request ID: 45c9c3bb-aa19-49ed-8ef6-b3f01f9b3a53) (SDK Attempt Count: 1)
at dev.langchain4j.internal.ExceptionMapper$DefaultExceptionMapper.mapHttpStatusCode(ExceptionMapper.java:71)
at dev.langchain4j.model.bedrock.BedrockExceptionMapper.mapException(BedrockExceptionMapper.java:18)
at dev.langchain4j.internal.ExceptionMapper.withExceptionMapper(ExceptionMapper.java:31)
at dev.langchain4j.internal.RetryUtils.lambda$withRetryMappingExceptions$1(RetryUtils.java:322)
at dev.langchain4j.internal.RetryUtils$RetryPolicy.withRetry(RetryUtils.java:204)
at dev.langchain4j.internal.RetryUtils.withRetry(RetryUtils.java:259)
at dev.langchain4j.internal.RetryUtils.withRetryMappingExceptions(RetryUtils.java:322)
at dev.langchain4j.model.bedrock.BedrockChatModel.doChat(BedrockChatModel.java:52)
at dev.langchain4j.model.chat.ChatModel.chat(ChatModel.java:46)
at dev.langchain4j.guardrail.SynchronousChatExecutor.execute(SynchronousChatExecutor.java:32)
at dev.langchain4j.guardrail.AbstractChatExecutor.execute(AbstractChatExecutor.java:45)
at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.doImplement(AiServiceMethodImplementationSupport.java:436)
at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.implement(AiServiceMethodImplementationSupport.java:163)
at com.barf.ai.inference.tool.TestToolService$$QuarkusImpl.chat(Unknown Source)
at com.barf.ai.inference.engine.testme.TestInferenceEngine.chat(TestInferenceEngine.java:42)
at com.barf.ai.inference.api.endpoint.InferenceEndpoint.completions(InferenceEndpoint.java:109)
at com.barf.ai.inference.api.endpoint.InferenceEndpoint$quarkusrestinvoker$completions_0fbcc26ce5aeb6cfaf7d9828ade71a9850219ac7.invoke(Unknown Source)
at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:183)
at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:645)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: software.amazon.awssdk.services.bedrockruntime.model.ValidationException: messages.7.content: Conversation blocks and tool use blocks cannot be provided in the same turn. (Service: BedrockRuntime, Status Code: 400, Request ID: 45c9c3bb-aa19-49ed-8ef6-b3f01f9b3a53) (SDK Attempt Count: 1)
at software.amazon.awssdk.services.bedrockruntime.model.ValidationException$BuilderImpl.build(ValidationException.java:152)
at software.amazon.awssdk.services.bedrockruntime.model.ValidationException$BuilderImpl.build(ValidationException.java:100)
at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.RetryableStageHelper.retryPolicyDisallowedRetryException(RetryableStageHelper.java:168)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:73)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:53)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:35)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:82)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:62)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:43)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:50)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:32)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:210)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74)
at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53)
at software.amazon.awssdk.services.bedrockruntime.DefaultBedrockRuntimeClient.converse(DefaultBedrockRuntimeClient.java:408)
at dev.langchain4j.model.bedrock.BedrockChatModel.lambda$doChat$0(BedrockChatModel.java:53)
at dev.langchain4j.internal.ExceptionMapper.withExceptionMapper(ExceptionMapper.java:29)
... 26 more