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.")