AbstractBossFlowModule / CtrlExMemFlow.yaml
Tachi67's picture
Upload 7 files
d30a78e
# Abstract class, should provide more information in subclasses
_target_: flow_modules.aiflows.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_: flow_modules.aiflows.MemoryWritingFlowModule.MemoryWritingAtomicFlow.instantiate_from_default_config
# default input interface is summary & memory_files
MemoryReading:
_target_: flow_modules.aiflows.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