From 5e19e7ac6c30c129a710ca78c8e267bba84ed267 Mon Sep 17 00:00:00 2001 From: Phantom <59059173+EurFelux@users.noreply.github.com> Date: Thu, 11 Sep 2025 21:21:55 +0800 Subject: [PATCH] fix(toolUsePlugin): handle empty tools case in prompt generation (#10111) Return null when no tools are available and skip tool section in system prompt --- .../plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts index 04d3bd5cdb..fce028f5cd 100644 --- a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts +++ b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts @@ -156,8 +156,10 @@ Assistant: The population of Shanghai is 26 million, while Guangzhou has a popul /** * 构建可用工具部分(提取自 Cherry Studio) */ -function buildAvailableTools(tools: ToolSet): string { +function buildAvailableTools(tools: ToolSet): string | null { const availableTools = Object.keys(tools) + if (availableTools.length === 0) return null + const result = availableTools .map((toolName: string) => { const tool = tools[toolName] return ` @@ -172,7 +174,7 @@ function buildAvailableTools(tools: ToolSet): string { }) .join('\n') return ` -${availableTools} +${result} ` } @@ -181,6 +183,7 @@ ${availableTools} */ function defaultBuildSystemPrompt(userSystemPrompt: string, tools: ToolSet): string { const availableTools = buildAvailableTools(tools) + if (availableTools === null) return userSystemPrompt const fullPrompt = DEFAULT_SYSTEM_PROMPT.replace('{{ TOOL_USE_EXAMPLES }}', DEFAULT_TOOL_USE_EXAMPLES) .replace('{{ AVAILABLE_TOOLS }}', availableTools)