From a45ea02b0c8b92dade327147b59fe1fdeb8da43c Mon Sep 17 00:00:00 2001 From: ashakirin Date: Tue, 9 Sep 2025 18:29:26 +0200 Subject: [PATCH] fix: #4333 added special warning for the case of changed tools names Signed-off-by: ashakirin --- .../ai/model/tool/DefaultToolCallingManager.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java index 36f7cf8eb97..31dc115c896 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java @@ -72,6 +72,10 @@ public final class DefaultToolCallingManager implements ToolCallingManager { private static final ToolExecutionExceptionProcessor DEFAULT_TOOL_EXECUTION_EXCEPTION_PROCESSOR = DefaultToolExecutionExceptionProcessor.builder().build(); + private static final String POSSIBLE_LLM_TOOL_NAME_CHANGE_WARNING + = "LLM may have adapted the tool name '{}', 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"; + + // @formatter:on private final ObservationRegistry observationRegistry; @@ -109,6 +113,7 @@ public List resolveToolDefinitions(ToolCallingChatOptions chatOp } ToolCallback toolCallback = this.toolCallbackResolver.resolve(toolName); if (toolCallback == null) { + logger.warn(POSSIBLE_LLM_TOOL_NAME_CHANGE_WARNING, toolName); throw new IllegalStateException("No ToolCallback found for tool name: " + toolName); } toolCallbacks.add(toolCallback); @@ -207,6 +212,7 @@ private InternalToolExecutionResult executeToolCall(Prompt prompt, AssistantMess .orElseGet(() -> this.toolCallbackResolver.resolve(toolName)); if (toolCallback == null) { + logger.warn(POSSIBLE_LLM_TOOL_NAME_CHANGE_WARNING, toolName); throw new IllegalStateException("No ToolCallback found for tool name: " + toolName); }