Skip to content

Commit 75e2439

Browse files
authored
refactor(jmanus): remove tool prompts (alibaba#1997)
1 parent 6e98662 commit 75e2439

File tree

83 files changed

+703
-1974
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+703
-1974
lines changed

src/main/java/com/alibaba/cloud/ai/example/manus/dynamic/prompt/model/enums/PromptEnum.java

Lines changed: 1 addition & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -31,109 +31,11 @@ public enum PromptEnum {
3131
AGENT_STUCK_ERROR("AGENT_STUCK_ERROR", MessageType.SYSTEM, PromptType.AGENT, true, "agent/stuck-error.txt"),
3232
SUMMARY_PLAN_TEMPLATE("SUMMARY_PLAN_TEMPLATE", MessageType.SYSTEM, PromptType.PLANNING, true,
3333
"workflow/summary-plan-template.txt"),
34-
MAPREDUCE_TOOL_DESCRIPTION("MAPREDUCE_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.AGENT, true,
35-
"tool/mapreduce-tool-description.txt"),
36-
MAPREDUCE_TOOL_PARAMETERS("MAPREDUCE_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.AGENT, true,
37-
"tool/mapreduce-tool-parameters.txt"),
3834
AGENT_DEBUG_DETAIL_OUTPUT("AGENT_DEBUG_DETAIL_OUTPUT", MessageType.SYSTEM, PromptType.AGENT, true,
3935
"agent/debug-detail-output.txt"),
4036
AGENT_NORMAL_OUTPUT("AGENT_NORMAL_OUTPUT", MessageType.SYSTEM, PromptType.AGENT, true, "agent/normal-output.txt"),
4137
AGENT_PARALLEL_TOOL_CALLS_RESPONSE("AGENT_PARALLEL_TOOL_CALLS_RESPONSE", MessageType.SYSTEM, PromptType.AGENT, true,
42-
"agent/parallel-tool-calls-response.txt"),
43-
FORM_INPUT_TOOL_DESCRIPTION("FORM_INPUT_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.AGENT, true,
44-
"tool/form-input-tool-description.txt"),
45-
FORM_INPUT_TOOL_PARAMETERS("FORM_INPUT_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.AGENT, true,
46-
"tool/form-input-tool-parameters.txt"),
47-
48-
// Bash Tool
49-
BASH_TOOL_DESCRIPTION("BASH_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
50-
"tool/bash-tool-description.txt"),
51-
BASH_TOOL_PARAMETERS("BASH_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
52-
"tool/bash-tool-parameters.txt"),
53-
54-
// Text File Operator Tool
55-
TEXTFILEOPERATOR_TOOL_DESCRIPTION("TEXTFILEOPERATOR_TOOL_DESCRIPTION", MessageType.SYSTEM,
56-
PromptType.TOOL_DESCRIPTION, true, "tool/textfileoperator-tool-description.txt"),
57-
TEXTFILEOPERATOR_TOOL_PARAMETERS("TEXTFILEOPERATOR_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER,
58-
true, "tool/textfileoperator-tool-parameters.txt"),
59-
60-
// Browser Use Tool
61-
BROWSER_USE_TOOL_DESCRIPTION("BROWSER_USE_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
62-
"tool/browser-use-tool-description.txt"),
63-
BROWSER_USE_TOOL_PARAMETERS("BROWSER_USE_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
64-
"tool/browser-use-tool-parameters.txt"),
65-
66-
// Python Execute Tool
67-
PYTHON_EXECUTE_TOOL_DESCRIPTION("PYTHON_EXECUTE_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION,
68-
true, "tool/python-execute-tool-description.txt"),
69-
PYTHON_EXECUTE_TOOL_PARAMETERS("PYTHON_EXECUTE_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER,
70-
true, "tool/python-execute-tool-parameters.txt"),
71-
72-
// Database Use Tool
73-
DATABASE_USE_TOOL_DESCRIPTION("DATABASE_USE_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION,
74-
true, "tool/database-use-tool-description.txt"),
75-
DATABASE_USE_TOOL_PARAMETERS("DATABASE_USE_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
76-
"tool/database-use-tool-parameters.txt"),
77-
78-
// Cron Tool
79-
CRON_TOOL_TOOL_DESCRIPTION("CRON_TOOL_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
80-
"tool/cron-tool-tool-description.txt"),
81-
CRON_TOOL_TOOL_PARAMETERS("CRON_TOOL_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
82-
"tool/cron-tool-tool-parameters.txt"),
83-
84-
// Inner Storage Content Tool
85-
INNER_STORAGE_CONTENT_TOOL_TOOL_DESCRIPTION("INNER_STORAGE_CONTENT_TOOL_TOOL_DESCRIPTION", MessageType.SYSTEM,
86-
PromptType.TOOL_DESCRIPTION, true, "tool/inner-storage-content-tool-tool-description.txt"),
87-
INNER_STORAGE_CONTENT_TOOL_TOOL_PARAMETERS("INNER_STORAGE_CONTENT_TOOL_TOOL_PARAMETERS", MessageType.SYSTEM,
88-
PromptType.TOOL_PARAMETER, true, "tool/inner-storage-content-tool-tool-parameters.txt"),
89-
90-
// Doc Loader Tool
91-
DOC_LOADER_TOOL_DESCRIPTION("DOC_LOADER_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
92-
"tool/doc-loader-tool-description.txt"),
93-
DOC_LOADER_TOOL_PARAMETERS("DOC_LOADER_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
94-
"tool/doc-loader-tool-parameters.txt"),
95-
96-
// File Merge Tool
97-
FILE_MERGE_TOOL_TOOL_DESCRIPTION("FILE_MERGE_TOOL_TOOL_DESCRIPTION", MessageType.SYSTEM,
98-
PromptType.TOOL_DESCRIPTION, true, "tool/file-merge-tool-description.txt"),
99-
FILE_MERGE_TOOL_TOOL_PARAMETERS("FILE_MERGE_TOOL_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER,
100-
true, "tool/file-merge-tool-parameters.txt"),
101-
102-
// Data Split Tool
103-
DATA_SPLIT_TOOL_DESCRIPTION("DATA_SPLIT_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
104-
"tool/data-split-tool-description.txt"),
105-
DATA_SPLIT_TOOL_PARAMETERS("DATA_SPLIT_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
106-
"tool/data-split-tool-parameters.txt"),
107-
108-
// Map Output Tool
109-
MAP_OUTPUT_TOOL_DESCRIPTION("MAP_OUTPUT_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
110-
"tool/map-output-tool-description.txt"),
111-
MAP_OUTPUT_TOOL_PARAMETERS("MAP_OUTPUT_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
112-
"tool/map-output-tool-parameters.txt"),
113-
114-
// Reduce Operation Tool
115-
REDUCE_OPERATION_TOOL_DESCRIPTION("REDUCE_OPERATION_TOOL_DESCRIPTION", MessageType.SYSTEM,
116-
PromptType.TOOL_DESCRIPTION, true, "tool/reduce-operation-tool-description.txt"),
117-
REDUCE_OPERATION_TOOL_PARAMETERS("REDUCE_OPERATION_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER,
118-
true, "tool/reduce-operation-tool-parameters.txt"),
119-
120-
// Finalize Tool
121-
FINALIZE_TOOL_DESCRIPTION("FINALIZE_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
122-
"tool/finalize-tool-description.txt"),
123-
FINALIZE_TOOL_PARAMETERS("FINALIZE_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
124-
"tool/finalize-tool-parameters.txt"),
125-
126-
// Terminate Tool
127-
TERMINATE_TOOL_DESCRIPTION("TERMINATE_TOOL_DESCRIPTION", MessageType.SYSTEM, PromptType.TOOL_DESCRIPTION, true,
128-
"tool/terminate-tool-description.txt"),
129-
TERMINATE_TOOL_PARAMETERS("TERMINATE_TOOL_PARAMETERS", MessageType.SYSTEM, PromptType.TOOL_PARAMETER, true,
130-
"tool/terminate-tool-parameters.txt"),
131-
132-
// PPT Generator Tool
133-
PPTGENERATOROPERATOR_TOOL_DESCRIPTION("PPTGENERATOROPERATOR_TOOL_DESCRIPTION", MessageType.SYSTEM,
134-
PromptType.TOOL_DESCRIPTION, true, "tool/ppt-generator-operator-tool-description.txt"),
135-
PPTGENERATOROPERATOR_TOOL_PARAMETERS("PPTGENERATOROPERATOR_TOOL_PARAMETERS", MessageType.SYSTEM,
136-
PromptType.TOOL_PARAMETER, true, "tool/ppt-generator-operator-tool-parameters.txt");
38+
"agent/parallel-tool-calls-response.txt");
13739

13840
private String promptName;
13941

src/main/java/com/alibaba/cloud/ai/example/manus/dynamic/prompt/model/enums/PromptType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717

1818
public enum PromptType {
1919

20-
LLM, PLANNING, AGENT, TOOL_DESCRIPTION, TOOL_PARAMETER
20+
LLM, PLANNING, AGENT
2121

2222
}

src/main/java/com/alibaba/cloud/ai/example/manus/planning/PlanningFactory.java

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.util.Map;
2323
import java.util.concurrent.TimeUnit;
2424

25-
import com.alibaba.cloud.ai.example.manus.tool.ToolPromptManager;
2625
import org.apache.hc.client5.http.classic.HttpClient;
2726
import org.apache.hc.client5.http.config.RequestConfig;
2827
import org.apache.hc.client5.http.impl.classic.HttpClients;
@@ -144,9 +143,6 @@ public class PlanningFactory implements IPlanningFactory {
144143
@Autowired
145144
private StreamingResponseHandler streamingResponseHandler;
146145

147-
@Autowired
148-
private ToolPromptManager toolPromptManager;
149-
150146
@Autowired
151147
@Lazy
152148
private CronService cronService;
@@ -222,29 +218,26 @@ public Map<String, ToolCallBackContext> toolCallbackMap(String planId, String ro
222218
return toolCallbackMap;
223219
}
224220
// Add all tool definitions
225-
toolDefinitions
226-
.add(BrowserUseTool.getInstance(chromeDriverService, innerStorageService, objectMapper, toolPromptManager));
227-
toolDefinitions.add(DatabaseUseTool.getInstance(dataSourceService, objectMapper, toolPromptManager));
228-
toolDefinitions.add(new TerminateTool(planId, terminateColumns, toolPromptManager));
229-
toolDefinitions.add(new Bash(unifiedDirectoryManager, objectMapper, toolPromptManager));
230-
toolDefinitions.add(new DocLoaderTool(toolPromptManager));
231-
toolDefinitions
232-
.add(new TextFileOperator(textFileService, innerStorageService, objectMapper, toolPromptManager));
221+
toolDefinitions.add(BrowserUseTool.getInstance(chromeDriverService, innerStorageService, objectMapper));
222+
toolDefinitions.add(DatabaseUseTool.getInstance(dataSourceService, objectMapper));
223+
toolDefinitions.add(new TerminateTool(planId, terminateColumns));
224+
toolDefinitions.add(new Bash(unifiedDirectoryManager, objectMapper));
225+
toolDefinitions.add(new DocLoaderTool());
226+
toolDefinitions.add(new TextFileOperator(textFileService, innerStorageService, objectMapper));
233227
// toolDefinitions.add(new InnerStorageTool(unifiedDirectoryManager));
234-
toolDefinitions
235-
.add(new InnerStorageContentTool(unifiedDirectoryManager, summaryWorkflow, recorder, toolPromptManager));
236-
toolDefinitions.add(new FileMergeTool(unifiedDirectoryManager, toolPromptManager));
228+
toolDefinitions.add(new InnerStorageContentTool(unifiedDirectoryManager, summaryWorkflow, recorder));
229+
toolDefinitions.add(new FileMergeTool(unifiedDirectoryManager));
237230
// toolDefinitions.add(new GoogleSearch());
238231
// toolDefinitions.add(new PythonExecute());
239-
toolDefinitions.add(new FormInputTool(objectMapper, promptService));
232+
toolDefinitions.add(new FormInputTool(objectMapper));
240233
toolDefinitions
241234
.add(new DataSplitTool(planId, manusProperties, sharedStateManager, unifiedDirectoryManager, objectMapper));
242235
toolDefinitions.add(new MapOutputTool(planId, manusProperties, sharedStateManager, unifiedDirectoryManager,
243236
terminateColumns, objectMapper));
244237
toolDefinitions.add(new ReduceOperationTool(planId, manusProperties, sharedStateManager,
245238
unifiedDirectoryManager, terminateColumns));
246239
toolDefinitions.add(new FinalizeTool(planId, manusProperties, sharedStateManager, unifiedDirectoryManager));
247-
toolDefinitions.add(new CronTool(cronService, objectMapper, toolPromptManager));
240+
toolDefinitions.add(new CronTool(cronService, objectMapper));
248241
toolDefinitions.add(pptGeneratorOperator);
249242

250243
List<McpServiceEntity> functionCallbacks = mcpService.getFunctionCallbacks(planId);

src/main/java/com/alibaba/cloud/ai/example/manus/tool/DocLoaderTool.java

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ public void setFilePath(String filePath) {
6969

7070
private static final String name = "doc_loader";
7171

72-
private final ToolPromptManager toolPromptManager;
73-
7472
public OpenAiApi.FunctionTool getToolDefinition() {
7573
String description = getDescription();
7674
String parameters = getParameters();
@@ -82,21 +80,21 @@ public OpenAiApi.FunctionTool getToolDefinition() {
8280
/**
8381
* Get FunctionToolCallback for Spring AI
8482
*/
85-
public static FunctionToolCallback<DocLoaderInput, ToolExecuteResult> getFunctionToolCallback(
86-
ToolPromptManager toolPromptManager) {
83+
public static FunctionToolCallback<DocLoaderInput, ToolExecuteResult> getFunctionToolCallback() {
8784
return FunctionToolCallback
8885
.<DocLoaderInput, ToolExecuteResult>builder(name,
89-
(DocLoaderInput input,
90-
org.springframework.ai.chat.model.ToolContext context) -> new DocLoaderTool(
91-
toolPromptManager)
92-
.run(input))
93-
.description(toolPromptManager.getToolDescription("doc_loader"))
86+
(DocLoaderInput input, org.springframework.ai.chat.model.ToolContext context) -> new DocLoaderTool()
87+
.run(input))
88+
.description("""
89+
Get the content information of a local file at a specified path.
90+
Use this tool when you want to get some related information asked by the user.
91+
This tool accepts the file path and gets the related information content.
92+
""")
9493
.inputType(DocLoaderInput.class)
9594
.build();
9695
}
9796

98-
public DocLoaderTool(ToolPromptManager toolPromptManager) {
99-
this.toolPromptManager = toolPromptManager;
97+
public DocLoaderTool() {
10098
}
10199

102100
private String lastFilePath = "";
@@ -145,12 +143,31 @@ public String getName() {
145143

146144
@Override
147145
public String getDescription() {
148-
return toolPromptManager.getToolDescription("doc_loader");
146+
return """
147+
Get the content information of a local file at a specified path.
148+
Use this tool when you want to get some related information asked by the user.
149+
This tool accepts the file path and gets the related information content.
150+
""";
149151
}
150152

151153
@Override
152154
public String getParameters() {
153-
return toolPromptManager.getToolParameters("doc_loader");
155+
return """
156+
{
157+
"type": "object",
158+
"properties": {
159+
"file_type": {
160+
"type": "string",
161+
"description": "(required) File type, only support pdf file."
162+
},
163+
"file_path": {
164+
"type": "string",
165+
"description": "(required) Get the absolute path of the file from the user request."
166+
}
167+
},
168+
"required": ["file_type", "file_path"]
169+
}
170+
""";
154171
}
155172

156173
@Override

src/main/java/com/alibaba/cloud/ai/example/manus/tool/FormInputTool.java

Lines changed: 54 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package com.alibaba.cloud.ai.example.manus.tool;
1717

18-
import com.alibaba.cloud.ai.example.manus.dynamic.prompt.service.PromptService;
1918
import com.alibaba.cloud.ai.example.manus.tool.code.ToolExecuteResult;
2019
import com.fasterxml.jackson.core.JsonProcessingException;
2120
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -36,28 +35,65 @@ public class FormInputTool extends AbstractBaseTool<FormInputTool.UserFormInput>
3635

3736
private final ObjectMapper objectMapper;
3837

39-
private final PromptService promptService;
40-
4138
private static final Logger log = LoggerFactory.getLogger(FormInputTool.class);
4239

4340
private String getToolParameters() {
44-
try {
45-
return promptService.getPromptByName("FORM_INPUT_TOOL_PARAMETERS").getPromptContent();
46-
}
47-
catch (Exception e) {
48-
log.warn("Failed to load prompt-based tool parameters, using legacy configuration", e);
49-
return LEGACY_PARAMETERS;
50-
}
41+
return """
42+
{
43+
"type": "object",
44+
"properties": {
45+
"description": {
46+
"type": "string",
47+
"description": "Description of the form and what information is being collected"
48+
},
49+
"inputs": {
50+
"type": "array",
51+
"items": {
52+
"type": "object",
53+
"properties": {
54+
"name": {
55+
"type": "string",
56+
"description": "Name/ID of the input field"
57+
},
58+
"label": {
59+
"type": "string",
60+
"description": "Display label for the input field"
61+
},
62+
"type": {
63+
"type": "string",
64+
"enum": ["text", "number", "email", "password", "textarea", "select", "checkbox", "radio"],
65+
"description": "Type of input field"
66+
},
67+
"required": {
68+
"type": "boolean",
69+
"description": "Whether this field is required"
70+
},
71+
"placeholder": {
72+
"type": "string",
73+
"description": "Placeholder text for the input field"
74+
},
75+
"options": {
76+
"type": "array",
77+
"items": {
78+
"type": "string"
79+
},
80+
"description": "Options for select, checkbox, or radio inputs"
81+
}
82+
},
83+
"required": ["name", "label", "type"]
84+
},
85+
"description": "Array of input field definitions"
86+
}
87+
},
88+
"required": ["description", "inputs"]
89+
}
90+
""";
5191
}
5292

5393
private String getToolDescription() {
54-
try {
55-
return promptService.getPromptByName("FORM_INPUT_TOOL_DESCRIPTION").getPromptContent();
56-
}
57-
catch (Exception e) {
58-
log.warn("Failed to load prompt-based tool description, using legacy configuration", e);
59-
return LEGACY_DESCRIPTION;
60-
}
94+
return """
95+
Create interactive forms to collect user input. This tool allows you to define form fields and collect structured data from users through a web interface.
96+
""";
6197
}
6298

6399
private static final String LEGACY_PARAMETERS = """
@@ -180,9 +216,8 @@ public void setDescription(String description) {
180216

181217
}
182218

183-
public FormInputTool(ObjectMapper objectMapper, PromptService promptService) {
219+
public FormInputTool(ObjectMapper objectMapper) {
184220
this.objectMapper = objectMapper;
185-
this.promptService = promptService;
186221
}
187222

188223
public enum InputState {

0 commit comments

Comments
 (0)