zhiminy's picture
Update app.py
b4d30ed verified
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()