Added README.md describing Gradio app.
This commit is contained in:
131
week4/community-contributions/c_extension_generator/README.md
Normal file
131
week4/community-contributions/c_extension_generator/README.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# Python C Extension code generator
|
||||
|
||||
This folder contains a Jupyter notebook that demonstrates how to use a Frontier model
|
||||
to generate high-performance Python C extension code from Python code.
|
||||
|
||||
The notebook includes examples of generating C extensions for calculating Pi using the
|
||||
Leibniz formula and finding the maximum sub-array in an array.
|
||||
|
||||
Also, it includes a Gradio app that provides an interactive interface for users to input
|
||||
Python code, generate C extension code, compile it, and test its performance against
|
||||
the original Python code.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
> **Always review the generated codes before running them, as they will be executed in
|
||||
> your local environment and may contain code that could be harmful or unwanted.**
|
||||
>
|
||||
> AI-generated code may contain errors or unsafe practices, so it's crucial to
|
||||
> thoroughly review and test any code before using it in a production environment.
|
||||
>
|
||||
> Never run code generated by AI models without understanding its implications and
|
||||
> ensuring it adheres to your security and safety standards.
|
||||
|
||||
> [!IMPORTANT]
|
||||
>
|
||||
> **Disclaimer:** This notebook and the Gradio app are provided for educational purposes
|
||||
> only. Use them at your own risk.
|
||||
|
||||
## Gradio app overview
|
||||
|
||||
In this image, you can see the Gradio app dashboard whose main sections are
|
||||
described below.
|
||||
|
||||
\
|
||||
*Image: Gradio app dashboard with default example `hello world` code loaded.*
|
||||
*(compile output redacted for privacy)*
|
||||
|
||||
Sections:
|
||||
|
||||
* **Dropdown selectors and input fields**:
|
||||
* **Module name input**:
|
||||
A text input field where users can specify the name of the C extension module to be
|
||||
generated.
|
||||
|
||||
That name will be used to create the C extension file `<module_name>.c` and
|
||||
the `setup.py` file required to compile the extension.
|
||||
|
||||
That name will also be used to import the compiled module as usual in Python:
|
||||
|
||||
```python
|
||||
import <module_name>
|
||||
```
|
||||
|
||||
Or
|
||||
|
||||
```python
|
||||
from <module_name> import <function_name>
|
||||
```
|
||||
|
||||
* **Model selector**:
|
||||
A dropdown menu to select the Frontier model to use for code generation.
|
||||
|
||||
Currently it includes:
|
||||
* `gpt-4o` (default)
|
||||
* `gpt-5`
|
||||
|
||||
* **Text input areas**:
|
||||
|
||||
This areas are all editable, included those filled with generated code by the model.
|
||||
this allows users to modify and experiment with the code as needed.
|
||||
|
||||
* **Python code**:
|
||||
A text area where users can input their Python code.
|
||||
* **C extension code**:
|
||||
A text area that displays the generated C extension code and allows to edit it.
|
||||
* **Compilation code**:
|
||||
A text area that shows the `setup.py` file generated,
|
||||
this file is required to compile the C extension.
|
||||
* **Test compare code**:
|
||||
A text area that provides example code to run the compiled C extension.
|
||||
|
||||
* **Output areas**:
|
||||
|
||||
This are non-editable areas that display the results of various operations.
|
||||
|
||||
* **C Extension result**:
|
||||
A text area that displays the output of the C extension code build.
|
||||
|
||||
Beware that this area can contain a large amount of text including warnings during
|
||||
the compilation process and sensible information about the local environment,
|
||||
like: paths, Python version, etc may be included.
|
||||
|
||||
Redact that information if you plan to share the output.
|
||||
|
||||
* **Test result**:
|
||||
A text area that displays the output of the test code run.
|
||||
|
||||
* **Buttons**:
|
||||
* **Generate extension code**:
|
||||
A button that triggers the generation of the C extension code from the provided
|
||||
Python code.
|
||||
|
||||
It will call the Frontier model to generate the C code, the setup.py file and
|
||||
the test code, filling the corresponding text areas automatically.
|
||||
|
||||
* **Compile extension**:
|
||||
A button that compiles the generated C extension using the provided `setup.py` file.
|
||||
It will create the extension c file, `<module_name>.c` and the `setup.py` files in
|
||||
the local folder, then it will run the compilation command and build the C extension.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
> **Always review the `setup.py` code before running it, as it will be executed in
|
||||
> your local environment and may contain code that could be harmful or unwanted.**
|
||||
>
|
||||
> **Also review the generated C code, as it will be compiled and executed in your
|
||||
> local environment and may contain code that could be harmful or unwanted.**
|
||||
|
||||
It will display the compilation output in the "C Extension result" area.
|
||||
|
||||
* **Test code**:
|
||||
A button that executes the test code to compare the performance of the original
|
||||
Python code and the generated C extension.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
> **Always review the test code before running it, as it will be executed in
|
||||
> your local environment and may contain code that could be harmful or unwanted.**
|
||||
|
||||
Will save the test code provided in the "Test compare code" into the
|
||||
`usage_example.py` file and execute it showing the output in the "Test result" area.
|
||||
Reference in New Issue
Block a user