File size: 2,168 Bytes
ecbbaac
697b71b
 
ecbbaac
697b71b
 
30655bb
 
 
697b71b
30655bb
697b71b
 
 
 
 
 
 
 
 
 
 
 
 
30655bb
697b71b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30655bb
 
697b71b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ecbbaac
 
30655bb
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
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torch

# Load smaller CodeT5 model (faster)
model_name = "Salesforce/codet5-small"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

# Main function
def eternos_debugger(code, error):
    if not code.strip():
        return "❌ Please provide some code."
    if not error.strip():
        return "❌ Please provide the error message you encountered."
    
    # Smart prompting
    prompt = (
        f"You are an expert Python debugger.\n"
        f"Given the buggy code and the error message, fix the code.\n\n"
        f"Code:\n{code}\n\n"
        f"Error:\n{error}\n\n"
        f"Corrected Code:"
    )

    inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=512)
    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_length=512,
            num_beams=4,
            early_stopping=True,
            temperature=0.7,
            top_p=0.95
        )
    
    fixed_code = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return fixed_code.strip()

# Gradio UI
interface = gr.Interface(
    fn=eternos_debugger,
    inputs=[
        gr.Textbox(label="🐞 Buggy Code", lines=12, placeholder="Paste your Python code here..."),
        gr.Textbox(label="🚨 Error Message", lines=3, placeholder="Paste the error message you got...")
    ],
    outputs=gr.Code(label="βœ… Suggested Fixed Code"),
    title="πŸ› οΈ Eternos: AI Code Debugger",
    description="Eternos uses a CodeT5 model to help debug and fix Python code. Provide your code and the error message to get a fix.",
    theme="soft",
    allow_flagging="never",
    examples=[
        [
            "def add_numbers(a, b)\n    return a + b",
            "SyntaxError: expected ':'"
        ],
        [
            "for i in range(5)\n    print(i)",
            "SyntaxError: expected ':'"
        ],
        [
            "def divide(a, b):\n    return a / b\nprint(divide(4, 0))",
            "ZeroDivisionError: division by zero"
        ]
    ]
)

interface.launch()