import os import gradio as gr from apscheduler.schedulers.background import BackgroundScheduler from dabstep_benchmark.content import TITLE, INTRODUCTION_TEXT, SUBMISSION_TEXT, CITATION_BUTTON_TEXT, CITATION_BUTTON_LABEL from dabstep_benchmark.leaderboard import * def restart_space(): HF_API.restart_space(repo_id=HF_LEADERBOARD) if __name__ == "__main__": os.makedirs("data/task_scores", exist_ok=True) refresh(only_leaderboard=False) demo = gr.Blocks() with demo: gr.Markdown(TITLE) gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text") leaderboard_table = gr.components.Dataframe( value=generate_leaderboard_df(), datatype=["markdown", "str", "str", "str", "markdown", "str", "str", "str"], interactive=False, column_widths=["20%"], wrap=True, ) # create a Gradio event listener that runs when the page is loaded to populate the dataframe demo.load(lambda: generate_leaderboard_df(), None, leaderboard_table) refresh_button = gr.Button("Refresh") refresh_button.click( refresh, inputs=[ gr.Checkbox(value=True, visible=False) ], outputs=[ leaderboard_table, ], ) with gr.Row(): with gr.Accordion("📙 Citation", open=False): citation_button = gr.Textbox( value=CITATION_BUTTON_TEXT, label=CITATION_BUTTON_LABEL, lines=len(CITATION_BUTTON_TEXT.split("\n")), elem_id="citation-button", ) # .style(show_copy_button=True) with gr.Accordion("Submit new agent answers for evaluation"): with gr.Row(): gr.Markdown(SUBMISSION_TEXT, elem_classes="markdown-text") with gr.Row(): with gr.Column(): split = gr.Radio(["all"], value="all", label="Split", visible=False) agent_name_textbox = gr.Textbox(label="Agent name") model_family_textbox = gr.Textbox(label="Model family") system_prompt_textbox = gr.Textbox(label="System prompt example") repo_url_textbox = gr.Textbox(label="Repo URL with agent code") with gr.Column(): organisation = gr.Textbox(label="Organisation") mail = gr.Textbox( label="Contact email (will be stored privately, & used if there is an issue with your submission)") file_output = gr.File() submit_button = gr.Button("Submit answers") submission_result = gr.Markdown() submit_button.click( process_submission, [ split, agent_name_textbox, model_family_textbox, repo_url_textbox, file_output, organisation, mail ], submission_result, ) scheduler = BackgroundScheduler() scheduler.add_job(restart_space, "interval", seconds=3600) scheduler.start() demo.launch(debug=True)