File size: 958 Bytes
cbb225c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from typing import Dict, Any

from flows.base_flows import CircularFlow
from flows.utils import logging

from .ControllerAtomicFlow import ControllerAtomicFlow

logging.set_verbosity_debug()
log = logging.get_logger(__name__)


class ControllerExecutorFlow(CircularFlow):
    def _on_reach_max_round(self):
        self._state_update_dict({
            "answer": "The maximum amount of rounds was reached before the model found an answer.",
            "status": "unfinished"
        })

    @CircularFlow.output_msg_payload_processor
    def detect_finish_or_continue(self, output_payload: Dict[str, Any], src_flow: ControllerAtomicFlow) -> Dict[str, Any]:
        command = output_payload["command"]
        if command == "finish":
            return {
                "EARLY_EXIT": True,
                "answer": output_payload["command_args"]["answer"],
                "status": "finished"
            }
        else:
            return output_payload