| 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() |