Is there an existing issue for this?
Current Behavior
- 照着官网示例配置,启动报错:Caused by: java.lang.IllegalArgumentException: mainAgent (ReactAgent) must be provided for supervisor agent
- 框架版本:
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-agent-framework</artifactId>
<version>1.1.2.0</version>
</dependency>
Expected Behavior
保持文档与代码行为一致
Steps To Reproduce
No response
Environment
Spring AI Alibaba version(s):1.1.2.0
Debug logs
No response
Anything else?
- 报错日志:
Caused by: java.lang.IllegalArgumentException: mainAgent (ReactAgent) must be provided for supervisor agent
at com.alibaba.cloud.ai.graph.agent.flow.agent.SupervisorAgent$SupervisorAgentBuilder.validate(SupervisorAgent.java:125) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.flow.agent.SupervisorAgent$SupervisorAgentBuilder.doBuild(SupervisorAgent.java:131) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.flow.agent.SupervisorAgent$SupervisorAgentBuilder.doBuild(SupervisorAgent.java:74) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.flow.builder.FlowAgentBuilder.build(FlowAgentBuilder.java:197) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
- 尝试配置mainAgent
ReactAgent mainAgent = ReactAgent.builder()
.name("supervisor_main_agent")
.model(chatModel)
.description("负责分析用户需求并决定路由到哪个子Agent")
.hooks(messageTrimmingHook)
.systemPrompt(SUPERVISOR_SYSTEM_PROMPT)
.build();
// 创建监督者Agent
SupervisorAgent supervisorAgent = SupervisorAgent.builder()
.name("content_supervisor")
.description("内容管理监督者,负责协调写作、翻译等任务")
.model(chatModel)
.mainAgent(mainAgent) // 配置mainAgent
.subAgents(List.of(writerAgent, translatorAgent))
.build();
systemPrompt也是按照官网示例配置的,部分展示如下
final String SUPERVISOR_SYSTEM_PROMPT = """
......
## 响应格式
只返回Agent名称(writer_agent、translator_agent)或FINISH,不要包含其他解释。
"""
- 运行报错
Failed to parse JSON array strings from returned sub agent list of Main Agent output text: writer_agent
java.lang.IllegalStateException: Conversion from JSON to java.util.List failed
at org.springframework.ai.util.json.JsonParser.fromJson(JsonParser.java:67) ~[spring-ai-model-1.1.2.jar:1.1.2]
at com.alibaba.cloud.ai.graph.agent.flow.node.MainAgentNodeAction.parseJsonArrayOfStrings(MainAgentNodeAction.java:67) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.flow.node.MainAgentNodeAction.extractRoutingFromMessages(MainAgentNodeAction.java:179) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.flow.node.MainAgentNodeAction.processLastResponse(MainAgentNodeAction.java:147) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.flow.node.MainAgentNodeAction.lambda$getGraphResponseFlux$2(MainAgentNodeAction.java:125) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:388) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.DrainUtils.postCompleteDrain(DrainUtils.java:136) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.DrainUtils.postComplete(DrainUtils.java:187) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxBuffer$BufferOverlappingSubscriber.onComplete(FluxBuffer.java:554) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:209) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:68) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.Flux.subscribe(Flux.java:8891) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:238) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.Flux.subscribe(Flux.java:8891) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:238) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.Flux.subscribe(Flux.java:8891) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:196) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:121) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:67) ~[reactor-core-3.7.16.jar:3.7.16]
at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2372) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:144) ~[na:na]
at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.request(MonoCompletionStage.java:145) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:649) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onSubscribe(MonoFlatMapMany.java:141) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onSubscribe(FluxOnAssembly.java:633) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.MonoCompletionStage.subscribe(MonoCompletionStage.java:56) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:68) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.Flux.subscribe(Flux.java:8891) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:238) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:68) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.Mono.subscribe(Mono.java:4576) ~[reactor-core-3.7.16.jar:3.7.16]
at reactor.core.publisher.Mono.block(Mono.java:1778) ~[reactor-core-3.7.16.jar:3.7.16]
at com.alibaba.cloud.ai.graph.CompiledGraph.invoke(CompiledGraph.java:640) ~[spring-ai-alibaba-graph-core-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.Agent.doInvoke(Agent.java:499) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
at com.alibaba.cloud.ai.graph.agent.Agent.invoke(Agent.java:165) ~[spring-ai-alibaba-agent-framework-1.1.2.0.jar:1.1.2.0]
- debug截图:
在部分模型下,选择agent时,返回的不是数组格式,导致json转换数组报错
- 调整系统提示词
final String SUPERVISOR_SYSTEM_PROMPT = """
......
## 响应格式
你必须严格按照以下 JSON 格式返回路由决策,不要包含任何其他文本或解释:
["writer_agent" | "translator_agent" | "FINISH"]
"""
再次测试,运行正常
Is there an existing issue for this?
Current Behavior
Expected Behavior
保持文档与代码行为一致
Steps To Reproduce
No response
Environment
Debug logs
No response
Anything else?
再次测试,运行正常