| 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 Llama |
| from huggingface_hub import hf_hub_download |
|
|
|
|
| |
| 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 :""" |
|
|
| |
| |
| |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| model_file = "mistralai_Mistral-Small-24B-Base-2501-Q8_0.gguf" |
| model_path = hf_hub_download( |
| repo_id="MisterAI/Bartowski_MistralAI_Mistral-Small-24B-Base-2501-GGUF", |
| filename=model_file, |
| repo_type="model" |
| ) |
|
|
|
|
| |
| |
| text_to_presentation = Llama(model_path, verbose=True) |
|
|
| |
| |
| |
| tokenizer = AutoTokenizer.from_pretrained(model_path) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| def generate_presentation(text): |
| |
| full_prompt = PREPROMPT + "\n\n" + text |
|
|
| |
| presentation_content = text_to_presentation(full_prompt, max_length=1500, num_return_sequences=1)[0]["generated_text"] |
|
|
| |
| 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 |
|
|
| |
| prs.save("presentation.pptx") |
|
|
| |
| return "Votre présentation est prête ! Vous pouvez la télécharger ici : " + os.path.abspath("presentation.pptx") |
|
|
| |
| 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() |
|
|