Spaces:
Running
Running
File size: 3,446 Bytes
7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d 7bb1fb8 333956d | 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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 | import gradio as gr
import torch
from fastai.text.all import *
import warnings
warnings.filterwarnings('ignore')
# Load the trained model
def load_model():
try:
learn = load_learner('js_concept_tagger_simple_numbers.pkl')
return learn
except Exception as e:
print(f"Error loading model: {e}")
return None
# Initialize model
model = load_model()
def predict_js_concept(code_snippet):
"""Predict JavaScript concept for given code snippet"""
if model is None:
return "Error: Model not loaded", 0.0, "Model loading failed"
try:
# Make prediction
pred, pred_idx, probs = model.predict(code_snippet)
# Get the predicted concept and confidence
predicted_concept = str(pred)
confidence = float(probs.max())
# Get all predictions with probabilities
concept_names = model.dls.vocab[1] # label vocabulary
all_predictions = []
for i, prob in enumerate(probs):
if prob > 0.1: # Show predictions above 10%
all_predictions.append(f"{concept_names[i]}: {float(prob):.3f}")
all_predictions_str = "\n".join(all_predictions)
return predicted_concept, confidence, all_predictions_str
except Exception as e:
return f"Error: {str(e)}", 0.0, "Prediction failed"
# Create Gradio interface
def create_interface():
# Example code snippets for users to try
examples = [
["const age = 25;"],
["const name = 'John Doe';"],
["const isActive = true;"],
["const items = [1, 2, 3];"],
["function greet() { return 'Hello'; }"],
["if (x > 0) { console.log('positive'); }"],
["for (let i = 0; i < 10; i++) { }"],
["arr.push(newItem);"],
["const sum = 10 + 20;"],
["let message = 'Welcome to our app';"]
]
interface = gr.Interface(
fn=predict_js_concept,
inputs=[
gr.Textbox(
label="JavaScript Code Snippet",
placeholder="Enter your JavaScript code here...",
lines=3,
max_lines=10
)
],
outputs=[
gr.Textbox(label="Predicted Concept", interactive=False),
gr.Number(label="Confidence Score", precision=3),
gr.Textbox(label="All Predictions", lines=6, interactive=False)
],
title="π JavaScript Concept Classifier",
description="""
This AI model classifies JavaScript code snippets into different programming concepts:
**Supported Concepts:**
- π’ **Numbers**: Numeric values and assignments
- π **Strings**: Text and string literals
- β
**Booleans**: True/false values
- π **Arrays**: Array operations and methods
- β‘ **Functions**: Function definitions and calls
- π **Control Flow**: If statements, loops, switches
**How to use:** Simply paste your JavaScript code in the text box below and click Submit!
""",
examples=examples,
theme=gr.themes.Soft(),
allow_flagging="never"
)
return interface
# Launch the interface
if __name__ == "__main__":
demo = create_interface()
demo.launch()
|