name: "PlanCollab_Flow" description: |2- Given a problem description, alternate between a step in which a solution strategy is generated, and a step in which the solution strategy is evaluated and useful feedback is provided. # ~~~ Input interface specification ~~~ input_interface: - "problem_description" - "input_description" - "output_description" - "io_examples_and_explanation" # ~~~ Output interface specification ~~~ output_interface: - "plan" # ~~~ Flow specification ~~~ max_rounds: 4 early_exit_key: "end_of_interaction" subflows_config: PlanGenerator: _target_: .CF_Plan.instantiate_from_default_config human_message_prompt_template: _target_: langchain.PromptTemplate template: |2- # Feedback on the last proposed conceptual solution {{plan_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 conceptual solution in the following format: # Conceptual solution {{plan_placeholder}} otherwise, reply: "Final answer." input_variables: - plan_feedback partial_variables: plan_placeholder: "{{conceptual_solution}}" template_format: jinja2 input_interface_initialized: - "plan_feedback" PlanCritic: _target_: .CF_PlanCritic.instantiate_from_default_config topology: # ~~~ Plan Generator ~~~ - goal: "Generate/refine a solution." ### Input Interface input_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.KeyMatchInput ### Flow Specification flow: PlanGenerator ### Output Interface output_interface: _target_: flows.interfaces.KeyInterface additional_transformations: - _target_: flows.data_transformations.RegexFirstOccurrenceExtractor regex: '(?<=Conceptual solution)([\s\S]*?)(?=\n\n# [A-Z]|\Z)' regex_fallback: - '(?<=Conceptual solution:)([\s\S]*?)(?=\n\n# [A-Z]|\Z)' input_key: "api_output" output_key: "plan" 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 # ~~~ Plan 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: PlanCritic ### Output Interface output_interface: _target_: flows.interfaces.KeyInterface keys_to_rename: api_output: "plan_feedback" reset: true