|
import requests |
|
import streamlit as st |
|
|
|
|
|
CITATION_BUTTON_LABEL = "π Citation" |
|
CITATION_NOTE_TEXT = "If you use this resource, please cite it as:" |
|
CITATION_BIB_TEXT = """ |
|
@article{zhao2024workflows, |
|
title={On the Workflows and Smells of Leaderboard Operations (LBOps): An Exploratory Study of Foundation Model Leaderboards}, |
|
author={Zhao, Zhimin and Bangash, Abdul Ali and C{\^o}go, Filipe Roseiro and Adams, Bram and Hassan, Ahmed E}, |
|
journal={arXiv preprint arXiv:2407.04065}, |
|
year={2024} |
|
} |
|
""" |
|
|
|
@st.cache_data(ttl=3600) |
|
def fetch_readme_content(): |
|
try: |
|
url = "https://raw.githubusercontent.com/SAILResearch/awesome-foundation-model-leaderboards/main/README.md" |
|
response = requests.get(url, timeout=30) |
|
response.raise_for_status() |
|
return response.text |
|
except requests.exceptions.RequestException as e: |
|
st.error(f"Failed to fetch README.md content: {e}") |
|
return "" |
|
|
|
class SearchApplication: |
|
def __init__(self): |
|
self.title = "Foundation Model Leaderboard Search" |
|
self.set_page_config() |
|
|
|
st.header(self.title) |
|
self.query = st.text_input("Search", value="") |
|
|
|
st.caption( |
|
"This search toolkit is a user-friendly platform that enables efficient exploration and filtering of the comprehensive [Awesome Foundation Model Leaderboard](https://github.com/SAILResearch/awesome-foundation-model-leaderboards) list, which includes over 400 foundation model leaderboards, along with various development tools and evaluation organizations, making it an indispensable resource for researchers, developers, and enthusiasts in the field." |
|
) |
|
st.write("#") |
|
|
|
self.show_search_results() |
|
self.show_citation_panel() |
|
|
|
def set_page_config(self): |
|
st.set_page_config( |
|
page_title=self.title, |
|
page_icon="π", |
|
layout="centered", |
|
) |
|
|
|
def show_search_results(self): |
|
if self.query: |
|
st.write("#") |
|
|
|
readme_content = fetch_readme_content() |
|
|
|
if readme_content: |
|
search_results = [] |
|
lines = readme_content.split("\n") |
|
for line in lines: |
|
if self.query.lower() in line.lower(): |
|
search_results.append(line) |
|
|
|
num_search_results = len(search_results) |
|
st.write(f"A total of {num_search_results} matches found.") |
|
|
|
if num_search_results > 0: |
|
for result in search_results: |
|
st.write(result) |
|
else: |
|
st.write("No matches found.") |
|
|
|
def show_citation_panel(self): |
|
with st.expander(CITATION_BUTTON_LABEL, expanded=True): |
|
st.markdown(CITATION_NOTE_TEXT) |
|
st.code( |
|
CITATION_BIB_TEXT, |
|
language="", |
|
) |
|
|
|
if __name__ == "__main__": |
|
SearchApplication() |
|
|