import gradio as gr from utils import load_leaderboard, update_leaderboard from evaluate import evaluate_model def show_leaderboard(): data = load_leaderboard() if not data: return "No models evaluated yet." return "\n".join([f"{i+1}. {entry['model']} - {entry['score']:.4f}" for i, entry in enumerate(data)]) def submit_model(model_name): score = evaluate_model(model_name) if score is None: return "Failed to load or evaluate model." update_leaderboard(model_name, score) return f"Model evaluated with score: {score:.4f}" with gr.Blocks() as demo: gr.Markdown("# 🏆 Persian Embedding Leaderboard") with gr.Tab("Leaderboard"): leaderboard_display = gr.Textbox(label="Leaderboard", lines=20) btn_refresh = gr.Button("Refresh") btn_refresh.click(fn=show_leaderboard, outputs=leaderboard_display) with gr.Tab("Submit Model"): model_input = gr.Textbox(label="Hugging Face Model ID", placeholder="e.g., HooshvareLab/bert-fa-base-uncased") submit_btn = gr.Button("Submit for Evaluation") result_output = gr.Textbox(label="Result") submit_btn.click(fn=submit_model, inputs=model_input, outputs=result_output) demo.launch()