|
import gradio as gr |
|
import os |
|
from train_abuse_model import ( |
|
run_training, |
|
evaluate_saved_model, |
|
push_model_to_hub |
|
) |
|
from predict_pipeline import run_prediction_pipeline |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## ๐ง Abuse Detection App") |
|
gr.Markdown("โ ๏ธ Keep this tab open while training or evaluating.") |
|
|
|
with gr.Tab("๐งช Train / Evaluate"): |
|
with gr.Row(): |
|
start_btn = gr.Button("๐ Start Training") |
|
eval_btn = gr.Button("๐ Evaluate Trained Model") |
|
push_btn = gr.Button("๐ค Push Model to Hub") |
|
output_box = gr.Textbox(label="Logs", lines=25, interactive=False) |
|
start_btn.click(fn=run_training, outputs=output_box) |
|
eval_btn.click(fn=evaluate_saved_model, outputs=output_box) |
|
push_btn.click(fn=push_model_to_hub, outputs=output_box) |
|
|
|
with gr.Tab("๐ฎ Abuse Detection"): |
|
desc_input = gr.Textbox(label="๐ Relationship Description", lines=5, placeholder="Write a relationship story here...") |
|
chat_upload = gr.File(label="๐ Optional: WhatsApp Chat ZIP (.zip)", file_types=[".zip"]) |
|
predict_btn = gr.Button("Run Prediction") |
|
|
|
enriched_output = gr.Textbox(label="๐ Enriched Input (Used for Prediction)", lines=8, interactive=False) |
|
label_output = gr.Textbox(label="๐ท๏ธ Predicted Labels", lines=2, interactive=False) |
|
|
|
predict_btn.click( |
|
fn=run_prediction_pipeline, |
|
inputs=[desc_input, chat_upload], |
|
outputs=[enriched_output, label_output] |
|
) |
|
|
|
with gr.Tab("๐ View Evaluation Reports"): |
|
def list_eval_files(): |
|
folder = "/home/user/app/results_eval" |
|
return sorted(os.listdir(folder), reverse=True) if os.path.exists(folder) else [] |
|
|
|
def load_eval_file(filename): |
|
path = f"/home/user/app/results_eval/{filename}" |
|
if not os.path.exists(path): |
|
return "โ File not found." |
|
with open(path, "r", encoding="utf-8") as f: |
|
return f.read() |
|
|
|
file_dropdown = gr.Dropdown( |
|
choices=[], |
|
label="๐ Select an evaluation file", |
|
interactive=True |
|
) |
|
refresh_btn = gr.Button("๐ Refresh File List") |
|
report_output = gr.Textbox(label="๐ Evaluation Report", lines=20) |
|
|
|
refresh_btn.click(fn=lambda: gr.Dropdown.update(choices=list_eval_files()), outputs=file_dropdown) |
|
file_dropdown.change(fn=load_eval_file, inputs=file_dropdown, outputs=report_output) |
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|