File size: 2,950 Bytes
cbfd993
cae214c
 
90d9239
cbfd993
3780e1f
cbfd993
eca534f
974cf69
3780e1f
cbfd993
 
 
 
 
 
 
 
 
 
 
 
 
5236fec
cae214c
5236fec
 
 
 
 
 
 
 
 
cae214c
90d9239
5236fec
cae214c
 
 
3780e1f
 
 
1f371f7
 
3780e1f
 
 
cae214c
 
 
3780e1f
90d9239
cae214c
 
 
 
 
 
 
95bc6ed
5236fec
 
cbfd993
 
5236fec
eca534f
 
974cf69
eca534f
cbfd993
 
 
 
 
3780e1f
90d9239
cbfd993
 
5236fec
 
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
import argparse
import streamlit as st
from streamlit_option_menu import option_menu

from openfactcheck.core.base import OpenFactCheck, OpenFactCheckConfig
from openfactcheck.app.sidebar import sidebar
from openfactcheck.app.evaluate_response import evaluate_response
from openfactcheck.app.evaluate_llm import evaluate_llm
from openfactcheck.app.evaluate_factchecker import evaluate_factchecker
from openfactcheck.app.utils import footer

def parse_args():
    parser = argparse.ArgumentParser(description='Initialize OpenFactCheck with custom configuration.')
    
    # Add arguments here, example:
    parser.add_argument("--config-path", 
                        type=str, 
                        help="Config File Path",
                        default="config.json")
    
    # Parse arguments from command line
    args = parser.parse_args()
    return args
    
class App:
    def __init__(self, config_path: str = "config.json"):
        @st.cache_resource(show_spinner=False)
        def init(config_path: str = "config.json"):
            # Initialize OpenFactCheck
            config = OpenFactCheckConfig(config_path)
            ofc = OpenFactCheck(config)
            return ofc
        
        self.ofc = init(config_path)
        pass

    def run(self):
        # Set up Dashboard
        st.set_page_config(page_title="OpenFactCheck Dashboard", 
                        page_icon=":bar_chart:", 
                        layout="wide",
                        initial_sidebar_state="collapsed")
        
        # # Set up footer
        # footer("Copyright © 2024 MBZUAI | Made with ❤︎ by OpenFactCheck Team")

        # Set up Sidebar
        sidebar()
                        
        # Title
        st.markdown("<h1 style='text-align: center;'>OpenFactCheck Dashboard</h1>", unsafe_allow_html=True)
        st.markdown("<h5 style='text-align: center;'>An Open-source Factuality Evaluation Demo for LLMs</h5>", unsafe_allow_html=True)

        # Selection Menu
        selected = option_menu(None, ["Evaluate LLM Response", "Evaluate LLM", "Evaluate FactChecker", "Leaderboards", "About"], 
            icons=['card-checklist', 'check-square', "check2-all", "trophy", "info-circle"],
            menu_icon="cast", 
            default_index=0, 
            orientation="horizontal"
        )

        st.info("Please provide OpenAI API Key, Serper API Key and Azure Search Key in the sidebar to evaluate LLM response.")

        # Load the selected page
        if selected == "Evaluate LLM Response":
            evaluate_response(self.ofc)
        elif selected == "Evaluate LLM":
            evaluate_llm(self.ofc)
        elif selected == "Evaluate FactChecker":
            evaluate_factchecker(self.ofc)
        # elif selected == "Leaderboards":
        #     leaderboards()
        # else:
        #     about()


if __name__ == "__main__":
    args = parse_args()

    app = App(args.config_path)
    app.run()