kshitijthakkar commited on
Commit
0acdeac
Β·
1 Parent(s): 38fcab6

Add UI tabs for get_top_performers and get_leaderboard_summary tools

Browse files
Files changed (1) hide show
  1. app.py +91 -1
app.py CHANGED
@@ -585,7 +585,97 @@ def create_gradio_ui():
585
  outputs=[results_output]
586
  )
587
 
588
- # Tab 6: Get Dataset
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
589
  with gr.Tab("πŸ“¦ Get Dataset"):
590
  gr.Markdown("""
591
  ## Load SMOLTRACE Datasets as JSON
 
585
  outputs=[results_output]
586
  )
587
 
588
+ # Tab 6: Get Top Performers
589
+ with gr.Tab("πŸ† Get Top Performers"):
590
+ gr.Markdown("""
591
+ ## Get Top Performing Models (Token-Optimized)
592
+
593
+ Quickly retrieve top N models from the leaderboard without loading all runs.
594
+ **90% token reduction** compared to loading the full leaderboard dataset.
595
+ """)
596
+
597
+ with gr.Row():
598
+ with gr.Column():
599
+ top_perf_repo = gr.Textbox(
600
+ label="Leaderboard Repository",
601
+ value="kshitijthakkar/smoltrace-leaderboard",
602
+ placeholder="username/dataset-name"
603
+ )
604
+ top_perf_metric = gr.Dropdown(
605
+ label="Ranking Metric",
606
+ choices=["success_rate", "total_cost_usd", "avg_duration_ms", "co2_emissions_g"],
607
+ value="success_rate",
608
+ info="Metric to rank models by"
609
+ )
610
+ top_perf_n = gr.Slider(
611
+ label="Top N Models",
612
+ minimum=1,
613
+ maximum=20,
614
+ value=5,
615
+ step=1,
616
+ info="Number of top models to return"
617
+ )
618
+ top_perf_button = gr.Button("πŸ† Get Top Performers", variant="primary")
619
+
620
+ with gr.Column():
621
+ top_perf_output = gr.JSON(label="Top Performers (JSON)")
622
+
623
+ async def run_get_top_performers(repo, metric, top_n):
624
+ """Get top performing models from leaderboard."""
625
+ try:
626
+ import json
627
+ result = await get_top_performers(
628
+ leaderboard_repo=repo,
629
+ metric=metric,
630
+ top_n=int(top_n)
631
+ )
632
+ return json.loads(result)
633
+ except Exception as e:
634
+ return {"error": str(e)}
635
+
636
+ top_perf_button.click(
637
+ fn=run_get_top_performers,
638
+ inputs=[top_perf_repo, top_perf_metric, top_perf_n],
639
+ outputs=[top_perf_output]
640
+ )
641
+
642
+ # Tab 7: Get Leaderboard Summary
643
+ with gr.Tab("πŸ“ˆ Get Leaderboard Summary"):
644
+ gr.Markdown("""
645
+ ## Get Leaderboard Overview Statistics (Token-Optimized)
646
+
647
+ Get high-level summary statistics without loading individual runs.
648
+ **99% token reduction** compared to loading the full leaderboard dataset.
649
+ """)
650
+
651
+ with gr.Row():
652
+ with gr.Column():
653
+ summary_repo = gr.Textbox(
654
+ label="Leaderboard Repository",
655
+ value="kshitijthakkar/smoltrace-leaderboard",
656
+ placeholder="username/dataset-name"
657
+ )
658
+ summary_button = gr.Button("πŸ“ˆ Get Summary", variant="primary")
659
+
660
+ with gr.Column():
661
+ summary_output = gr.JSON(label="Leaderboard Summary (JSON)")
662
+
663
+ async def run_get_leaderboard_summary(repo):
664
+ """Get leaderboard summary statistics."""
665
+ try:
666
+ import json
667
+ result = await get_leaderboard_summary(leaderboard_repo=repo)
668
+ return json.loads(result)
669
+ except Exception as e:
670
+ return {"error": str(e)}
671
+
672
+ summary_button.click(
673
+ fn=run_get_leaderboard_summary,
674
+ inputs=[summary_repo],
675
+ outputs=[summary_output]
676
+ )
677
+
678
+ # Tab 8: Get Dataset
679
  with gr.Tab("πŸ“¦ Get Dataset"):
680
  gr.Markdown("""
681
  ## Load SMOLTRACE Datasets as JSON