kevinxie06's picture
Upload updated version of app.py
fc10db1 verified
import gradio as gr
from gradio_leaderboard import Leaderboard, SearchColumns
import config
from pathlib import Path
# Import our new modular components
from utils import LeaderboardDataLoader, FilterManager, UIComponents, postprocess
def create_leaderboard_tab(leaderboard_type: str, data_loader: LeaderboardDataLoader,
filter_manager: FilterManager) -> None:
"""Create a leaderboard tab with filters"""
# Create the leaderboard component
leaderboard = Leaderboard(
value=data_loader.get_dataframe(leaderboard_type),
select_columns=None,
search_columns=SearchColumns(
primary_column="Model",
secondary_columns="",
placeholder="Search by Model Name",
label="Model Search"
),
hide_columns=["Model: Size Range", "Model: Accessibility"],
filter_columns=["Model: Domain", "Model: Size Range", "Model: Accessibility"],
datatype=config.TYPES,
)
# Create filter components
filter_components, filter_types = UIComponents.create_filter_components()
# Setup event handlers for filters
UIComponents.setup_filter_events(
filter_components, filter_types, leaderboard, filter_manager, leaderboard_type
)
def main():
"""Main application function"""
# Initialize data loader and filter manager
data_loader = LeaderboardDataLoader()
filter_manager = FilterManager(data_loader)
# Apply custom postprocessing to Leaderboard class
# Models are sorted in order of decreasing average performance (best performance at the top!)
Leaderboard.postprocess = postprocess
# Create the Gradio app
with gr.Blocks() as app:
gr.Markdown("# BRIDGE (Benchmarking Large Language Models for Understanding Real-world Clinical Practice Text)")
with gr.Tabs():
with gr.Tab("README"):
html_content = (Path(__file__).parent / "docs.md").read_text()
gr.HTML(html_content)
with gr.Tab("Zero-Shot"):
create_leaderboard_tab("zero_shot", data_loader, filter_manager)
with gr.Tab("Few-Shot"):
create_leaderboard_tab("few_shot", data_loader, filter_manager)
with gr.Tab("CoT"):
create_leaderboard_tab("cot", data_loader, filter_manager)
return app
if __name__ == "__main__":
app = main()
app.launch()