# Abstract class, should provide more information in subclasses _target_: Tachi67.AbstractBossFlowModule.CtrlExMemFlow.instantiate_from_default_config name: "AbstractCtrlExMemFlow" description: "Abstract class of controller-executor flow with mem reading and mem writing" max_rounds: 30 input_interface: - "plan" - "memory_files" - "goal" - "logs" output_interface: - "summary" - "result" subflows_config: Controller: _target_: ??? # controller of the flow, could be a subclass of ChatAtomic flow, see https://huggingface.co/Tachi67/CodeWriterFlowModule/blob/main/CodeWriterCtrlFlow.py backend: api_infos: ??? model_name: openai: gpt-4 azure: azure/gpt-4 # In subclasses, should provide specific command and command args. # E.g., # commands: # wiki_search: # description: "Performs a search on Wikipedia." # input_args: ["search_term"] Executor: _target_: aiflows.base_flows.BranchingFlow.instantiate_from_default_config # In subclasses, should provide what are the branches of executors # E.g., # subflows_config: # wiki_search: # _target_: .WikiSearchAtomicFlow.instantiate_from_default_config MemoryWriting: _target_: Tachi67.MemoryWritingFlowModule.MemoryWritingAtomicFlow.instantiate_from_default_config # default input interface is summary & memory_files MemoryReading: _target_: Tachi67.MemoryReadingFlowModule.MemoryReadingAtomicFlow.instantiate_from_default_config # should provide the output of MemRead in the CtrlExMem flow e.g. plan, logs, code_library # output is then like {"plan":"plan string", "code_library": "function signatures in the code library"} # default output interface is code_library topology: - goal: "Select the next action and prepare the input for the executor." input_interface: _target_: aiflows.interfaces.KeyInterface additional_transformations: - _target_: aiflows.data_transformations.KeyMatchInput flow: Controller output_interface: ??? # In subclasses, should provide name of function name of output processor #_target_: Controller.detect_finish_or_continue reset: false - goal: "Execute the action specified by the Controller." input_interface: _target_: aiflows.interfaces.KeyInterface keys_to_rename: command: branch command_args: branch_input_data keys_to_select: ["branch", "branch_input_data"] flow: Executor output_interface: _target_: aiflows.interfaces.KeyInterface # in subclasses, should provide corresponding output interface of branches keys_to_rename: branch_output_data.summary: summary branch_output_data.result: result keys_to_delete: [ "branch_output_data" ] reset: false - goal: "Write memory to memory files" input_interface: _target_: aiflows.interfaces.KeyInterface additional_transformations: - _target_: aiflows.data_transformations.KeyMatchInput flow: MemoryWriting reset: false - goal: "Read memory from memory files (flow_state)" input_interface: _target_: aiflows.interfaces.KeyInterface additional_transformations: - _target_: aiflows.data_transformations.KeyMatchInput flow: MemoryReading reset: false