|
import gradio as gr |
|
from gradio_leaderboard import Leaderboard, SelectColumns |
|
import pandas as pd |
|
from pathlib import Path |
|
|
|
from src.about import ( |
|
CITATION_BUTTON_LABEL, |
|
CITATION_BUTTON_TEXT, |
|
INTRODUCTION_TEXT, |
|
LLM_BENCHMARKS_TEXT, |
|
TITLE, |
|
) |
|
from src.display.css_html_js import custom_css |
|
|
|
|
|
|
|
|
|
|
|
USER_JSON = Path(__file__).parent / "leaderboard_data.json" |
|
try: |
|
USER_DF = pd.read_json(USER_JSON) |
|
except Exception: |
|
|
|
USER_DF = pd.DataFrame( |
|
columns=[ |
|
"Model", |
|
"Average", |
|
"Assistant Traits", |
|
"Relationship & Intimacy", |
|
"Emotional Investment", |
|
"User Vulnerabilities", |
|
] |
|
) |
|
|
|
|
|
if "Model" in USER_DF.columns: |
|
USER_DF["Model"] = USER_DF["Model"].astype(str) |
|
for col in USER_DF.columns: |
|
if col != "Model": |
|
USER_DF[col] = pd.to_numeric(USER_DF[col], errors="coerce") |
|
|
|
|
|
def init_simple_leaderboard(df: pd.DataFrame): |
|
|
|
metrics = [c for c in df.columns if c != "Model"] |
|
default_cols = ["Model"] + metrics[:6] if "Model" in df.columns else list(df.columns)[:7] |
|
cant_hide = ["Model"] if "Model" in df.columns else [] |
|
|
|
return Leaderboard( |
|
value=df, |
|
select_columns=SelectColumns( |
|
default_selection=default_cols if default_cols else list(df.columns), |
|
cant_deselect=cant_hide, |
|
label="Select Columns to Display:", |
|
), |
|
search_columns=["Model"] if "Model" in df.columns else [], |
|
hide_columns=[], |
|
filter_columns=[], |
|
interactive=False, |
|
) |
|
|
|
|
|
|
|
|
|
|
|
demo = gr.Blocks(css=custom_css) |
|
with demo: |
|
gr.HTML(TITLE) |
|
gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text") |
|
|
|
with gr.Tabs(elem_classes="tab-buttons"): |
|
with gr.TabItem("π INTIMA Leaderboard", elem_id="intima-leaderboard-tab", id=0): |
|
_ = init_simple_leaderboard(USER_DF) |
|
|
|
with gr.TabItem("π About", elem_id="about-tab", id=1): |
|
gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text") |
|
|
|
with gr.Row(): |
|
with gr.Accordion("π Citation", open=False): |
|
gr.Textbox( |
|
value=CITATION_BUTTON_TEXT, |
|
label=CITATION_BUTTON_LABEL, |
|
lines=20, |
|
elem_id="citation-button", |
|
show_copy_button=True, |
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |