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" userId = None def init_app(): config = getYamlConfig() query_params = st.query_params if "user" in query_params: global userId userId = query_params["user"] if len(st.session_state) == 0: # Define Vectore store strategy pinecone_connector = PineconeConnector() vs_manager = VectoreStoreManager(pinecone_connector) st.session_state["messages"] = [] 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) st.write(f"**User ID:** {userId}") 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()