16
16
import static org .opensearch .ml .engine .algorithms .agent .AgentUtils .getMlToolSpecs ;
17
17
import static org .opensearch .ml .engine .algorithms .agent .MLChatAgentRunner .LLM_INTERFACE ;
18
18
import static org .opensearch .ml .engine .algorithms .agent .MLChatAgentRunner .saveTraceData ;
19
- import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .PLANNER_PROMPT ;
20
- import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .PLANNER_PROMPT_TEMPLATE ;
21
- import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .PLANNER_WITH_HISTORY_PROMPT_TEMPLATE ;
19
+ import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .DEFAULT_PLANNER_PROMPT ;
20
+ import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .DEFAULT_PLANNER_PROMPT_TEMPLATE ;
21
+ import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .DEFAULT_PLANNER_WITH_HISTORY_PROMPT_TEMPLATE ;
22
+ import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .DEFAULT_REFLECT_PROMPT ;
23
+ import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .DEFAULT_REFLECT_PROMPT_TEMPLATE ;
22
24
import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .PLAN_EXECUTE_REFLECT_RESPONSE_FORMAT ;
23
- import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .REFLECT_PROMPT ;
24
- import static org .opensearch .ml .engine .algorithms .agent .PromptTemplate .REFLECT_PROMPT_TEMPLATE ;
25
25
26
26
import java .util .ArrayList ;
27
27
import java .util .Arrays ;
@@ -75,8 +75,15 @@ public class MLPlanExecuteAndReflectAgentRunner implements MLAgentRunner {
75
75
private final Map <String , Tool .Factory > toolFactories ;
76
76
private final Map <String , Memory .Factory > memoryFactoryMap ;
77
77
78
+ // prompts
79
+ private String plannerPrompt ;
80
+ private String plannerPromptTemplate ;
81
+ private String reflectPrompt ;
82
+ private String reflectPromptTemplate ;
83
+ private String plannerWithHistoryPromptTemplate ;
84
+
78
85
// defaults
79
- private static final String DEFAULT_DEEP_RESEARCH_SYSTEM_PROMPT = "Always respond in JSON format." ;
86
+ private static final String DEFAULT_SYSTEM_PROMPT = "Always respond in JSON format." ;
80
87
private static final String DEFAULT_REACT_SYSTEM_PROMPT = "You are a helpful assistant." ;
81
88
private static final String DEFAULT_NO_ESCAPE_PARAMS = "tool_configs,_tools" ;
82
89
private static final String DEFAULT_MAX_STEPS_EXECUTED = "20" ;
@@ -89,8 +96,8 @@ public class MLPlanExecuteAndReflectAgentRunner implements MLAgentRunner {
89
96
public static final String STEPS_FIELD = "steps" ;
90
97
public static final String COMPLETED_STEPS_FIELD = "completed_steps" ;
91
98
public static final String PLANNER_PROMPT_FIELD = "planner_prompt" ;
92
- public static final String REVAL_PROMPT_FIELD = "reval_prompt " ;
93
- public static final String DEEP_RESEARCH_RESPONSE_FORMAT_FIELD = "deep_research_response_format " ;
99
+ public static final String REFLECT_PROMPT_FIELD = "reflect_prompt " ;
100
+ public static final String PLAN_EXECUTE_REFLECT_RESPONSE_FORMAT_FIELD = "plan_execute_reflect_response_format " ;
94
101
public static final String PROMPT_TEMPLATE_FIELD = "prompt_template" ;
95
102
public static final String SYSTEM_PROMPT_FIELD = "system_prompt" ;
96
103
public static final String QUESTION_FIELD = "question" ;
@@ -104,6 +111,9 @@ public class MLPlanExecuteAndReflectAgentRunner implements MLAgentRunner {
104
111
public static final String NO_ESCAPE_PARAMS_FIELD = "no_escape_params" ;
105
112
public static final String DEFAULT_PROMPT_TOOLS_FIELD = "tools_prompt" ;
106
113
public static final String MAX_STEPS_EXECUTED_FIELD = "max_steps" ;
114
+ public static final String PLANNER_PROMPT_TEMPLATE_FIELD = "planner_prompt_template" ;
115
+ public static final String REFLECT_PROMPT_TEMPLATE_FIELD = "reflect_prompt_template" ;
116
+ public static final String PLANNER_WITH_HISTORY_TEMPLATE_FIELD = "planner_with_history_template" ;
107
117
108
118
public MLPlanExecuteAndReflectAgentRunner (
109
119
Client client ,
@@ -119,6 +129,11 @@ public MLPlanExecuteAndReflectAgentRunner(
119
129
this .xContentRegistry = registry ;
120
130
this .toolFactories = toolFactories ;
121
131
this .memoryFactoryMap = memoryFactoryMap ;
132
+ this .plannerPrompt = DEFAULT_PLANNER_PROMPT ;
133
+ this .plannerPromptTemplate = DEFAULT_PLANNER_PROMPT_TEMPLATE ;
134
+ this .reflectPrompt = DEFAULT_REFLECT_PROMPT ;
135
+ this .reflectPromptTemplate = DEFAULT_REFLECT_PROMPT_TEMPLATE ;
136
+ this .plannerWithHistoryPromptTemplate = DEFAULT_PLANNER_WITH_HISTORY_PROMPT_TEMPLATE ;
122
137
}
123
138
124
139
private void setupPromptParameters (Map <String , String > params ) {
@@ -130,11 +145,31 @@ private void setupPromptParameters(Map<String, String> params) {
130
145
params .put (USER_PROMPT_FIELD , userPrompt );
131
146
132
147
String userSystemPrompt = params .getOrDefault (SYSTEM_PROMPT_FIELD , "" );
133
- params .put (SYSTEM_PROMPT_FIELD , userSystemPrompt + DEFAULT_DEEP_RESEARCH_SYSTEM_PROMPT );
148
+ params .put (SYSTEM_PROMPT_FIELD , userSystemPrompt + DEFAULT_SYSTEM_PROMPT );
149
+
150
+ if (params .get (PLANNER_PROMPT_FIELD ) != null ) {
151
+ this .plannerPrompt = params .get (PLANNER_PROMPT_FIELD );
152
+ }
153
+ params .put (PLANNER_PROMPT_FIELD , this .plannerPrompt );
154
+
155
+ if (params .get (PLANNER_PROMPT_TEMPLATE_FIELD ) != null ) {
156
+ this .plannerPromptTemplate = params .get (PLANNER_PROMPT_TEMPLATE_FIELD );
157
+ }
158
+
159
+ if (params .get (REFLECT_PROMPT_FIELD ) != null ) {
160
+ this .reflectPrompt = params .get (REFLECT_PROMPT_FIELD );
161
+ }
162
+ params .put (REFLECT_PROMPT_FIELD , this .reflectPrompt );
163
+
164
+ if (params .get (REFLECT_PROMPT_TEMPLATE_FIELD ) != null ) {
165
+ this .reflectPromptTemplate = params .get (REFLECT_PROMPT_TEMPLATE_FIELD );
166
+ }
167
+
168
+ if (params .get (PLANNER_WITH_HISTORY_TEMPLATE_FIELD ) != null ) {
169
+ this .plannerWithHistoryPromptTemplate = params .get (PLANNER_WITH_HISTORY_TEMPLATE_FIELD );
170
+ }
134
171
135
- params .put (PLANNER_PROMPT_FIELD , PLANNER_PROMPT );
136
- params .put (REVAL_PROMPT_FIELD , REFLECT_PROMPT );
137
- params .put (DEEP_RESEARCH_RESPONSE_FORMAT_FIELD , PLAN_EXECUTE_REFLECT_RESPONSE_FORMAT );
172
+ params .put (PLAN_EXECUTE_REFLECT_RESPONSE_FORMAT_FIELD , PLAN_EXECUTE_REFLECT_RESPONSE_FORMAT );
138
173
139
174
params .put (NO_ESCAPE_PARAMS_FIELD , DEFAULT_NO_ESCAPE_PARAMS );
140
175
@@ -153,17 +188,17 @@ private void setupPromptParameters(Map<String, String> params) {
153
188
}
154
189
155
190
private void usePlannerPromptTemplate (Map <String , String > params ) {
156
- params .put (PROMPT_TEMPLATE_FIELD , PLANNER_PROMPT_TEMPLATE );
191
+ params .put (PROMPT_TEMPLATE_FIELD , this . plannerPromptTemplate );
157
192
populatePrompt (params );
158
193
}
159
194
160
- private void useRevalPromptTemplate (Map <String , String > params ) {
161
- params .put (PROMPT_TEMPLATE_FIELD , REFLECT_PROMPT_TEMPLATE );
195
+ private void useReflectPromptTemplate (Map <String , String > params ) {
196
+ params .put (PROMPT_TEMPLATE_FIELD , this . reflectPromptTemplate );
162
197
populatePrompt (params );
163
198
}
164
199
165
200
private void usePlannerWithHistoryPromptTemplate (Map <String , String > params ) {
166
- params .put (PROMPT_TEMPLATE_FIELD , PLANNER_WITH_HISTORY_PROMPT_TEMPLATE );
201
+ params .put (PROMPT_TEMPLATE_FIELD , this . plannerWithHistoryPromptTemplate );
167
202
populatePrompt (params );
168
203
}
169
204
@@ -366,7 +401,7 @@ private void executePlanningLoop(
366
401
367
402
addSteps (completedSteps , allParams , COMPLETED_STEPS_FIELD );
368
403
369
- useRevalPromptTemplate (allParams );
404
+ useReflectPromptTemplate (allParams );
370
405
371
406
executePlanningLoop (
372
407
llm ,
0 commit comments