Update app.py
Browse files
app.py
CHANGED
@@ -25,24 +25,24 @@ def analyze_weakness(csv_file):
|
|
25 |
return summary.to_string()
|
26 |
|
27 |
# ------------------------------
|
28 |
-
# Teaching Assistant
|
29 |
# ------------------------------
|
30 |
def chatbot_response(message, history):
|
31 |
return "This is a placeholder response for now. (LLM not integrated)"
|
32 |
|
33 |
# ------------------------------
|
34 |
-
# Speech Question Solver
|
35 |
# ------------------------------
|
36 |
def speech_answer(audio):
|
37 |
-
return "Audio
|
38 |
|
39 |
# ------------------------------
|
40 |
-
#
|
41 |
# ------------------------------
|
42 |
def summarize_text(text):
|
43 |
input_text = f"summarize: {text.strip()}"
|
44 |
input_ids = tokenizer_qg.encode(input_text, return_tensors="pt", max_length=512, truncation=True)
|
45 |
-
summary_ids = model_qg.generate(input_ids, max_length=150, min_length=30, length_penalty=5
|
46 |
return tokenizer_qg.decode(summary_ids[0], skip_special_tokens=True)
|
47 |
|
48 |
# ------------------------------
|
@@ -50,18 +50,15 @@ def summarize_text(text):
|
|
50 |
# ------------------------------
|
51 |
def predict_engagement(file):
|
52 |
df = pd.read_csv(file.name)
|
53 |
-
avg_time = df[
|
54 |
-
if avg_time
|
55 |
-
return "β οΈ Risk of disengagement"
|
56 |
-
else:
|
57 |
-
return "β
Engaged student"
|
58 |
|
59 |
# ------------------------------
|
60 |
# Badge Generator
|
61 |
# ------------------------------
|
62 |
def generate_badge(file):
|
63 |
df = pd.read_csv(file.name)
|
64 |
-
avg_score = df[
|
65 |
if avg_score >= 80:
|
66 |
return "π
Gold Badge"
|
67 |
elif avg_score >= 50:
|
@@ -87,7 +84,7 @@ def check_plagiarism(text1, text2):
|
|
87 |
return f"Similarity Score: {score:.2f} - {'β οΈ Possible Plagiarism' if score > 0.8 else 'β
Looks Original'}"
|
88 |
|
89 |
# ------------------------------
|
90 |
-
# Gradio
|
91 |
# ------------------------------
|
92 |
with gr.Blocks() as demo:
|
93 |
gr.Markdown("# π AI-Powered LMS Suite (Offline Mode)")
|
@@ -109,9 +106,9 @@ with gr.Blocks() as demo:
|
|
109 |
gr.ChatInterface(fn=chatbot_response)
|
110 |
|
111 |
with gr.Tab("π€ Speech Q Solver"):
|
112 |
-
audio_in = gr.Audio(
|
113 |
-
audio_btn = gr.Button("Answer")
|
114 |
-
audio_out = gr.Textbox()
|
115 |
audio_btn.click(fn=speech_answer, inputs=audio_in, outputs=audio_out)
|
116 |
|
117 |
with gr.Tab("π Summarizer"):
|
@@ -136,19 +133,4 @@ with gr.Blocks() as demo:
|
|
136 |
trans_in = gr.Textbox(label="Enter Text")
|
137 |
trans_lang = gr.Textbox(label="Target Language")
|
138 |
trans_btn = gr.Button("Translate")
|
139 |
-
|
140 |
-
trans_btn.click(fn=translate_text, inputs=[trans_in, trans_lang], outputs=trans_out)
|
141 |
-
|
142 |
-
with gr.Tab("π Plagiarism Checker"):
|
143 |
-
text1 = gr.Textbox(label="Text 1", lines=3)
|
144 |
-
text2 = gr.Textbox(label="Text 2", lines=3)
|
145 |
-
plag_btn = gr.Button("Check Similarity")
|
146 |
-
plag_out = gr.Textbox()
|
147 |
-
plag_btn.click(fn=check_plagiarism, inputs=[text1, text2], outputs=plag_out)
|
148 |
-
|
149 |
-
# ------------------------------
|
150 |
-
# Launch App
|
151 |
-
# ------------------------------
|
152 |
-
demo.launch()
|
153 |
-
|
154 |
-
|
|
|
25 |
return summary.to_string()
|
26 |
|
27 |
# ------------------------------
|
28 |
+
# Teaching Assistant (Placeholder)
|
29 |
# ------------------------------
|
30 |
def chatbot_response(message, history):
|
31 |
return "This is a placeholder response for now. (LLM not integrated)"
|
32 |
|
33 |
# ------------------------------
|
34 |
+
# Speech Question Solver (Mock)
|
35 |
# ------------------------------
|
36 |
def speech_answer(audio):
|
37 |
+
return "Audio transcription and answer generation not supported offline."
|
38 |
|
39 |
# ------------------------------
|
40 |
+
# Summarizer
|
41 |
# ------------------------------
|
42 |
def summarize_text(text):
|
43 |
input_text = f"summarize: {text.strip()}"
|
44 |
input_ids = tokenizer_qg.encode(input_text, return_tensors="pt", max_length=512, truncation=True)
|
45 |
+
summary_ids = model_qg.generate(input_ids, max_length=150, min_length=30, length_penalty=5.0, num_beams=2)
|
46 |
return tokenizer_qg.decode(summary_ids[0], skip_special_tokens=True)
|
47 |
|
48 |
# ------------------------------
|
|
|
50 |
# ------------------------------
|
51 |
def predict_engagement(file):
|
52 |
df = pd.read_csv(file.name)
|
53 |
+
avg_time = df["TimeSpent"].mean()
|
54 |
+
return "β
Engaged student" if avg_time >= 10 else "β οΈ Risk of disengagement"
|
|
|
|
|
|
|
55 |
|
56 |
# ------------------------------
|
57 |
# Badge Generator
|
58 |
# ------------------------------
|
59 |
def generate_badge(file):
|
60 |
df = pd.read_csv(file.name)
|
61 |
+
avg_score = df["Score"].mean()
|
62 |
if avg_score >= 80:
|
63 |
return "π
Gold Badge"
|
64 |
elif avg_score >= 50:
|
|
|
84 |
return f"Similarity Score: {score:.2f} - {'β οΈ Possible Plagiarism' if score > 0.8 else 'β
Looks Original'}"
|
85 |
|
86 |
# ------------------------------
|
87 |
+
# Gradio Interface
|
88 |
# ------------------------------
|
89 |
with gr.Blocks() as demo:
|
90 |
gr.Markdown("# π AI-Powered LMS Suite (Offline Mode)")
|
|
|
106 |
gr.ChatInterface(fn=chatbot_response)
|
107 |
|
108 |
with gr.Tab("π€ Speech Q Solver"):
|
109 |
+
audio_in = gr.Audio(label="Upload Audio", type="filepath")
|
110 |
+
audio_btn = gr.Button("Get Answer")
|
111 |
+
audio_out = gr.Textbox(label="Answer")
|
112 |
audio_btn.click(fn=speech_answer, inputs=audio_in, outputs=audio_out)
|
113 |
|
114 |
with gr.Tab("π Summarizer"):
|
|
|
133 |
trans_in = gr.Textbox(label="Enter Text")
|
134 |
trans_lang = gr.Textbox(label="Target Language")
|
135 |
trans_btn = gr.Button("Translate")
|
136 |
+
tr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|