CCFlows / CF_CodeDebug.yaml
nbaldwin's picture
renamed flows to aiflows
a44c20f
name: "CodeDebug_Flow"
description: |2-
Given a problem description, generate code, test and refine it until all tests pass or a maximum number of rounds is reached.
# ~~~ Input interface specification ~~~
input_interface:
- "problem_description"
- "input_description"
- "output_description"
- "io_examples_and_explanation"
- "public_tests_individual_io"
# ~~~ Output interface specification ~~~
output_interface:
- "code"
# ~~~ Flow specification ~~~
max_rounds: 4
### Subflows specification
subflows_config:
CodeGenerator:
_target_: .CF_Code.instantiate_from_default_config
name: "CodeGenerator"
backend:
_target_: aiflows.backends.llm_lite.LiteLLMBackend
model_name:
openai: "gpt-4"
azure: "azure/gpt-4"
human_message_prompt_template:
template: |2-
{{testing_results_summary}}
Consider the problem statement, the last proposed solution, and its issue. Provide a corrected version of the code that solves the original problem and resolves the issue, without any explanation, in the following format:
```python
{{code_placeholder}}
```
input_variables:
- testing_results_summary
partial_variables:
code_placeholder: "{{python_code}}"
input_interface_initialized:
- "testing_results_summary"
CodeTestingCritic:
_target_: .CF_CodeTesting.instantiate_from_default_config
### Topology specification (specifies how the sequence of messages will flow from one of the subflows to another)
topology:
# ~~~ Code Generator ~~~
- goal: "Generate/refine a solution."
### Input Interface
input_interface:
_target_: aiflows.interfaces.KeyInterface
additional_transformations:
- _target_: aiflows.data_transformations.KeyMatchInput
### Flow Specification
flow: CodeGenerator
### Output Interface
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.PrintPreviousMessages
keys_to_select:
- "code"
### Reset flag
reset: false
# ~~~ Code Testing Critic ~~~
- goal: "Test the code on the public tests and provide a results summary."
### Input Interface
input_interface:
_target_: aiflows.interfaces.KeyInterface
additional_transformations:
- _target_: aiflows.data_transformations.KeyMatchInput
### Flow Specification
flow: CodeTestingCritic
### Output Interface
output_interface:
_target_: aiflows.interfaces.KeyInterface
additional_transformations:
- _target_: .src.data_transformations.CorrectnessFlag
input_key: "public_tests_results"
output_key: "all_tests_passed"
- _target_: .src.data_transformations.TestingResultsSummaryGeneration
output_key: "testing_results_summary"
single_test_error_message: True
no_error_template: |2-
${.issue_title}
All of the executed tests passed.
compilation_error_template: |2-
${.issue_title}
The execution resulted in a compilation error.
## Compilation error message:
{{error_message}}
timeout_error_template: |2-
${.issue_title}
The execution timed out, the solution is not efficient enough.
runtime_error_template: |2-
${.issue_title}
The execution resulted in a runtime error on the following test.
## [Failed test] Input
```
{{test_input}}
```
## [Failed test] Runtime error message
{{error_message}}
single_test_error_template: |2-
${.issue_title}
The Python code does not solve the problem in the problem description due to logical errors. It fails the following test:
## [Failed test] Input
```
{{test_input}}
```
## [Failed test] Expected output
```
{{expected_output}}
```
## [Failed test] Generated output
```
{{generated_output}}
```
all_tests_header: |2-
${.issue_title}
The Python code does not solve the problem in the problem description due to logical errors. It fails on the following tests.
test_error_template: |2-
## [Failed test {{idx}}]
### [Failed test {{idx}}] Input
```
{{test_input}}
```
### [Failed test {{idx}}] Expected output
```
{{expected_output}}
```
### [Failed test {{idx}}] Generated output
```
{{generated_output}}
```
tests_separator: "\n\n"
issue_title: "# Issue with the last proposed solution"
### Reset flag
reset: true