|
import gradio as gr |
|
import pandas as pd |
|
|
|
LEADERBOARD_FILE = "results.csv" |
|
|
|
def load_leaderboard(): |
|
return pd.read_csv(LEADERBOARD_FILE) |
|
|
|
def display_data(data_type="Overall"): |
|
df = load_leaderboard() |
|
for col in ["Overall Benign Score", "Overall Malicious Score", "Refusal Rate", "Normalized Safety Score", "Bias Score", "Cybercrime Score", "Harassment Score","Misinformation Score", "Illegal Activity Score"]: |
|
df[col] = df[col].apply(lambda x: f"{x:.1f}") |
|
df["Open"] = df["Open"].apply(lambda x: "True" if x else "False") |
|
if data_type == "Overall": |
|
new_df = df[["Model", "Overall Benign Score", "Overall Malicious Score", "Refusal Rate", "Normalized Safety Score", "Open"]].copy() |
|
else: |
|
category_col = f"{data_type} Score" |
|
new_df = df[["Model", category_col, "Overall Benign Score", "Open"]].copy() |
|
sort_col = "Model" |
|
return new_df.sort_values(by=sort_col) |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# SafeArena Leaderboard") |
|
|
|
data_type_dropdown = gr.Dropdown( |
|
label="Data Type", |
|
choices=["Overall", "Bias", "Cybercrime", "Harassment", "Misinformation", "Illegal Activity"], |
|
value="Overall" |
|
) |
|
|
|
table = gr.Dataframe(value=display_data("Overall"), interactive=False) |
|
|
|
data_type_dropdown.change( |
|
fn=display_data, |
|
inputs=data_type_dropdown, |
|
outputs=table |
|
) |
|
|
|
demo.launch(share=True) |