File size: 2,936 Bytes
a3d26e6
 
 
3a8ddd8
a3d26e6
 
 
f7289a6
a3d26e6
59ba192
a3d26e6
3a8ddd8
 
 
214b1f8
3a8ddd8
 
59ba192
8c27c79
3a8ddd8
a3d26e6
 
 
 
 
3536eb7
a3d26e6
ea96b1d
a3d26e6
8c27c79
 
3a8ddd8
8b93442
 
 
 
 
 
 
 
 
 
 
3a8ddd8
 
 
 
a3d26e6
 
 
720c02e
a3d26e6
5480e8d
f7289a6
 
 
 
 
 
 
 
 
 
5480e8d
a3d26e6
720c02e
 
ef365c3
4e9fde0
f367f47
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
88
89
90
91
92
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 subscription.index import get_usages, is_usage_limit_reached, daily_limit_enabled

from util import getYamlConfig

load_dotenv()

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

def init_app():

    config = getYamlConfig()

    if len(st.session_state) == 0:
        # Define Vectore store strategy
        pinecone_connector = PineconeConnector()
        vs_manager = VectoreStoreManager(pinecone_connector)

        st.session_state["retrived_documents"] = []
        st.session_state["messages"] = []
        st.session_state["remove_undefined_value"] = True
        st.session_state["assistant"] = Rag(vectore_store=vs_manager)
        st.session_state["data_dict"] = config['variables']
        st.session_state["prompt_system"] = config['prompt_system']

        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"]]


def main():

    init_app()

    st.set_page_config(page_title=GROUP_NAME)

    st.logo(LOGO)
    st.title(GROUP_NAME)
    
    if daily_limit_enabled():
        usages = get_usages()
        reached = is_usage_limit_reached()

        st.sidebar.html(f"<p style='margin:0;text-align:center;font-weight:bold;font-size:24px;'>{usages['count']} / {usages['daily_limit']}</p>")
        if reached:
            st.sidebar.html(f"<p style='text-align:center;font-style:italic;'>Vous avez atteint la limite d'utilisation<p>")
        else:
            st.sidebar.html(f"<p style='text-align:center;'>Nombre de messages envoyés aujourd'hui<p>")

    

    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="🖊️")
    form = st.Page("pages/form.py", title="Paramètres", icon="📋")
    chatbot = st.Page("pages/chatbot.py", title="Chatbot", icon="🤖", default=True)

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

    pg.run()


if __name__ == "__main__":
    main()