Spaces:
Sleeping
Sleeping
File size: 8,527 Bytes
9c7b6c7 | 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 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | import gradio as gr
import csv
import io
# Embedded sample data (from BenchGecko dataset)
MODELS_CSV = """name,provider,input_price,output_price,context_window,average_score,mmlu_score,humaneval_score,gpqa_score,math_score,open_source
Qwen3.5 397B A17B,Alibaba Qwen,0.39,1.17,262000,96.3,95.1,97.8,71.2,94.5,true
DeepSeek V3.2 Speciale,DeepSeek,0.40,1.20,164000,95.2,92.4,96.2,68.5,91.3,true
GPT-5.4 Pro,OpenAI,30.00,60.00,1050000,93.0,93.8,94.5,72.1,88.7,false
GPT-5 Chat,OpenAI,1.25,5.00,128000,89.0,90.2,91.8,58.3,82.1,false
Gemini 3.1 Pro Preview,Google DeepMind,2.00,8.00,1049000,90.0,91.5,89.2,64.8,85.3,false
Claude Opus 4.6,Anthropic,30.00,150.00,1000000,83.3,88.5,87.2,55.1,78.4,false
DeepSeek R1 0528,DeepSeek,0.55,2.19,128000,88.3,89.1,90.5,87.2,92.1,true
GLM 5.1,Zhipu AI,0.70,2.10,203000,87.0,86.2,88.1,52.3,79.5,false
Step 3.5 Flash,StepFun,0.10,0.30,262000,89.5,87.3,91.2,55.8,83.2,false
MiMo-V2-Flash,Xiaomi,0.09,0.27,262000,81.7,82.1,85.3,48.2,74.1,true"""
def load_models():
reader = csv.DictReader(io.StringIO(MODELS_CSV))
models = []
for row in reader:
for key in ["input_price", "output_price", "average_score", "mmlu_score", "humaneval_score", "gpqa_score", "math_score"]:
if row[key]:
row[key] = float(row[key])
row["context_window"] = int(row["context_window"])
row["open_source"] = row["open_source"] == "true"
models.append(row)
return models
MODELS = load_models()
def compare_models(model1_name, model2_name):
m1 = next((m for m in MODELS if m["name"] == model1_name), None)
m2 = next((m for m in MODELS if m["name"] == model2_name), None)
if not m1 or not m2:
return "Select two models to compare."
output = f"## {m1['name']} vs {m2['name']}\n\n"
output += "| Metric | " + m1["name"] + " | " + m2["name"] + " | Winner |\n"
output += "|--------|" + "-" * (len(m1["name"]) + 2) + "|" + "-" * (len(m2["name"]) + 2) + "|--------|\n"
metrics = [
("Average Score", "average_score", True),
("MMLU", "mmlu_score", True),
("HumanEval", "humaneval_score", True),
("GPQA Diamond", "gpqa_score", True),
("MATH", "math_score", True),
("Input Price ($/M)", "input_price", False),
("Output Price ($/M)", "output_price", False),
("Context Window", "context_window", True),
]
for label, key, higher_is_better in metrics:
v1 = m1[key]
v2 = m2[key]
if higher_is_better:
winner = m1["name"] if v1 > v2 else m2["name"] if v2 > v1 else "Tie"
else:
winner = m1["name"] if v1 < v2 else m2["name"] if v2 < v1 else "Tie"
fmt = lambda v: f"${v:.2f}" if "price" in key.lower() else f"{v:,}" if key == "context_window" else f"{v:.1f}"
output += f"| {label} | {fmt(v1)} | {fmt(v2)} | {winner} |\n"
output += f"\n**Open Source**: {m1['name']} ({'Yes' if m1['open_source'] else 'No'}) | {m2['name']} ({'Yes' if m2['open_source'] else 'No'})\n"
output += f"\n---\n"
output += f"\n*Sample from [BenchGecko](https://benchgecko.ai). Full live data with thousands of models at [benchgecko.ai/compare](https://benchgecko.ai/compare).*"
return output
def search_models(query, sort_by, open_source_only):
results = MODELS
if query:
query_lower = query.lower()
results = [m for m in results if query_lower in m["name"].lower() or query_lower in m["provider"].lower()]
if open_source_only:
results = [m for m in results if m["open_source"]]
sort_map = {
"Score (highest)": ("average_score", True),
"Price (lowest)": ("input_price", False),
"Context (largest)": ("context_window", True),
"MMLU (highest)": ("mmlu_score", True),
}
if sort_by in sort_map:
key, reverse = sort_map[sort_by]
results.sort(key=lambda m: m[key], reverse=reverse)
output = "| # | Model | Provider | Score | $/M in | Context | Open Source |\n"
output += "|---|-------|----------|-------|--------|---------|-------------|\n"
for i, m in enumerate(results, 1):
oss = "Yes" if m["open_source"] else "No"
output += f"| {i} | {m['name']} | {m['provider']} | {m['average_score']:.1f} | ${m['input_price']:.2f} | {m['context_window']:,} | {oss} |\n"
output += f"\n---\n"
output += f"\n*Showing {len(results)} of 10 sample models. Full rankings with thousands of models at [benchgecko.ai/models](https://benchgecko.ai/models).*\n"
output += f"\n*Cross-provider pricing at [benchgecko.ai/pricing](https://benchgecko.ai/pricing). AI economy data at [benchgecko.ai/economy](https://benchgecko.ai/economy).*"
return output
def get_price_analysis():
sorted_by_value = sorted(MODELS, key=lambda m: m["average_score"] / max(m["input_price"], 0.01), reverse=True)
output = "## Best Value: Score per Dollar\n\n"
output += "| # | Model | Score | $/M in | Score/$ Ratio | Open Source |\n"
output += "|---|-------|-------|--------|---------------|-------------|\n"
for i, m in enumerate(sorted_by_value, 1):
ratio = m["average_score"] / max(m["input_price"], 0.01)
oss = "Yes" if m["open_source"] else "No"
output += f"| {i} | {m['name']} | {m['average_score']:.1f} | ${m['input_price']:.2f} | {ratio:.0f} | {oss} |\n"
output += f"\n---\n"
output += f"\n*Find the cheapest provider for any model at [benchgecko.ai/pricing](https://benchgecko.ai/pricing).*\n"
output += f"\n*Estimate monthly costs with the [Pricing Calculator](https://benchgecko.ai/calculator). Track the AI economy at [benchgecko.ai/economy](https://benchgecko.ai/economy).*"
return output
model_names = [m["name"] for m in MODELS]
with gr.Blocks(title="BenchGecko AI Model Explorer", theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# BenchGecko AI Model Explorer
Explore AI model benchmarks, pricing, and performance data from [BenchGecko](https://benchgecko.ai).
This is a sample of 10 models. The full platform tracks **thousands of models** across **hundreds of providers** with real-time updates.
[Full Rankings](https://benchgecko.ai/models) | [Pricing](https://benchgecko.ai/pricing) | [Compare](https://benchgecko.ai/compare) | [API](https://benchgecko.ai/api-docs) | [Economy](https://benchgecko.ai/economy) | [Compute](https://benchgecko.ai/compute) | [Mindshare](https://benchgecko.ai/mindshare)
""")
with gr.Tab("Search & Filter"):
with gr.Row():
query = gr.Textbox(label="Search models or providers", placeholder="e.g. DeepSeek, OpenAI, Qwen...")
sort_by = gr.Dropdown(choices=["Score (highest)", "Price (lowest)", "Context (largest)", "MMLU (highest)"], value="Score (highest)", label="Sort by")
oss_only = gr.Checkbox(label="Open source only", value=False)
search_btn = gr.Button("Search", variant="primary")
search_output = gr.Markdown()
search_btn.click(search_models, inputs=[query, sort_by, oss_only], outputs=search_output)
demo.load(search_models, inputs=[query, sort_by, oss_only], outputs=search_output)
with gr.Tab("Compare"):
with gr.Row():
m1 = gr.Dropdown(choices=model_names, label="Model 1", value=model_names[0])
m2 = gr.Dropdown(choices=model_names, label="Model 2", value=model_names[1])
compare_btn = gr.Button("Compare", variant="primary")
compare_output = gr.Markdown()
compare_btn.click(compare_models, inputs=[m1, m2], outputs=compare_output)
with gr.Tab("Value Analysis"):
value_btn = gr.Button("Analyze Price/Performance", variant="primary")
value_output = gr.Markdown()
value_btn.click(get_price_analysis, outputs=value_output)
gr.Markdown("""
---
**Data source**: [BenchGecko](https://benchgecko.ai) tracks thousands of AI models with cross-provider pricing, benchmark scores, and daily updates.
[Models](https://benchgecko.ai/models) | [Pricing](https://benchgecko.ai/pricing) | [Agents](https://benchgecko.ai/agents) | [MCP Servers](https://benchgecko.ai/mcp) | [Economy](https://benchgecko.ai/economy) | [Compute](https://benchgecko.ai/compute) | [Mindshare](https://benchgecko.ai/mindshare) | [Learn](https://benchgecko.ai/learn) | [Changelog](https://benchgecko.ai/changelog) | [API](https://benchgecko.ai/api-docs)
""")
demo.launch()
|