File size: 2,794 Bytes
27bad72
9346f1c
460efe2
4596a70
8b1f7a0
01ea22b
b98f07f
 
 
 
 
b2373ad
b98f07f
54eae7e
3b3db42
 
 
 
 
 
460efe2
98eb96a
b98f07f
2a73469
10f9b3c
30dede7
fabb601
98eb96a
a885f09
4103566
 
 
bc7425f
4103566
 
 
98eb96a
bc7425f
4103566
beaaa9e
27bad72
 
 
 
f6475aa
bc7425f
 
b2373ad
58733e4
d4ccaf3
10f9b3c
8daa060
65af9f4
bc7425f
7e8ac0e
65af9f4
d4ccaf3
e7226cc
27bad72
 
 
 
 
 
 
 
 
 
 
 
 
 
f7d1b51
 
 
 
 
71f25ab
f7d1b51
818f024
 
f7d1b51
10f9b3c
511c060
10f9b3c
bc7425f
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
import io
import gradio as gr
from gradio_leaderboard import Leaderboard
from apscheduler.schedulers.background import BackgroundScheduler

from src.about import (
    CITATION_BUTTON_LABEL,
    CITATION_BUTTON_TEXT,
    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)

    with gr.Row():
        with gr.Accordion("πŸ“™ Citation", open=False):
            citation_button = gr.Textbox(
                value=CITATION_BUTTON_TEXT,
                label=CITATION_BUTTON_LABEL,
                lines=20,
                elem_id="citation-button",
                show_copy_button=True,
            )

scheduler = BackgroundScheduler()
scheduler.add_job(restart_space, "interval", seconds=1800)
scheduler.start()
gui.queue(default_concurrency_limit=40).launch()