import pandas as pd
import html
import json
import gradio as gr
import os
file_path = "html/prompt_display.html"
if os.access(file_path, os.R_OK):
print(f"{file_path} is readable")
else:
print(f"{file_path}is not readable")
file_path = "html/leaderboard_template.html"
if os.access(file_path, os.R_OK):
print(f"{file_path} is readable")
else:
print(f"{file_path}is not readable")
file_path = "prompt/prompt.json"
if os.access(file_path, os.R_OK):
print(f"{file_path} is readable")
else:
print(f"{file_path}is not readable")
def create_html_with_tooltip(id, prompt):
# Create a URL that points to the new page with the prompt ID in the query string
escaped_prompt = html.escape(prompt.replace("\n", "
"))
return f'{id}'
with open("prompt/prompt.json", "r") as file:
json_data = file.read()
prompts = json.loads(json_data)# Sample data for the leaderboard
winning_rate = [prompt['metric']['winning_number'] for prompt in prompts]
winning_rate = [num / sum(winning_rate) for num in winning_rate]
data = {
'Rank': [i+1 for i in range(len(prompts))],
'Methods': [create_html_with_tooltip(prompt['id'], prompt['prompt'].replace("\n","
")) for prompt in prompts],
'Rouge Score': [prompt['metric']['Rouge'] for prompt in prompts],
'Winning Rate': winning_rate,
'Authors': [prompt['author'] for prompt in prompts],
}
df = pd.DataFrame(data)
df.sort_values(by='Rouge Score', ascending=False, inplace=True, ignore_index=True)
df['Rank'] = range(1, len(df) + 1)
# Define a list of medal emojis
medals = ['🏅', '🥈', '🥉']
for i in range(3):
df.loc[i, 'Authors'] = f"{medals[i]} {df.loc[i, 'Authors']}"
def update_leaderboard(sort_by):
sorted_df = df.sort_values(by=sort_by, ascending=False, ignore_index=True)
sorted_df['Rank'] = range(1, len(sorted_df) + 1)
# Convert DataFrame to HTML with clickable headers for sorting and without escaping
table_html = sorted_df.to_html(index=False, escape=False)
# Add sorting links to column headers
for column in sorted_df.columns:
table_html = table_html.replace(f'