| ### Structure of CodeWriterFlow | |
| ``` | |
| goal | |
| | | |
| v | |
| +---------------+ | |
| | Controller | --------<<<<-----------+ | |
| +---------------+ | | |
| | | | |
| | (command, command args) | | |
| | | | |
| v | | |
| +------------------+ | | |
| | Executor | Each branch is an | | |
| | (Tree Structure) | executor | | |
| +------------------+ | | |
| | ^ | |
| | (summary) | | |
| | | | |
| v | | |
| | | | |
| +-> goes back to the Controller>-+ | |
| ``` | |
| Structure of the Executors: | |
| ``` | |
| +-------------------+ | |
| | Branching | | |
| | Executor | | |
| +-------------------+ | |
| / | \ | |
| / | \ | |
| / | \ | |
| / | \ | |
| write_code ask_user test | |
| ``` | |
| About the branches: | |
| - [ask_user](https://huggingface.co/Tachi67/CodeWriterFlowModule/blob/main/CodeWriterAskUserFlow.py): Ask user for info / confirmation, etc. | |
| - [write_code](https://huggingface.co/Tachi67/InteractiveCodeGenFlowModule): Generates code (user edit is allowed) and fetches user feedback. | |
| - [test](https://huggingface.co/Tachi67/TestCodeFlowModule): Test the code, user can provide test suites, if nothing is provided, syntax of the code is checked. | |
| How it works: | |
| Controller calls write_code until user is satisfied in the feedback, then controller calls test to test the code, if test passes, finish. | |
| # Table of Contents | |
| * [run\_codewriter](#run_codewriter) | |
| * [CodeWriterCtrlFlow](#CodeWriterCtrlFlow) | |
| * [CodeWriterCtrlFlow](#CodeWriterCtrlFlow.CodeWriterCtrlFlow) | |
| * [CodeWriterAskUserFlow](#CodeWriterAskUserFlow) | |
| * [CodeWriterAskUserFlow](#CodeWriterAskUserFlow.CodeWriterAskUserFlow) | |
| * [run](#CodeWriterAskUserFlow.CodeWriterAskUserFlow.run) | |
| * [CodeWriterFlow](#CodeWriterFlow) | |
| * [CodeWriterFlow](#CodeWriterFlow.CodeWriterFlow) | |
| * [\_\_init\_\_](#__init__) | |
| <a id="run_codewriter"></a> | |
| # run\_codewriter | |
| <a id="CodeWriterCtrlFlow"></a> | |
| # CodeWriterCtrlFlow | |
| <a id="CodeWriterCtrlFlow.CodeWriterCtrlFlow"></a> | |
| ## CodeWriterCtrlFlow Objects | |
| ```python | |
| class CodeWriterCtrlFlow(ChatAtomicFlow) | |
| ``` | |
| refer to https://huggingface.co/Tachi67/JarvisFlowModule/blob/main/Controller_JarvisFlow.py | |
| <a id="CodeWriterAskUserFlow"></a> | |
| # CodeWriterAskUserFlow | |
| <a id="CodeWriterAskUserFlow.CodeWriterAskUserFlow"></a> | |
| ## CodeWriterAskUserFlow Objects | |
| ```python | |
| class CodeWriterAskUserFlow(HumanStandardInputFlow) | |
| ``` | |
| This class is used to ask for user feedback whenever the controller is unsure of something, or need confirmation, etc. | |
| *Expected Input*: | |
| - `question`: The question asked by the controller | |
| *Expected Behaviour*: | |
| - The question is displayed, and the user gives feedback by inputing string. | |
| *Expected Ouput*: | |
| - `feedback`: The input of the user. | |
| - `code`: No code was written. | |
| <a id="CodeWriterAskUserFlow.CodeWriterAskUserFlow.run"></a> | |
| #### run | |
| ```python | |
| def run(input_data: Dict[str, Any]) -> Dict[str, Any] | |
| ``` | |
| Run the flow. | |
| **Arguments**: | |
| - `input_data`: The input data. | |
| **Returns**: | |
| The output data. | |
| <a id="CodeWriterFlow"></a> | |
| # CodeWriterFlow | |
| <a id="CodeWriterFlow.CodeWriterFlow"></a> | |
| ## CodeWriterFlow Objects | |
| ```python | |
| class CodeWriterFlow(ContentWriterFlow) | |
| ``` | |
| This flow inherits from ContentWriterFlow, it is used to write code in an interactive way. | |
| In the subflow of the executor, we specify an InteractiveCodeGenFlow (https://huggingface.co/Tachi67/InteractiveCodeGenFlowModule) | |
| *Input Interface*: | |
| - `goal` | |
| *Output Interface*: | |
| - `code` | |
| - `result` | |
| - `summary` | |
| - `status` | |
| <a id="__init__"></a> | |
| # \_\_init\_\_ | |