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 a3afa93e51..e044fdefa1 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 @@ -203,7 +203,7 @@ private InternalToolExecutionResult executeToolCall(Prompt prompt, AssistantMess String toolResult; try { - toolResult = toolCallback.call(toolInputArguments, toolContext); + toolResult = aroundToolCallingExecution(toolCallback, toolInputArguments, toolContext); } catch (ToolExecutionException ex) { toolResult = this.toolExecutionExceptionProcessor.process(ex); @@ -215,6 +215,14 @@ private InternalToolExecutionResult executeToolCall(Prompt prompt, AssistantMess return new InternalToolExecutionResult(new ToolResponseMessage(toolResponses, Map.of()), returnDirect); } + /** + * Been added to allow for custom behavior around tool execution. + */ + protected String aroundToolCallingExecution(ToolCallback toolCallback, String toolInputArguments, + ToolContext toolContext) { + return toolCallback.call(toolInputArguments, toolContext); + } + private List buildConversationHistoryAfterToolExecution(List previousMessages, AssistantMessage assistantMessage, ToolResponseMessage toolResponseMessage) { List messages = new ArrayList<>(previousMessages);