from utils import * global data_component def update_table(query, min_size, max_size, selected_subjects=None): df = get_df() filtered_df = search_and_filter_models(df, query, min_size, max_size) if selected_subjects and len(selected_subjects) > 0: base_columns = ['Models', 'Model Size(B)', 'Data Source', 'Overall'] selected_columns = base_columns + selected_subjects filtered_df = filtered_df[selected_columns] return filtered_df with gr.Blocks() as block: gr.Markdown(LEADERBOARD_INTRODUCTION) with gr.Tabs(elem_classes="tab-buttons") as tabs: # Table 1 with gr.TabItem("📊 MMLU-Pro", elem_id="qa-tab-table1", id=1): with gr.Row(): with gr.Accordion("Citation", open=False): citation_button = gr.Textbox( value=CITATION_BUTTON_TEXT, label=CITATION_BUTTON_LABEL, elem_id="citation-button", lines=10, ) gr.Markdown(TABLE_INTRODUCTION) with gr.Row(): search_bar = gr.Textbox( placeholder="Search models...", show_label=False, elem_id="search-bar" ) df = get_df() min_size, max_size = get_size_range(df) with gr.Row(): min_size_slider = gr.Slider( minimum=min_size, maximum=max_size, value=min_size, step=0.1, label="Minimum number of parameters (B)", ) max_size_slider = gr.Slider( minimum=min_size, maximum=max_size, value=max_size, step=0.1, label="Maximum number of parameters (B)", ) # 添加学科选择器 subject_choices = [col for col in COLUMN_NAMES if col not in ['Models', 'Model Size(B)', 'Data Source', 'Overall']] with gr.Row(): subjects_select = gr.CheckboxGroup( choices=subject_choices, value=subject_choices, # 默认全选 label="Select Subjects to Display", elem_id="subjects-select" ) data_component = gr.components.Dataframe( value=df[COLUMN_NAMES], headers=COLUMN_NAMES, type="pandas", datatype=DATA_TITLE_TYPE, interactive=False, visible=True, height=1500 ) refresh_button = gr.Button("Refresh") # 更新事件处理 def update_with_subjects(*args): return update_table(*args) search_bar.change( fn=update_with_subjects, inputs=[search_bar, min_size_slider, max_size_slider, subjects_select], outputs=data_component ) min_size_slider.change( fn=update_with_subjects, inputs=[search_bar, min_size_slider, max_size_slider, subjects_select], outputs=data_component ) max_size_slider.change( fn=update_with_subjects, inputs=[search_bar, min_size_slider, max_size_slider, subjects_select], outputs=data_component ) subjects_select.change( fn=update_with_subjects, inputs=[search_bar, min_size_slider, max_size_slider, subjects_select], outputs=data_component ) refresh_button.click(fn=refresh_data, outputs=data_component) # table 2 with gr.TabItem("📝 About", elem_id="qa-tab-table2", id=2): gr.Markdown(LEADERBOARD_INFO, elem_classes="markdown-text") # table 3 with gr.TabItem("🚀 Submit here! ", elem_id="submit-tab", id=3): with gr.Row(): gr.Markdown(SUBMIT_INTRODUCTION, elem_classes="markdown-text") block.launch(share=True)