cleaned up run
Browse files- ControllerExecutorFlow.py +31 -20
ControllerExecutorFlow.py
CHANGED
@@ -64,33 +64,44 @@ class ControllerExecutorFlow(CompositeFlow):
|
|
64 |
:param flow_config: The configuration of the flow (see Configuration Parameters).
|
65 |
:param subflows: A list of subflows. Required when instantiating the subflow programmatically (it replaces subflows_config from flow_config).
|
66 |
"""
|
67 |
-
|
68 |
-
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
-
def
|
71 |
-
super().set_up_flow_state()
|
72 |
|
|
|
73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
def run(self,input_data):
|
75 |
|
76 |
executor_reply = input_data
|
77 |
|
78 |
for round in range(self.flow_config["max_rounds"]):
|
79 |
-
|
80 |
-
if controller_reply["command"] == "finish":
|
81 |
-
return {
|
82 |
-
"EARLY_EXIT": True,
|
83 |
-
"answer": controller_reply["command_args"]["answer"],
|
84 |
-
"status": "finished"
|
85 |
-
}
|
86 |
-
|
87 |
-
|
88 |
|
89 |
-
executor_reply
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
return
|
94 |
-
"
|
|
|
95 |
"status": "unfinished"
|
96 |
-
}
|
|
|
64 |
:param flow_config: The configuration of the flow (see Configuration Parameters).
|
65 |
:param subflows: A list of subflows. Required when instantiating the subflow programmatically (it replaces subflows_config from flow_config).
|
66 |
"""
|
67 |
+
|
68 |
+
def _on_reach_max_round(self):
|
69 |
+
""" This method is called when the flow reaches the maximum amount of rounds. It updates the state of the flow and starts the process of terminating the flow."""
|
70 |
+
self._state_update_dict({
|
71 |
+
"answer": "The maximum amount of rounds was reached before the model found an answer.",
|
72 |
+
"status": "unfinished"
|
73 |
+
})
|
74 |
|
75 |
+
def _single_round_controller_executor(self, executor_reply: Dict[str,Any]) -> Dict[str,Any]:
|
|
|
76 |
|
77 |
+
controller_reply = self.ask_subflow("Controller", executor_reply).get_data()
|
78 |
|
79 |
+
if controller_reply["command"] == "finish":
|
80 |
+
return {
|
81 |
+
"EARLY_EXIT": True,
|
82 |
+
"answer": controller_reply["command_args"]["answer"],
|
83 |
+
"status": "finished"
|
84 |
+
}
|
85 |
+
|
86 |
+
executor_reply = {
|
87 |
+
"observation": self.ask_subflow(controller_reply["command"], controller_reply["command_args"]).get_data()
|
88 |
+
}
|
89 |
+
|
90 |
+
return executor_reply
|
91 |
+
|
92 |
def run(self,input_data):
|
93 |
|
94 |
executor_reply = input_data
|
95 |
|
96 |
for round in range(self.flow_config["max_rounds"]):
|
97 |
+
executor_reply = self._single_round_controller_executor(executor_reply)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
+
if executor_reply.get("EARLY_EXIT",False):
|
100 |
+
return executor_reply
|
101 |
+
|
102 |
+
self._on_reach_max_round()
|
103 |
+
return {
|
104 |
+
"EARLY_EXIT": False,
|
105 |
+
"answer": executor_reply["observation"],
|
106 |
"status": "unfinished"
|
107 |
+
}
|