from ui_constants import column_names from sotopia_space.constants import MODEL_INFO def make_clickable_model(model_name): global MODEL_INFO if model_name in MODEL_INFO: if MODEL_INFO[model_name]["hf_model_id"].startswith("http"): link = MODEL_INFO[model_name]["hf_model_id"] return f'🔒 {MODEL_INFO[model_name]["pretty_name"]}' else: link = f"https://huggingface.co/{MODEL_INFO[model_name]['hf_model_id']}" return f'🔥 {MODEL_INFO[model_name]["pretty_name"]}' else: return model_name # Formats the columns def formatter(x): if type(x) is str: x = x else: x = round(x, 2) return x def post_processing(df, model_len_info): if model_len_info: df["Length"] = df["model_name"].apply(lambda x: model_len_info[x]["avg_len"]) for col in df.columns: if col == "model_name": df[col] = df[col].apply(lambda x: x.replace(x, make_clickable_model(x))) else: df[col] = df[col].apply(formatter) # For numerical values df.rename(columns=column_names, inplace=True) df.sort_values(by="GOAL [0, 10]", inplace=True, ascending=False) # put the "Overall Elo" and "Task-Avg Elo" column to the front # add the length info df = df[["model_name", "GOAL [0, 10]"] + [col for col in df.columns if col not in ["model_name", "GOAL [0, 10]"]]] return df