| import gradio as gr |
| from gradio_leaderboard import Leaderboard, SearchColumns |
| import config |
| from pathlib import Path |
|
|
| |
| 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""" |
| |
| |
| 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, |
| ) |
| |
| |
| filter_components, filter_types = UIComponents.create_filter_components() |
| |
| |
| UIComponents.setup_filter_events( |
| filter_components, filter_types, leaderboard, filter_manager, leaderboard_type |
| ) |
|
|
| def main(): |
| """Main application function""" |
| |
| |
| data_loader = LeaderboardDataLoader() |
| filter_manager = FilterManager(data_loader) |
| |
| |
| |
| Leaderboard.postprocess = postprocess |
| |
| |
| 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() |
|
|
|
|