import streamlit as st import requests import time # 🔹 Configuration de la page en mode large st.set_page_config(page_title="Assistant UCAD (Univerté Cheikh Anta Diop de Dakar)", page_icon="💡", layout="wide") # 🔹 Initialisation des messages if "messages" not in st.session_state: st.session_state.messages = [ {"role": "bot", "content": "Bonjour, je suis l'assistant UCAD ! Comment puis-je vous aider ? 😊"} ] # 🔹 Affichage des messages dans un conteneur st.header("Assistant UCAD (Univerté Cheikh Anta Diop de Dakar)") for msg in st.session_state.messages: role_prefix = "🤖 Assistant UCAD" if msg["role"] == "bot" else "👤 Vous" st.markdown(f"**{role_prefix}** : {msg['content']}") # 🔹 Zone de saisie utilisateur user_input = st.text_input("Posez votre question ici...") if st.button("Envoyer"): if user_input: st.session_state.messages.append({"role": "user", "content": user_input}) # 🔹 Affichage du spinner (chargement) with st.spinner("L'Assistant réfléchit... 🤔"): time.sleep(1.5) # Simule un délai de réponse # 🔹 Appel à l'API FastAPI try: response = requests.get("http://127.0.0.1:8000/ask", params={"query": user_input}) if response.status_code == 200: bot_response = response.json().get("reponse", "Je n'ai pas compris votre question.") else: bot_response = "Erreur de connexion avec l'assistant." except requests.exceptions.RequestException: bot_response = "Le serveur est indisponible. Vérifiez votre connexion." # 🔹 Ajouter la réponse du bot st.session_state.messages.append({"role": "bot", "content": bot_response}) # 🔄 Rafraîchir l'affichage st.rerun()