File size: 2,714 Bytes
a3d26e6
 
 
3a8ddd8
a3d26e6
 
 
 
59ba192
a3d26e6
3a8ddd8
 
 
59ba192
3a8ddd8
 
59ba192
8c27c79
3a8ddd8
f9dd183
 
 
 
d78cf02
 
3536eb7
d78cf02
a3d26e6
d78cf02
ea96b1d
d78cf02
 
 
 
a3d26e6
d78cf02
8b93442
 
 
 
 
 
 
 
 
 
d78cf02
 
 
8b93442
3a8ddd8
 
 
 
a3d26e6
 
 
720c02e
a3d26e6
 
720c02e
 
 
 
 
a3d26e6
 
720c02e
59ba192
 
 
 
 
e49d193
59ba192
 
 
 
 
 
a3d26e6
 
 
 
 
 
 
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
83
84
85
86
87
import streamlit as st
import os

from dotenv import load_dotenv
from rag import Rag
from vectore_store.PineconeConnector import PineconeConnector
from vectore_store.VectoreStoreManager import VectoreStoreManager

from util import getYamlConfig

load_dotenv()

GROUP_NAME = os.environ.get("APP_NAME")
LOGO = "assets/logo.png"

def init_app():

    config = getYamlConfig()

    query_params = st.query_params
    if "user" in query_params:
        st.session_state["id_user"] = query_params["user"]

    # Initialize session state keys if they are not already defined
    if "retrived_documents" not in st.session_state:
        st.session_state["retrived_documents"] = []
    if "messages" not in st.session_state:
        st.session_state["messages"] = []
    if "remove_undefined_value" not in st.session_state:
        st.session_state["remove_undefined_value"] = True
    if "assistant" not in st.session_state:
        # Define Vectore store strategy
        pinecone_connector = PineconeConnector()
        vs_manager = VectoreStoreManager(pinecone_connector)
        st.session_state["assistant"] = Rag(vectore_store=vs_manager)
    if "data_dict" not in st.session_state:
        if 'parts' in config['variables']:
            # Flatten structure by adding part name to each field
            st.session_state["data_dict"] = [
                {**field, "part": part["name"]}
                for part in config["variables"]["parts"]
                for field in part["fields"]
            ]
        else:
            # Initialize session state with single list of variables
            st.session_state["data_dict"] = [{**field} for field in config["variables"]]
    
    if "prompt_system" not in st.session_state:
        st.session_state["prompt_system"] = config['prompt_system']


def main():

    init_app()

    st.set_page_config(page_title=GROUP_NAME)

    st.logo(LOGO)
    st.title(GROUP_NAME)

    saved_documents = st.Page("pages/persistent_documents.py", title="Communs", icon="🗃️")
    documents = st.Page("pages/documents.py", title="Vos documents", icon="📂")
    prompt_system = st.Page("pages/prompt_system.py", title="Prompt système", icon="🖊️", default=True)
    form = st.Page("pages/form.py", title="Paramètres", icon="📋")
    chatbot = st.Page("pages/chatbot.py", title="Chatbot", icon="🤖")

    pg = st.navigation(
        {
            "Documents": [
                saved_documents,
                documents,
            ],
            "Configurations": [
                prompt_system,
                form,
            ],
            "Dialogue": [
                chatbot
            ],
        }
    )

    pg.run()


if __name__ == "__main__":
    main()