From 87c4734af4ab2406af8319fb7e7c8ca8aa062be8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=99=8E=E9=B8=A3?= Date: Wed, 23 Apr 2025 16:22:46 +0800 Subject: [PATCH] chore: Add around tool calling execution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 虎鸣 --- .../ai/model/tool/DefaultToolCallingManager.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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);