import os import gradio as gr from transformers import pipeline from pptx import Presentation from pptx.util import Inches from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, TextIteratorStreamer from llama_cpp import LLMCppModel # Préprompt pour donner des instructions au modèle PREPROMPT = """Vous êtes un assistant IA chargé de générer une présentation PowerPoint à partir d'un texte fourni par un utilisateur. Voici les instructions à suivre : - Analysez attentivement le texte pour en comprendre les idées principales et la structure. - Générez des titres et sous-titres pertinents pour chaque diapositive. - Résumez les points clés sous forme de listes à puces. - Ajoutez du texte explicatif pour chaque diapositive afin de compléter le contenu. - Assurez-vous que la présentation soit cohérente, logique et visuellement attractive. Voici le texte à transformer en présentation :""" # Chargement du modèle IA depuis Hugging Face #text_to_presentation = pipeline("text-generation", model="MisterAI/Bartowski_MistralAI_Mistral-Small-24B-Base-2501-GGUF") #tokenizer = AutoTokenizer.from_pretrained("MisterAI/Bartowski_MistralAI_Mistral-Small-24B-Base-2501-GGUF") # Chargement du modèle IA depuis Hugging Face #from llama_cpp import LLMCppModel model_path = "MisterAI/Bartowski_MistralAI_Mistral-Small-24B-Base-2501-GGUF" #text_to_presentation = LLMCppModel(model_path) text_to_presentation = model_path # Chargement du tokenizer depuis Hugging Face #from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("MisterAI/Bartowski_MistralAI_Mistral-Small-24B-Base-2501-GGUF") def generate_presentation(text): # Ajout du préprompt au texte de l'utilisateur full_prompt = PREPROMPT + "\n\n" + text # Analyse du texte avec le modèle IA presentation_content = text_to_presentation(full_prompt, max_length=1500, num_return_sequences=1)[0]["generated_text"] # Génération de la présentation PowerPoint prs = Presentation() slide = prs.slides.add_slide(prs.slide_layouts[0]) title = slide.shapes.title title.text = "Présentation générée" body = slide.placeholders[1].text_frame body.text = presentation_content # Enregistrement de la présentation prs.save("presentation.pptx") # Retourner le lien de téléchargement return "Votre présentation est prête ! Vous pouvez la télécharger ici : " + os.path.abspath("presentation.pptx") # Interface Gradio demo = gr.Interface( fn=generate_presentation, inputs="text", outputs="text", title="Générateur de présentations", description="Entrez du texte et obtenez une présentation PowerPoint générée automatiquement." ) if __name__ == "__main__": demo.launch()