ITADN

[BUG] Aggregation Error java.lang.IllegalStateException: Currently only one tool call is supported per message!

#4768OpenTomTomTomTom397 创建于 2026-07-02
kind/bugneeds-triage
T
TomTomTomTom397commented
### Is there an existing issue for this? - [x] I have searched the existing issues ### Current Behavior 使用reactAgent的streamMessages时(userMessage包含图片文件)偶发报错:Aggregation Error java.lang.IllegalStateException: Currently only one tool call is supported per message! ### Expected Behavior 期望正常输出 ### Steps To Reproduce 1. 使用多模态模型(我这里使用的qwen3.6 plus) 2. userMessage包含媒体文件(我这边包含图片文件) 3. 使用reactAgent的streamMessages方法(Flux<Message> messageFlux = resumeBuildSaveAgent.streamMessages(messages, runnableConfig);) ### Environment ```markdown Spring AI Alibaba version(s): <dependencies> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-bom</artifactId> <version>1.1.2.0</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.1.2</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-extensions-bom</artifactId> <version>1.1.2.1</version> <type>pom</type> <scope>import</scope> </dependency> ``` ### Debug logs 报错信息: [14:11:18.365] ERROR [reactor-http-nio-4raceId] org.springframework.ai.chat.model.MessageAggregator 188 lambda$aggregate$3 - Aggregation Error java.lang.IllegalStateException: Currently only one tool call is supported per message! at com.alibaba.cloud.ai.dashscope.api.DashScopeAiStreamFunctionCallingHelper.merge(DashScopeAiStreamFunctionCallingHelper.java:137) ~[spring-ai-alibaba-dashscope-1.1.2.1.jar:1.1.2.1] at com.alibaba.cloud.ai.dashscope.api.DashScopeAiStreamFunctionCallingHelper.merge(DashScopeAiStreamFunctionCallingHelper.java:102) ~[spring-ai-alibaba-dashscope-1.1.2.1.jar:1.1.2.1] at com.alibaba.cloud.ai.dashscope.api.DashScopeAiStreamFunctionCallingHelper.merge(DashScopeAiStreamFunctionCallingHelper.java:87) ~[spring-ai-alibaba-dashscope-1.1.2.1.jar:1.1.2.1] at reactor.core.publisher.MonoReduceSeed$ReduceSeedSubscriber.onNext(MonoReduceSeed.java:116) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drainRegular(FluxWindowPredicate.java:670) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drain(FluxWindowPredicate.java:748) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxWindowPredicate$WindowFlux.onNext(FluxWindowPredicate.java:790) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxWindowPredicate$WindowPredicateMain.onNext(FluxWindowPredicate.java:268) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:113) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxTakeUntil$TakeUntilPredicateSubscriber.onNext(FluxTakeUntil.java:95) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:251) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:259) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:865) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:480) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2366) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:202) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxBufferPredicate$BufferPredicateSubscriber.onNextNewBuffer(FluxBufferPredicate.java:317) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxBufferPredicate$BufferPredicateSubscriber.tryOnNext(FluxBufferPredicate.java:227) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxBufferPredicate$BufferPredicateSubscriber.onNext(FluxBufferPredicate.java:200) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:503) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:180) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drainAsync(FluxFlattenIterable.java:453) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drain(FluxFlattenIterable.java:724) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.onNext(FluxFlattenIterable.java:256) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.6.18.jar:3.6.18] at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:292) ~[reactor-netty-core-1.1.31.jar:1.1.31] at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:401) ~[reactor-netty-core-1.1.31.jar:1.1.31] at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:435) ~[reactor-netty-core-1.1.31.jar:1.1.31] at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:837) ~[reactor-netty-http-1.1.31.jar:1.1.31] ### Anything else? 报错点是这里: <img width="943" height="161" alt="Image" src="https://github.com/user-attachments/assets/cbffd0e1-aec4-4507-badd-d1a5376036e4" /> 追查到com.alibaba.cloud.ai.dashscope.api.DashScopeApi#chatCompletionStream(com.alibaba.cloud.ai.dashscope.spec.DashScopeApiSpec.ChatCompletionRequest, org.springframework.util.MultiValueMap<java.lang.String,java.lang.String>)方法中debug: <img width="1510" height="622" alt="Image" src="https://github.com/user-attachments/assets/0d4f8437-98c4-476c-8247-bed1090438c7" />
1 条评论