import streamlit as st import PIL.Image import os import google.generativeai as genai # Configuration de la page st.set_page_config( page_title="Mariam Anglais", page_icon="🇬🇧", layout="wide", initial_sidebar_state="expanded" ) # CSS personnalisé pour un design plus esthétique st.markdown( """ """, unsafe_allow_html=True ) # Configuration de l'API Google Generative AI GOOGLE_API_KEY = st.secrets["GOOGLE_API_KEY"] # Définir le chemin d'accès dans les secrets de l'application genai.configure(api_key=GOOGLE_API_KEY) # Titre et introduction avec effet d'animation st.markdown( """

✨ Mariam Anglais ✨

""", unsafe_allow_html=True ) st.markdown("
", unsafe_allow_html=True) # Espace st.write("Bienvenue sur votre plateforme d'analyse d'images intelligente! Téléchargez vos images, choisissez votre type d'analyse, et laissez la magie opérer.") # Colonnes pour une meilleure disposition col1, col2 = st.columns(2, gap="large") # Ajout d'un gap plus grand with col1: # Section de téléchargement d'images st.subheader("📷 Téléchargement d'images") uploaded_files = st.file_uploader("", type=["jpg", "jpeg", "png"], accept_multiple_files=True, label_visibility="collapsed") # Label caché # Aperçu des images téléchargées avec possibilité de les supprimer individuellement if uploaded_files: st.write("Aperçu des images :") for i, uploaded_file in enumerate(uploaded_files): col_img, col_del = st.columns([4, 1]) # Colonnes pour l'image et le bouton de suppression with col_img: st.image(uploaded_file, width=200, caption=f"Image {i+1}") with col_del: if st.button(f"🗑️", key=f"del_{i}"): del uploaded_files[i] st.experimental_rerun() with col2: # Section de choix du type d'analyse st.subheader("🎛️ Choix du type d'analyse") analysis_type = st.radio("", ("🔍 Type 1: Analyse de base", "🧠 Type 2: Analyse approfondie"), label_visibility="collapsed") # Description des types d'analyse (cachée par défaut, visible en cliquant) with st.expander("ℹ️ En savoir plus sur les types d'analyse"): if analysis_type == "🔍 Type 1: Analyse de base": st.write("L'analyse de base effectue une reconnaissance d'objets simple et rapide.") else: st.write("L'analyse approfondie utilise des algorithmes d'intelligence artificielle avancés pour une analyse plus précise et détaillée.") # Bouton de soumission if st.button("🚀 Soumettre", key="submit"): if uploaded_files: st.write("Type d'analyse sélectionné :", analysis_type) # Préparation des images pour l'API image_parts = [] for uploaded_file in uploaded_files: try: image = PIL.Image.open(uploaded_file) image_parts.append(image) except Exception as e: st.error(f"Erreur lors du chargement de l'image : {e}") st.stop() # Définir le prompt en fonction du type d'analyse if analysis_type == "🔍 Type 1: Analyse de base": prompt = "Décris les objets présents dans ces images." else: prompt = "Effectue une analyse détaillée de ces images, en te concentrant sur les détails et les relations entre les différents éléments." # Appel de l'API Google Generative AI try: model = genai.GenerativeModel(model_name="gemini-2.0-flash-exp") with st.spinner("Analyse en cours..."): progress_bar = st.progress(0) response = model.generate_content([prompt] + image_parts, stream=True) response.resolve() progress_bar.progress(100) # Affichage de la réponse st.subheader("📝 Résultat de l'analyse :") st.write(response.text) except Exception as e: st.error(f"Erreur lors de l'analyse : {e}") else: st.warning("⚠️ Veuillez télécharger au moins une image.") # Pied de page st.markdown("---") st.write("© 2024 Mariam Anglais - Tous droits réservés.")