changed location of early exit
Browse files- ControllerExecutorFlow.py +29 -22
ControllerExecutorFlow.py
CHANGED
@@ -131,28 +131,15 @@ class ControllerExecutorFlow(CompositeFlow):
|
|
131 |
self.subflows["Controller"].send_message_async(message, pipe_to= self.flow_config["flow_ref"])
|
132 |
|
133 |
def call_executor(self):
|
134 |
-
|
135 |
-
#detect and early exit
|
136 |
-
if self.flow_state["command"] == "finish":
|
137 |
-
|
138 |
-
self._state_update_dict(
|
139 |
-
{
|
140 |
-
"EARLY_EXIT": True,
|
141 |
-
"answer": self.flow_state["command_args"]["answer"],
|
142 |
-
"status": "finished"
|
143 |
-
}
|
144 |
-
)
|
145 |
-
self.generate_reply()
|
146 |
-
|
147 |
#call executor
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
self.subflows[executor_branch_to_call].send_message_async(message, pipe_to= self.flow_config["flow_ref"])
|
156 |
|
157 |
|
158 |
def register_data_to_state(self, input_message):
|
@@ -166,12 +153,27 @@ class ControllerExecutorFlow(CompositeFlow):
|
|
166 |
self.flow_state["observation"] = input_message.data
|
167 |
|
168 |
else:
|
|
|
169 |
self._state_update_dict(
|
170 |
{
|
171 |
"command": input_message.data["command"],
|
172 |
"command_args": input_message.data["command_args"]
|
173 |
}
|
174 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
|
176 |
def run(self,input_message: FlowMessage):
|
177 |
""" Runs the WikiSearch Atomic Flow. It's used to execute a Wikipedia search and get page summaries.
|
@@ -184,11 +186,16 @@ class ControllerExecutorFlow(CompositeFlow):
|
|
184 |
|
185 |
flow_to_call = self.get_next_flow_to_call()
|
186 |
|
187 |
-
if
|
|
|
|
|
|
|
188 |
self.call_controller()
|
|
|
189 |
elif flow_to_call == "Executor":
|
190 |
self.call_executor()
|
191 |
self.flow_state["current_round"] += 1
|
|
|
192 |
else:
|
193 |
self._on_reach_max_round()
|
194 |
self.generate_reply()
|
|
|
131 |
self.subflows["Controller"].send_message_async(message, pipe_to= self.flow_config["flow_ref"])
|
132 |
|
133 |
def call_executor(self):
|
134 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
#call executor
|
136 |
+
executor_branch_to_call = self.flow_state["command"]
|
137 |
+
message = self._package_input_message(
|
138 |
+
data = self.flow_state["command_args"],
|
139 |
+
dst_flow = executor_branch_to_call
|
140 |
+
)
|
141 |
+
|
142 |
+
self.subflows[executor_branch_to_call].send_message_async(message, pipe_to= self.flow_config["flow_ref"])
|
|
|
143 |
|
144 |
|
145 |
def register_data_to_state(self, input_message):
|
|
|
153 |
self.flow_state["observation"] = input_message.data
|
154 |
|
155 |
else:
|
156 |
+
|
157 |
self._state_update_dict(
|
158 |
{
|
159 |
"command": input_message.data["command"],
|
160 |
"command_args": input_message.data["command_args"]
|
161 |
}
|
162 |
)
|
163 |
+
|
164 |
+
#detect and early exit
|
165 |
+
if self.flow_state["command"] == "finish":
|
166 |
+
|
167 |
+
self._state_update_dict(
|
168 |
+
{
|
169 |
+
"EARLY_EXIT": True,
|
170 |
+
"answer": self.flow_state["command_args"]["answer"],
|
171 |
+
"status": "finished"
|
172 |
+
}
|
173 |
+
)
|
174 |
+
self.flow_state["early_exit_flag"] = True
|
175 |
+
|
176 |
+
|
177 |
|
178 |
def run(self,input_message: FlowMessage):
|
179 |
""" Runs the WikiSearch Atomic Flow. It's used to execute a Wikipedia search and get page summaries.
|
|
|
186 |
|
187 |
flow_to_call = self.get_next_flow_to_call()
|
188 |
|
189 |
+
if self.flow_state.get("early_exit_flag",False):
|
190 |
+
self.generate_reply()
|
191 |
+
|
192 |
+
elif flow_to_call == "Controller":
|
193 |
self.call_controller()
|
194 |
+
|
195 |
elif flow_to_call == "Executor":
|
196 |
self.call_executor()
|
197 |
self.flow_state["current_round"] += 1
|
198 |
+
|
199 |
else:
|
200 |
self._on_reach_max_round()
|
201 |
self.generate_reply()
|