name: "ChatInteractiveFlow" description: "Flow that enables chatting between a ChatAtomicFlow and a user providing the input." max_rounds: null # Run until early exit is detected input_interface: _target_: flows.interfaces.KeyInterface output_interface: - "end_of_interaction" - "answer" subflows_config: Assistant: _target_: aiflows.ChatFlowModule.ChatAtomicFlow.instantiate_from_default_config User: _target_: aiflows.HumanStandardInputFlowModule.HumanStandardInputFlow.instantiate_from_default_config topology: - goal: "Query the assistant" ### Input Interface input_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.KeyMatchInput ### Flow Specification flow: Assistant reset_every_round: false ### Output Interface output_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.PrintPreviousMessages - goal: "Ask the user for input" ### Input Interface input_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.KeyMatchInput ### Flow Specification flow: User reset_every_round: true ### Output Interface output_interface: _target_: flows.interfaces.KeyInterface keys_to_rename: human_input: query additional_transformations: - _target_: flows.data_transformations.RegexFirstOccurrenceExtractor regex: '(?<=```answer)([\s\S]*?)(?=```)' input_key: "query" output_key: "answer" strip: True assert_unique: True - _target_: flows.data_transformations.EndOfInteraction end_of_interaction_string: "" input_key: "query" output_key: "end_of_interaction" early_exit_key: "end_of_interaction"