File size: 5,067 Bytes
d946cfe a33ace4 63d7feb 7af41fc a52b9c1 63d7feb d946cfe a33ace4 f578a9f a33ace4 f578a9f a788ea0 d946cfe 7786c4d a52b9c1 3b02b87 f578a9f d946cfe f578a9f d946cfe f578a9f d946cfe f578a9f a33ace4 d946cfe a33ace4 a52b9c1 d946cfe f578a9f d946cfe f578a9f a52b9c1 d946cfe a52b9c1 d946cfe a52b9c1 a33ace4 a788ea0 a52b9c1 a33ace4 d946cfe a33ace4 d946cfe a33ace4 d946cfe a33ace4 a52b9c1 f578a9f a33ace4 f578a9f a33ace4 f578a9f a33ace4 f578a9f a33ace4 f578a9f a33ace4 a52b9c1 a33ace4 7786c4d c146544 7786c4d c146544 a52b9c1 7786c4d d946cfe f578a9f d946cfe f578a9f d946cfe a52b9c1 a33ace4 4107733 1c24a40 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
import os
import gradio as gr
import pandas as pd
# from gradio_huggingfacehub_search import HuggingfaceHubSearch
import requests
leaderboard_url = os.getenv("LEADERBOARD_URL", "https://leaderboard.nexa4ai.com")
get_ranking_url = f"{leaderboard_url}/model/get-ranking-by-category"
get_models_url = f"{leaderboard_url}/model/get-models-by-category"
vote_url = f"{leaderboard_url}/model/vote"
submit_models_url = f"{leaderboard_url}/model/submit-models"
def update_table(category):
url_with_params = f"{get_ranking_url}?category={category}"
response = requests.get(url_with_params)
if response.status_code == 200:
ranking_data = response.json()["ranking"]
api_model_data = {
"Model": [item["model_id"] for item in ranking_data],
"Votes": [item["votes"] for item in ranking_data],
"Categories": [category] * len(ranking_data)
}
api_df = pd.DataFrame(api_model_data)
else:
print(f"Failed to submit request: {response.text}")
api_df = pd.DataFrame()
return api_df
def get_user(profile: gr.OAuthProfile | None) -> str:
if profile is None:
return ""
return profile.username
def get_vote_models(category):
if not category:
return []
url_with_params = f"{get_models_url}?category={category}"
response = requests.get(url_with_params)
if response.status_code == 200:
models_data = response.json()
return gr.CheckboxGroup(choices=models_data, label="Choose your options", interactive=True)
else:
print(f"Failed to get models: {response.text}")
return []
def submit_vote(username, category, models):
if not category or not models:
return "All fields are required!"
if not username:
return "You need to log in to submit a vote."
if username.startswith("Hello "):
username = username[6:]
data = {
"category": category,
"username": username,
"model_ids": models
}
response = requests.post(vote_url, json=data)
if response.status_code == 200:
return f"Vote '{models}' submitted successfully!"
else:
return f"Failed to vote: {response.text}"
def submit_model(category, model_id):
if not category or not model_id:
return "All fields are required!"
data = {
"model_id": model_id,
"categories": [category]
}
response = requests.post(submit_models_url, json=data)
if response.status_code == 200:
return "Your request has been submitted successfully. We will notify you by email once processing is complete."
else:
return f"Failed to submit request: {response.text}"
theme = gr.themes.Soft()
with gr.Blocks(theme=theme) as app:
with gr.Tabs():
with gr.TabItem("Table"):
category = gr.Dropdown(
choices=["all", "Biology", "Physics", "Business", "Chemistry", "Economics", "Philosophy", "History", "Culture", "Computer Science", "Math", "Health", "Law", "Engineering", "Other"],
label="Select Category",
value="all"
)
initial_data = update_table("all")
table = gr.Dataframe(
headers=["Model", "Votes", "Categories"],
datatype=["str", "number", "str"],
value=initial_data,
col_count=(3, "fixed"),
)
category.change(update_table, inputs=category, outputs=table)
with gr.TabItem("Vote"):
username_text = gr.State(value="")
login_button = gr.LoginButton()
app.load(get_user, inputs=None, outputs=username_text)
category = gr.Dropdown(
choices=["Biology", "Physics", "Business", "Chemistry", "Economics", "Philosophy", "History", "Culture", "Computer Science", "Math", "Health", "Law", "Engineering", "Other"],
label="Select Category"
)
cbg = gr.CheckboxGroup(choices=[], label="Choose your options",interactive=True)
submit_button = gr.Button("Submit Vote")
submit_result = gr.Markdown()
category.change(get_vote_models, inputs=category, outputs=cbg)
submit_button.click(fn=submit_vote, inputs=[username_text, category, cbg], outputs=submit_result)
with gr.TabItem("Submit Model"):
category = gr.Dropdown(choices=["Biology", "Physics", "Business", "Chemistry", "Economics", "Philosophy", "History", "Culture", "Computer Science", "Math", "Health", "Law", "Engineering", "Other"], label="Select Category")
model_id = HuggingfaceHubSearch(label="Hub Model ID", placeholder="Search for model id on Huggingface", search_type="model")
submit_model_button = gr.Button("Submit Model")
submit_model_result = gr.Markdown()
submit_model_button.click(fn=submit_model, inputs=[category, model_id], outputs=submit_model_result)
app.launch(share=True) |