import streamlit as st from transformers import RobertaTokenizer, T5ForConditionalGeneration import torch # ========================================================= # PAGE CONFIG # ========================================================= st.set_page_config( page_title="Multilingual Code Comment Generator", page_icon="🤖", layout="wide", initial_sidebar_state="expanded" ) # ========================================================= # CUSTOM CSS # ========================================================= st.markdown( """ """, unsafe_allow_html=True ) # ========================================================= # SIDEBAR # ========================================================= with st.sidebar: st.title("⚡ Project Info") st.markdown("---") st.markdown("### 🤖 Model") st.write("Salesforce CodeT5") st.markdown("### 📊 BLEU Score") st.write("24.44") st.markdown("### 🧠 Architecture") st.write("Encoder-Decoder Transformer") st.markdown("### 🔥 Frameworks") st.write("PyTorch + HuggingFace") st.markdown("### 🌐 Supported Languages") st.write("Python") st.write("Java (Upcoming)") st.markdown("---") st.markdown("### 🚀 Features") st.write("✅ AI-powered code summarization") st.write("✅ Automatic docstring generation") st.write("✅ Beam-search decoding") st.write("✅ Transformer fine-tuning") st.write("✅ HuggingFace model deployment") # ========================================================= # MODEL CONFIG # ========================================================= MODEL_NAME = "Eren18/multilingual-code-comment-generator-v2" # ========================================================= # MODEL LOADING # ========================================================= @st.cache_resource def load_model(): tokenizer = RobertaTokenizer.from_pretrained(MODEL_NAME) model = T5ForConditionalGeneration.from_pretrained(MODEL_NAME) device = "cuda" if torch.cuda.is_available() else "cpu" model = model.to(device) return tokenizer, model, device tokenizer, model, device = load_model() # ========================================================= # INFERENCE FUNCTION # ========================================================= def generate_comment(code): inputs = tokenizer( code, return_tensors="pt", truncation=True, max_length=256 ).to(device) outputs = model.generate( **inputs, max_length=128, num_beams=4, no_repeat_ngram_size=2, early_stopping=True ) generated_comment = tokenizer.decode( outputs[0], skip_special_tokens=True ) return generated_comment # ========================================================= # HEADER # ========================================================= st.markdown( """
🤗 HuggingFace | 🔥 PyTorch | ⚡ Streamlit | 🧠 Transformers