import pandas as pd import gradio as gr import os from datasets import load_dataset, Dataset, concatenate_datasets import datetime scoreDatasetName = "NAMAA-Space/egyptian_leaderboard_scores" requestsDatasetName = "oddadmix/egyptian_leaderboard_requests" def show_leaderboard(): leaderboard = load_dataset(scoreDatasetName, split="train").to_pandas() ## only leave unique with hightst bleu value leaderboard = leaderboard.groupby("model_name").agg({"bleu": "max", "meteor": "max", "chrf": "max"}).reset_index() return leaderboard.sort_values(by="bleu", ascending=False) def submit_to_leaderboard(model_name, model_type, revision, model_prompt): requestsDataset = load_dataset(requestsDatasetName, split="train") found = requestsDataset.filter(lambda x: x["model_name"] == model_name) if len(found) > 0: return "Model already submitted to the leaderboard" newRequest = Dataset.from_list([{ "model_name": model_name, "submission_time": pd.Timestamp.now(), "model_type": model_type, "status": "pending", "revision": revision, "prompt": model_prompt }]) finalRequestsDataset = concatenate_datasets([ requestsDataset , newRequest]) finalRequestsDataset.push_to_hub(requestsDatasetName, private=True) return "Model submitted to the leaderboard" # Gradio Interface with gr.Blocks() as demo: gr.Markdown("# English-to-Egyptian Arabic Translation Leaderboard") gr.Markdown("## [Try Masrawy Now!!](https://huggingface.co/spaces/oddadmix/Masrawy-English-To-Egyptian)") leaderboard_output = gr.DataFrame(label="Leaderboard", value=show_leaderboard()) with gr.Row(): with gr.Column(): gr.Markdown("## Submit Model to the Leaderboard") model_input = gr.Textbox(label="Model Name", placeholder="Enter the model's Hugging Face name...") ## model type translation or text-generation model_type = gr.Radio(choices=["translation", "text-generation"], label="Model Type") revision = gr.Textbox(label="Revision", placeholder="Enter the model's revision...") model_prompt = gr.Textbox(label="Model Prompt", placeholder="Enter the model's prompt if it's a text-generation model as prefix...") submit_btn = gr.Button("Submit") message = gr.Textbox(label="Message") # leaderboard_btn = gr.Button("Show Leaderboard")/ submit_btn.click( submit_to_leaderboard, inputs=[model_input, model_type, revision, model_prompt], outputs=[message] ) demo.launch()