File size: 3,094 Bytes
6414ec4
 
 
a208802
 
a04589c
 
24a3e12
eb4651f
 
 
 
a208802
 
6414ec4
b5241cb
6414ec4
b5241cb
 
 
 
6414ec4
b5241cb
 
6414ec4
 
 
 
59ef901
6414ec4
 
 
eb4651f
 
6414ec4
b4d30ed
6414ec4
 
 
 
a208802
6414ec4
 
 
 
 
 
 
 
 
eb4651f
6414ec4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a208802
 
a04589c
17424df
a04589c
17424df
a208802
6414ec4
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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()