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 5149a98a85c..4a26e5d0d7a 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 @@ -217,7 +217,12 @@ private InternalToolExecutionResult executeToolCall(Prompt prompt, AssistantMess .observe(() -> { String toolResult; try { - toolResult = toolCallback.call(toolInputArguments, toolContext); + if (toolContext != null) { + toolResult = toolCallback.call(toolInputArguments, toolContext); + } + else { + toolResult = toolCallback.call(toolInputArguments); + } } catch (ToolExecutionException ex) { toolResult = this.toolExecutionExceptionProcessor.process(ex); diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java index e22037ca90b..524de1e3cb5 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java @@ -16,6 +16,9 @@ package org.springframework.ai.tool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.springframework.ai.chat.model.ToolContext; import org.springframework.ai.tool.definition.ToolDefinition; import org.springframework.ai.tool.metadata.ToolMetadata; @@ -29,6 +32,8 @@ */ public interface ToolCallback { + Logger logger = LoggerFactory.getLogger(ToolCallback.class); + /** * Definition used by the AI model to determine when and how to call the tool. */ @@ -53,7 +58,8 @@ default ToolMetadata getToolMetadata() { */ default String call(String toolInput, @Nullable ToolContext toolContext) { if (toolContext != null && !toolContext.getContext().isEmpty()) { - throw new UnsupportedOperationException("Tool context is not supported!"); + logger.debug( + "Using default implementation of ToolCallback#call(String,ToolContext) and toolContext will be ignored."); } return call(toolInput); }