| import io |
| import gradio as gr |
| from gradio_leaderboard import Leaderboard |
| from apscheduler.schedulers.background import BackgroundScheduler |
|
|
| from src.about import ( |
| INTRODUCTION_TEXT, |
| LLM_BENCHMARKS_TEXT, |
| TITLE, |
| TITLE_IMAGE, |
| ) |
| from src.display.css_html_js import custom_css |
| from src.display.utils import ( |
| BENCHMARK_COLS, |
| COLS, |
| AutoEvalColumn, |
| fields, |
| ) |
| from src.envs import API, EVAL_RESULTS_PATH, REPO_ID |
| from src.populate import get_leaderboard_df |
|
|
|
|
| def restart_space(): |
| API.restart_space(repo_id=REPO_ID) |
|
|
| LEADERBOARD_DF = get_leaderboard_df(EVAL_RESULTS_PATH, COLS, BENCHMARK_COLS) |
|
|
| def init_leaderboard(dataframe): |
| if dataframe is None or dataframe.empty: |
| raise ValueError("Leaderboard DataFrame is empty or None.") |
| |
| return Leaderboard( |
| value=dataframe, |
| datatype=[c.type for c in fields(AutoEvalColumn)], |
| search_columns=[AutoEvalColumn.model.name], |
| interactive=False |
| ) |
|
|
| def download_csv(): |
| with io.StringIO() as buffer: |
| LEADERBOARD_DF.to_csv(buffer, index=False) |
| return buffer.getvalue() |
|
|
| gui = gr.Blocks(css=custom_css) |
| with gui: |
| gr.HTML(TITLE_IMAGE) |
| gr.HTML(TITLE) |
| gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text") |
|
|
| with gr.Tabs(elem_classes="tab-buttons") as tabs: |
| with gr.TabItem("๐
LLM Benchmark", elem_id="llm-benchmark-tab-table", id=0): |
| leaderboard = init_leaderboard(LEADERBOARD_DF.style.highlight_max(color = 'lightgreen', axis=0).data) |
|
|
| with gr.TabItem("๐ About", elem_id="llm-benchmark-tab-table", id=2): |
| gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text") |
|
|
| with gr.Row(): |
| with gr.Accordion("๐พ Download as CSV", open=False): |
| download_button = gr.Button("Click to Generate CSV File") |
| csv_output = gr.File(label="Generated File") |
|
|
| def generate_csv_file(): |
| csv_content = download_csv() |
| csv_output.visible=True |
| with open("bluebench.csv", "w", encoding="utf-8") as f: |
| f.write(csv_content) |
| return "bluebench.csv" |
| |
| download_button.click(fn=generate_csv_file, outputs=csv_output) |
|
|
| scheduler = BackgroundScheduler() |
| scheduler.add_job(restart_space, "interval", seconds=1800) |
| scheduler.start() |
| gui.queue(default_concurrency_limit=40).launch() |