When I run the project "examples/skills-demo", an error occurs. I don't know how to solve it. Could you give me some guidance? Thanks.
. ____ _ __ _ _
/\ / ' __ _ () __ __ _ \ \ \
( ( )__ | '_ | '| | ' / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
' || .__|| ||| |_, | / / / /
=========||==============|/=////
:: Spring Boot :: (v4.1.0-RC1)
2026-05-17T11:15:57.593+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] o.springaicommunity.skills.Appl
ication : Starting Application using Java 21.0.2 with PID 29872 (D:\workspace3\ai\spring-ai-agent-utils-main\examples
skills-demo\target\classes started by HP in D:\workspace3\ai\spring-ai-agent-utils-main\examples\skills-demo)
2026-05-17T11:15:57.602+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] o.springaicommunity.skills.Appl
ication : No active profile set, falling back to 1 default profile: "default"
2026-05-17T11:15:59.874+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] o.springaicommunity.skills.Appl
ication : Started Application in 3.023 seconds (process running for 3.763)
USER:
- TEXT: Explain reinforcement learning in simple terms and use.
Use required skills.
Then use the Youtube video https://youtu.be/vXtfdGphr3c?si=xy8U2Al_Um5vE4Jd transcript to support your answer.
Use absolute paths for the skills and scripts. Do not ask me for more details.
ASSISTANT:
- TOOL-CALL: ai-tutor ({})
2026-05-17T11:16:08.571+08:00 WARN 29872 --- [recursive-advisor-demo] [ main] o.s.a.m.tool.DefaultToolCalling
Manager : LLM may have adapted the tool name 'ai-tutor', especially if the name was truncated due to length limits. If
this is the case, you can customize the prefixing and processing logic using McpToolNamePrefixGenerator
2026-05-17T11:16:08.574+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] .s.b.a.l.ConditionEvaluationRep
ortLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabl
ed.
2026-05-17T11:16:08.596+08:00 ERROR 29872 --- [recursive-advisor-demo] [ main] o.s.boot.SpringApplication
: Application run failed
java.lang.IllegalStateException: No ToolCallback found for tool name: ai-tutor
at org.springframework.ai.model.tool.DefaultToolCallingManager.executeToolCall(DefaultToolCallingManager.java:212) ~[sp
ring-ai-model-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.model.tool.DefaultToolCallingManager.executeToolCalls(DefaultToolCallingManager.java:150) ~[s
pring-ai-model-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.advisor.ToolCallAdvisor.adviseCall(ToolCallAdvisor.java:156) ~[spring-ai-client-c
hat-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.jav
a:115) ~[spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at io.micrometer.observation.Observation.observe(Observation.java:634) ~[micrometer-observation-1.17.0-RC1.jar:1.17.0-R
C1]
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:114) ~[
spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.lambda$doGetObservableChatClientRespons
e$1(DefaultChatClient.java:524) ~[spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at io.micrometer.observation.Observation.observe(Observation.java:634) ~[micrometer-observation-1.17.0-RC1.jar:1.17.0-R
C1]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(Defau
ltChatClient.java:522) ~[spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.content(DefaultChatClient.java:502) ~[s
pring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at org.springaicommunity.skills.Application.lambda$commandLineRunner$0(Application.java:69) ~[classes/:na]
at org.springframework.boot.SpringApplication.lambda$callRunner$1(SpringApplication.java:792) ~[spring-boot-4.1.0-RC1.j
ar:4.1.0-RC1]
at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:82) ~[spring-core-7.0
.7.jar:7.0.7]
at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-7.0.7.jar:7.0.7]
at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:86) ~[spring-core-7.0.7.jar:7.0.7]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:800) ~[spring-boot-4.1.0-RC1.jar:4.1.0-
RC1]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:791) ~[spring-boot-4.1.0-RC1.jar:4.1.0-
RC1]
at org.springframework.boot.SpringApplication.lambda$callRunners$0(SpringApplication.java:776) ~[spring-boot-4.1.0-RC1.
jar:4.1.0-RC1]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na]
at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776) ~[spring-boot-4.1.0-RC1.jar:4.1.0
-RC1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:328) ~[spring-boot-4.1.0-RC1.jar:4.1.0-RC1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) ~[spring-boot-4.1.0-RC1.jar:4.1.0-RC1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-4.1.0-RC1.jar:4.1.0-RC1]
at org.springaicommunity.skills.Application.main(Application.java:25) ~[classes/:na]
When I run the project "examples/skills-demo", an error occurs. I don't know how to solve it. Could you give me some guidance? Thanks.
. ____ _ __ _ _
/\ / ' __ _ () __ __ _ \ \ \
( ( )__ | '_ | '| | ' / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
' || .__|| ||| |_, | / / / /
=========||==============|/=////
:: Spring Boot :: (v4.1.0-RC1)
2026-05-17T11:15:57.593+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] o.springaicommunity.skills.Appl
ication : Starting Application using Java 21.0.2 with PID 29872 (D:\workspace3\ai\spring-ai-agent-utils-main\examples
skills-demo\target\classes started by HP in D:\workspace3\ai\spring-ai-agent-utils-main\examples\skills-demo)
2026-05-17T11:15:57.602+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] o.springaicommunity.skills.Appl
ication : No active profile set, falling back to 1 default profile: "default"
2026-05-17T11:15:59.874+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] o.springaicommunity.skills.Appl
ication : Started Application in 3.023 seconds (process running for 3.763)
USER:
Use required skills.
Then use the Youtube video https://youtu.be/vXtfdGphr3c?si=xy8U2Al_Um5vE4Jd transcript to support your answer.
Use absolute paths for the skills and scripts. Do not ask me for more details.
ASSISTANT:
2026-05-17T11:16:08.571+08:00 WARN 29872 --- [recursive-advisor-demo] [ main] o.s.a.m.tool.DefaultToolCalling
Manager : LLM may have adapted the tool name 'ai-tutor', especially if the name was truncated due to length limits. If
this is the case, you can customize the prefixing and processing logic using McpToolNamePrefixGenerator
2026-05-17T11:16:08.574+08:00 INFO 29872 --- [recursive-advisor-demo] [ main] .s.b.a.l.ConditionEvaluationRep
ortLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabl
ed.
2026-05-17T11:16:08.596+08:00 ERROR 29872 --- [recursive-advisor-demo] [ main] o.s.boot.SpringApplication
: Application run failed
java.lang.IllegalStateException: No ToolCallback found for tool name: ai-tutor
at org.springframework.ai.model.tool.DefaultToolCallingManager.executeToolCall(DefaultToolCallingManager.java:212) ~[sp
ring-ai-model-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.model.tool.DefaultToolCallingManager.executeToolCalls(DefaultToolCallingManager.java:150) ~[s
pring-ai-model-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.advisor.ToolCallAdvisor.adviseCall(ToolCallAdvisor.java:156) ~[spring-ai-client-c
hat-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.jav
a:115) ~[spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at io.micrometer.observation.Observation.observe(Observation.java:634) ~[micrometer-observation-1.17.0-RC1.jar:1.17.0-R
C1]
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:114) ~[
spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.lambda$doGetObservableChatClientRespons
e$1(DefaultChatClient.java:524) ~[spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at io.micrometer.observation.Observation.observe(Observation.java:634) ~[micrometer-observation-1.17.0-RC1.jar:1.17.0-R
C1]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(Defau
ltChatClient.java:522) ~[spring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.content(DefaultChatClient.java:502) ~[s
pring-ai-client-chat-2.0.0-M6.jar:2.0.0-M6]
at org.springaicommunity.skills.Application.lambda$commandLineRunner$0(Application.java:69) ~[classes/:na]
at org.springframework.boot.SpringApplication.lambda$callRunner$1(SpringApplication.java:792) ~[spring-boot-4.1.0-RC1.j
ar:4.1.0-RC1]
at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:82) ~[spring-core-7.0
.7.jar:7.0.7]
at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-7.0.7.jar:7.0.7]
at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:86) ~[spring-core-7.0.7.jar:7.0.7]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:800) ~[spring-boot-4.1.0-RC1.jar:4.1.0-
RC1]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:791) ~[spring-boot-4.1.0-RC1.jar:4.1.0-
RC1]
at org.springframework.boot.SpringApplication.lambda$callRunners$0(SpringApplication.java:776) ~[spring-boot-4.1.0-RC1.
jar:4.1.0-RC1]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na]
at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776) ~[spring-boot-4.1.0-RC1.jar:4.1.0
-RC1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:328) ~[spring-boot-4.1.0-RC1.jar:4.1.0-RC1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) ~[spring-boot-4.1.0-RC1.jar:4.1.0-RC1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-4.1.0-RC1.jar:4.1.0-RC1]
at org.springaicommunity.skills.Application.main(Application.java:25) ~[classes/:na]