import streamlit as st import google.generativeai as genai import os from markdown_pdf import Section from markdown_pdf import MarkdownPdf import tempfile from PIL import Image # Configuration de l'API Gemini token = os.environ.get("TOKEN") genai.configure(api_key=token) generation_config = { "temperature": 1, "top_p": 0.95, "top_k": 64, "max_output_tokens": 8192, } safety_settings = [ {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"}, {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"}, {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"}, {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}, ] model = genai.GenerativeModel( model_name="gemini-1.5-flash-latest", generation_config=generation_config, safety_settings=safety_settings ) def generate_content(image_file): pre = "Fais un tableau des outils à utiliser pour ce commentaire composé. Je veux les outils, repérage, et interprétation." # Ouvrir l'image avec PIL image = Image.open(image_file) # Générer le contenu avec Gemini response = model.generate_content([pre, image]) return response.text def create_pdf(content): pdf = MarkdownPdf(toc_level=2) contentt = f"""{content} """ pdf.add_section(Section(contentt,toc=False)) pdf.meta["title"] = "Analyse de Commentaire Composé" pdf.meta["author"] = "Générateur IA" with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmp_file: pdf_path = tmp_file.name pdf.save(pdf_path) return pdf_path st.title("Générateur d'Analyse de Commentaire Composé(pas encore opérationnel") st.write("Téléchargez une image pour générer une analyse.") uploaded_file = st.file_uploader("Choisissez une image", type=["png", "jpg", "jpeg"]) if uploaded_file is not None: st.image(uploaded_file, caption="Image téléchargée", use_column_width=True) if st.button("Générer l'analyse"): with st.spinner("Génération de l'analyse en cours..."): generated_content = generate_content(uploaded_file) #st.markdown(generated_content) pdf_path = create_pdf(generated_content) with open(pdf_path, "rb") as pdf_file: pdf_bytes = pdf_file.read() st.download_button( label="Télécharger le PDF", data=pdf_bytes, file_name="analyse_commentaire_compose.pdf", mime="application/pdf" ) st.success("Analyse générée avec succès!") st.sidebar.markdown("## À propos") st.sidebar.write("Cette application utilise l'IA pour générer une analyse de commentaire composé à partir d'une image.")