LLM-Comparison / app.py
Sidd-SQY's picture
Update app.py
7e979af verified
import gradio as gr
from gradio_leaderboard import Leaderboard, SelectColumns, ColumnFilter
from pathlib import Path
import pandas as pd
import random
import requests
import json
data = requests.get("https://raw.githubusercontent.com/BerriAI/litellm/refs/heads/main/model_prices_and_context_window.json").json()
if 'sample_spec' in data:
del data['sample_spec']
df = pd.DataFrame.from_dict(data, orient='index')
df = df.reset_index()
filters = []
df['deprecation_date'] = pd.to_datetime(df['deprecation_date'], errors='coerce')
df = df[df['deprecation_date'].isna() | (df['deprecation_date'] > pd.Timestamp.now())]
for col in df.columns:
if 'supports_' in col:
filters.append(ColumnFilter(col, type="boolean", default=False))
if col=='metadata':
try:
df[col] = df[col].apply(lambda x: json.dumps(x))
except:
pass
if 'cost_per_token' in col:
df[col] = df[col] * 1000000
df = df.rename(columns={col: col.replace('cost_per_token', 'cost_per_M_tokens')})
df = df.rename(columns={'index': 'model_name'})
# print(df.head())
with gr.Blocks() as demo:
gr.Markdown("""
# 🥇 LLM Comparison (LiteLLM)
""")
Leaderboard(
value=df,
select_columns=SelectColumns(
default_selection=['model_name','max_input_tokens','max_output_tokens','input_cost_per_M_tokens','output_cost_per_M_tokens','tpm','rpm','rpd'],
# cant_deselect=["model_name"],
label="Select Columns to Display:",
),
search_columns=["model_name"],
# hide_columns=["model_name_for_query", "Model Size"],
filter_columns=[
"mode"
]+filters,
# datatype=config.TYPES,
# column_widths=["33%"],
height=1920,
)
if __name__ == "__main__":
demo.launch()