aliarsal1512's picture
Create app.py
8fc2550 verified
import gradio as gr
import os
# Try to import transformers, but provide fallback
try:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
TRANSFORMERS_AVAILABLE = True
except ImportError:
TRANSFORMERS_AVAILABLE = False
print("Transformers not available - running in demo mode")
def load_model():
"""Load the model if transformers is available"""
if not TRANSFORMERS_AVAILABLE:
return None
try:
model_id = "aliarsal1512/clarifai_java_code_commenter"
print(f"Loading model: {model_id}")
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
pipe = pipeline(
"text2text-generation",
model=model,
tokenizer=tokenizer,
max_length=64,
num_beams=1,
do_sample=False
)
print("✅ Model loaded successfully!")
return pipe
except Exception as e:
print(f"❌ Error loading model: {e}")
return None
# Load model
pipe = load_model()
def generate_comment(code):
"""Generate comment for Java code"""
if pipe is None:
if not TRANSFORMERS_AVAILABLE:
return "⚠️ Transformers library not installed. Please check requirements.txt"
return "⚠️ Model failed to load. Check logs above."
try:
# Clean and prepare code
code = code.strip()
if not code:
return "Please provide some Java code"
# Generate comment
result = pipe(code)
comment = result[0]['generated_text']
return comment
except Exception as e:
return f"❌ Error: {str(e)}"
# Create Gradio interface
demo = gr.Interface(
fn=generate_comment,
inputs=gr.Textbox(
label="Java Code",
lines=10,
placeholder="Paste your Java code here...\nExample: public class Hello { public static void main(String[] args) { } }"
),
outputs=gr.Textbox(
label="Generated Comment",
lines=4
),
title="Java Code Comment Generator",
description="Generates comments for Java code using a fine-tuned T5 model",
examples=[
["public class Calculator {\n public int add(int a, int b) {\n return a + b;\n }\n}"],
["public class Main {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n}"]
],
theme="soft"
)
if __name__ == "__main__":
demo.launch(debug=True)