|
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_: aiflows.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: |
|
|
|
- goal: "Generate/refine a solution." |
|
|
|
|
|
input_interface: |
|
_target_: aiflows.interfaces.KeyInterface |
|
additional_transformations: |
|
- _target_: aiflows.data_transformations.KeyMatchInput |
|
|
|
|
|
flow: CodeGenerator |
|
|
|
|
|
output_interface: |
|
_target_: aiflows.interfaces.KeyInterface |
|
additional_transformations: |
|
- _target_: aiflows.data_transformations.RegexFirstOccurrenceExtractor |
|
regex: '(?<=```python)([\s\S]*?)(?=```)' |
|
regex_fallback: '(?<=```)([\s\S]*?)(?=```)' |
|
input_key: "api_output" |
|
output_key: "code" |
|
strip: True |
|
assert_unique: True |
|
- _target_: aiflows.data_transformations.EndOfInteraction |
|
end_of_interaction_string: "Final answer" |
|
input_key: "api_output" |
|
output_key: "end_of_interaction" |
|
- _target_: aiflows.data_transformations.PrintPreviousMessages |
|
reset: false |
|
|
|
|
|
- goal: "Provide feedback for the candidate solution." |
|
|
|
|
|
input_interface: |
|
_target_: aiflows.interfaces.KeyInterface |
|
additional_transformations: |
|
- _target_: aiflows.data_transformations.KeyMatchInput |
|
|
|
|
|
flow: CodeCritic |
|
|
|
|
|
output_interface: |
|
_target_: aiflows.interfaces.KeyInterface |
|
keys_to_rename: |
|
api_output: "code_feedback" |
|
|
|
reset: true |
|
|