import gradio as gr import pandas as pd from pathlib import Path from src.json_leaderboard import ( create_leaderboard_df, get_leaderboard_stats, SIZE_BANDS, MODALITIES, ) from src.about import ( CITATION_BUTTON_LABEL, CITATION_BUTTON_TEXT, INTRODUCTION_TEXT, LLM_BENCHMARKS_TEXT, LINKS_AND_INFO, TITLE, ) from src.display.css_html_js import custom_css JSON_PATH = str(Path(__file__).parent / "leaderboard_data.json") TABLE_DATATYPES = ["html", "str", "html", "str", "str", "str", "str"] def filter_leaderboard(open_source_only, size_band, modality): df = create_leaderboard_df( JSON_PATH, open_source_only=open_source_only, size_band=size_band, modality=modality, ) if df.empty: return pd.DataFrame({"Result": ["No models match the selected filters."]}) return df def get_stats_display(): """Get formatted statistics for display""" stats = get_leaderboard_stats(JSON_PATH) if not stats: return "No statistics available" return f""" ### 📊 Leaderboard Statistics - **Total Models**: {stats['total_models']} - **Best Score**: {stats['max_acc']:.1f} - **Lowest Score**: {stats['min_acc']:.1f} """ # Create the Gradio interface demo = gr.Blocks(css=custom_css, title="MMLongBench-Doc Leaderboard") with demo: gr.HTML(TITLE) gr.HTML(LINKS_AND_INFO) gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text") with gr.Tabs(elem_classes="tab-buttons") as tabs: with gr.TabItem("🏅 Leaderboard", elem_id="llm-benchmark-tab-table", id=0): stats_display = gr.Markdown(get_stats_display()) with gr.Row(): open_source_filter = gr.Checkbox( label="Open-source only", value=False, ) size_filter = gr.Dropdown( choices=SIZE_BANDS, value="All", label="Model size (activated params)", ) modality_filter = gr.Radio( choices=MODALITIES, value="All", label="Modality", ) leaderboard_table = gr.Dataframe( value=filter_leaderboard(False, "All", "All"), datatype=TABLE_DATATYPES, interactive=False, wrap=True, ) for control in (open_source_filter, size_filter, modality_filter): control.change( fn=filter_leaderboard, inputs=[open_source_filter, size_filter, modality_filter], outputs=leaderboard_table, ) with gr.Row(): with gr.Column(): gr.Markdown("## 📙 Citation") gr.Markdown("If you use [MMLongBench-Doc](https://arxiv.org/abs/2407.01523) in your research, please cite our work:") citation_textbox = gr.Textbox( value=CITATION_BUTTON_TEXT, elem_id="citation-textbox", show_label=False, interactive=False, lines=8, show_copy_button=True ) if __name__ == "__main__": demo.launch()