import gradio as gr import requests import pandas as pd class MultiURLData: def __init__(self, file_path): self.file_path = file_path def fetch_data(self): # Read URLs from a file, one per line with open(self.file_path, 'r') as f: file_urls = [line.strip() for line in f.readlines()] dataframes = [] for url in file_urls: # Derive column names from the URLs column_name = url.split('/')[-1].split('_')[0] # Load data from URL response = requests.get(url) data = response.json() # Convert data into a DataFrame df = pd.DataFrame(data['results']).T # Rename 'acc' column to respective file names df = df.rename(columns={'acc': column_name}) # Remove 'hendrycksTest-' from the index df.index = df.index.str.replace('hendrycksTest-', '') dataframes.append(df[[column_name]]) # keep only the column of interest # Merge the dataframes # Merge the dataframes on index data = pd.concat(dataframes, axis=1) # Transpose the dataframe to swap rows and columns data = data.transpose() # Select only columns 'moral_scenarios' and 'moral_disputes' data = data[['moral_scenarios', 'moral_disputes']] return data data_provider = MultiURLData("file_urls.txt") block = gr.Blocks() with block: gr.Markdown("""Leaderboard""") with gr.Tabs(): with gr.TabItem("Leaderboard"): with gr.Row(): data = gr.outputs.Dataframe(type="pandas") with gr.Row(): data_run = gr.Button("Refresh") data_run.click(data_provider.fetch_data, inputs=None, outputs=data) # running the function on page load in addition to when the button is clicked block.load(data_provider.fetch_data, inputs=None, outputs=data) block.launch()