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()