import requests import streamlit as st # Constants for citation information 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) # Cache the data for 1 hour def fetch_readme_content(): try: url = "https://raw.githubusercontent.com/SAILResearch/awesome-foundation-model-leaderboards/main/README.md" response = requests.get(url, timeout=10) response.raise_for_status() # Raises HTTPError for bad responses 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() # Add the citation panel here 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()