CPunisher/JavaBench
1
1import gradio as gr2import pandas as pd3import json4from gradio_leaderboard import Leaderboard, SelectColumns5from apscheduler.schedulers.background import BackgroundScheduler6 7from src.about import (8 CITATION_BUTTON_LABEL,9 CITATION_BUTTON_TEXT,10 EVALUATION_QUEUE_TEXT,11 INTRODUCTION_TEXT,12 TITLE,13)14from src.display.css_html_js import custom_css15from src.display.utils import (16 AutoEvalColumn,17 fields18)19from src.envs import API, REPO_ID20 21 22def restart_space():23 API.restart_space(repo_id=REPO_ID)24 25def init_leaderboard(data_file):26 with open(data_file, "r") as fp:27 data = json.load(fp)28 29 dataframe = pd.DataFrame()30 for key, value in data.items():31 col_df = pd.DataFrame(value)32 col_df.rename(columns={"Pass_at_1": key}, inplace=True)33 dataframe = col_df if dataframe.empty else dataframe.merge(col_df, on=['Context', 'Method', 'Model'], how='outer')34 35 dataframe['Score'] = dataframe.drop(columns=['Context', 'Method', 'Model']).sum(axis=1) / 536 numeric_cols = dataframe.select_dtypes(include='number').columns37 dataframe[numeric_cols] = dataframe[numeric_cols].apply(lambda x: x * 100).round(1)38 39 cols = list(dataframe.columns)40 cols.remove('Score')41 cols.insert(3, 'Score')42 dataframe = dataframe[cols]43 cols.insert(3, cols.pop(cols.index('Score')))44 45 dataframe = dataframe.sort_values(by='Score', ascending=False)46 47 return gr.components.DataFrame(48 value=dataframe,49 headers=[c.name for c in fields(AutoEvalColumn) if not c.hidden],50 datatype=[c.type for c in fields(AutoEvalColumn)],51 interactive=False,52 )53 54demo = gr.Blocks(css=custom_css)55with demo:56 gr.HTML(TITLE)57 gr.HTML(INTRODUCTION_TEXT, elem_classes="markdown-text")58 59 with gr.Tabs(elem_classes="tab-buttons") as tabs:60 with gr.TabItem("[Method] Evaluation", elem_id="llm-benchmark-tab-table", id=0):61 leaderboard = init_leaderboard("./data/data_method.json")62 63 with gr.TabItem("[Context] Evaluation", elem_id="llm-benchmark-tab-table", id=1):64 leaderboard = init_leaderboard("./data/data_context.json")65 66 with gr.TabItem("[Incremental] Evaluation", elem_id="llm-benchmark-tab-table", id=2):67 leaderboard = init_leaderboard("./data/data_incr-order.json")68 69 # with gr.TabItem("๐ About", elem_id="llm-benchmark-tab-table", id=2):70 # gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text")71 72 with gr.TabItem("๐ Submission", elem_id="llm-benchmark-tab-table", id=3):73 with gr.Column():74 with gr.Row():75 gr.Markdown(EVALUATION_QUEUE_TEXT, elem_classes="markdown-text")76 77 with gr.Row():78 with gr.Accordion("๐ Citation", open=False):79 citation_button = gr.Textbox(80 value=CITATION_BUTTON_TEXT,81 label=CITATION_BUTTON_LABEL,82 lines=20,83 elem_id="citation-button",84 show_copy_button=True,85 )86 87scheduler = BackgroundScheduler()88scheduler.add_job(restart_space, "interval", seconds=1800)89scheduler.start()90demo.queue(default_concurrency_limit=40).launch()