name: "CodeCollab_Flow" description: |2- Given a problem description, alternate between a step in which code is generated, and a step in which the produced code is evaluated and useful feedback is provided. max_rounds: 4 early_exit_key: "end_of_interaction" input_interface: - "problem_description" - "input_description" - "output_description" - "io_examples_and_explanation" output_interface: - "code" subflows_config: CodeGenerator: _target_: .CF_Code.instantiate_from_default_config name: "CodeGenerator" human_message_prompt_template: _target_: flows.prompt_template.JinjaPrompt template: |2- # Feedback on the last proposed solution {{code_feedback}} Consider the original problem statement, the last proposed solution and the provided feedback. Does the solution need to be updated? If so, provide the corrected version of the code in the following format: ```python {{code_placeholder}} ``` otherwise, reply: "Final answer." input_variables: - code_feedback partial_variables: code_placeholder: "{{python_code}}" input_interface_initialized: - "code_feedback" CodeCritic: _target_: .CF_CodeCritic.instantiate_from_default_config topology: # ~~~ Code Generator ~~~ - goal: "Generate/refine a solution." ### Input Interface input_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.KeyMatchInput ### Flow Specification flow: CodeGenerator ### Output Interface output_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.RegexFirstOccurrenceExtractor regex: '(?<=```python)([\s\S]*?)(?=```)' regex_fallback: '(?<=```)([\s\S]*?)(?=```)' input_key: "api_output" output_key: "code" strip: True assert_unique: True - _target_: flows.data_transformations.EndOfInteraction end_of_interaction_string: "Final answer" input_key: "api_output" output_key: "end_of_interaction" - _target_: flows.data_transformations.PrintPreviousMessages reset: false # ~~~ Code Critic ~~~ - goal: "Provide feedback for the candidate solution." ### Input Interface input_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.KeyMatchInput ### Flow Specification flow: CodeCritic ### Output Interface output_interface: _target_: flows.interfaces.KeyInterface keys_to_rename: api_output: "code_feedback" reset: true