File size: 3,342 Bytes
193a8a4
 
 
 
471343c
 
193a8a4
471343c
 
 
53c5d75
 
 
 
 
 
 
 
193a8a4
471343c
193a8a4
 
 
471343c
193a8a4
 
dd1ccae
1a817cf
dd1ccae
 
 
 
 
 
 
 
 
471343c
dd1ccae
 
1a817cf
dd1ccae
50a3a4e
193a8a4
dd1ccae
fe71cb6
 
 
193a8a4
 
471343c
193a8a4
471343c
193a8a4
 
 
 
 
471343c
193a8a4
 
 
 
 
 
471343c
193a8a4
 
 
 
 
 
471343c
193a8a4
 
471343c
193a8a4
 
 
 
 
 
1a817cf
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM, set_seed, pipeline


title = "Python Code Generator"
description = "This is a space to convert English text to Python code using the [codeparrot-small-text-to-code](https://huggingface.co./codeparrot/codeparrot-small-text-to-code) model, a pre-trained Python code generation model trained on a dataset of docstrings and Python code extracted from Jupyter notebooks available at [github-jupyter-text](https://huggingface.co./datasets/codeparrot/github-jupyter-text)."
example = [
    ["Utility function to calculate the precision of predictions using sklearn metrics", 65, 0.6, 42],
    ["Let's implement a function that calculates the size of a file called filepath", 60, 0.6, 42],
    ["Let's implement the Bubble Sort sorting algorithm in an auxiliary function:", 87, 0.6, 42],
    ["Function to calculate the nth Fibonacci number.", 65, 0.6, 42],
    ["Function to calculate the factorial of a number.", 65, 0.6, 42],
    ["Function to reverse a string.", 65, 0.6, 42],
    ["Function to check if a number is prime.", 65, 0.6, 42],
    ["Function to generate the Fibonacci sequence up to the nth term.", 65, 0.6, 42],
    ["Function to generate the factorial sequence up to the nth term.", 65, 0.6, 42],
]


# Change the model to the pre-trained model
tokenizer = AutoTokenizer.from_pretrained("codeparrot/codeparrot-small-text-to-code")
model = AutoModelForCausalLM.from_pretrained("codeparrot/codeparrot-small-text-to-code")

def create_docstring(gen_prompt):
    return "\"\"\"\n" + gen_prompt + "\n\"\"\"\n\n"

def validate_inputs(gen_prompt, max_tokens, temperature, seed):
    # Add validation logic here
    if not gen_prompt:
        raise ValueError("English instructions cannot be empty.")
    if max_tokens <= 0 or max_tokens > 256:
        raise ValueError("Number of tokens to generate must be between 1 and 256.")
    if temperature < 0 or temperature > 2.5:
        raise ValueError("Temperature must be between 0 and 2.5.")
    if seed < 0 or seed > 1000:
        raise ValueError("Random seed must be between 0 and 1000.")

def generate_code(gen_prompt, max_tokens, temperature=0.6, seed=42):
    validate_inputs(gen_prompt, max_tokens, temperature, seed)
    
    # Rest of code generation logic here
    
    return generate_code


def save_to_text_file(output_text):
    with open("generated_code.txt", "w") as file:
        file.write(output_text)

iface = gr.Interface(
    fn=generate_code, 
    inputs=[
        gr.Textbox(label="English instructions", placeholder="Enter English instructions..."),
        gr.inputs.Slider(
            minimum=8,
            maximum=256,
            step=1,
            default=8,
            label="Number of tokens to generate",
        ),
        gr.inputs.Slider(
            minimum=0,
            maximum=2.5,
            step=0.1,
            default=0.6,
            label="Temperature",
        ),
        gr.inputs.Slider(
            minimum=0,
            maximum=1000,
            step=1,
            default=42,
            label="Random seed for generation"
        )
    ],
    outputs=gr.Code(label="Generated Python code", language="python", lines=10),
    examples=example,
    layout="horizontal",
    theme="peach",
    description=description,
    title=title
)
iface.launch()