File size: 4,271 Bytes
003d870
be01527
003d870
be01527
b6c7c6e
dd8f702
8475b2f
b6c7c6e
 
 
 
dd8f702
 
9e5c72d
c80bd67
 
be01527
003d870
879d307
be01527
003d870
 
 
 
 
2cea891
be01527
c80bd67
be01527
8475b2f
 
 
 
 
 
c80bd67
8475b2f
c80bd67
8475b2f
 
b405a8a
8475b2f
 
b405a8a
8475b2f
b405a8a
 
 
 
 
 
 
 
8475b2f
dd8f702
b6c7c6e
 
 
 
 
 
 
 
 
 
003d870
7e95597
003d870
 
06a23cd
be01527
 
91c7bd8
be01527
c80bd67
003d870
b6c7c6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
003d870
be01527
003d870
 
bc6519e
be01527
003d870
 
be01527
003d870
be01527
c80bd67
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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)