MisterAI commited on
Commit
f1a7442
·
verified ·
1 Parent(s): 349a7bb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -31
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import os
2
  import gradio as gr
3
  from huggingface_hub import hf_hub_download
4
- from llama_cpp import Llama
5
  from pptx import Presentation
6
  from pptx.util import Inches, Pt
7
  from pptx.enum.text import PP_ALIGN
@@ -10,43 +10,51 @@ from pptx.enum.text import PP_ALIGN
10
  PREPROMPT = """Vous êtes un assistant IA chargé de générer une présentation PowerPoint. Générez une présentation structurée en suivant ce format EXACT:
11
 
12
  TITRE: [Titre principal de la présentation]
13
-
14
  DIAPO 1:
15
  Titre: [Titre de la diapo]
16
  Points:
17
  - Point 1
18
  - Point 2
19
  - Point 3
20
-
21
  DIAPO 2:
22
  Titre: [Titre de la diapo]
23
  Points:
24
  - Point 1
25
  - Point 2
26
  - Point 3
27
-
28
  [Continuez avec ce format pour chaque diapositive]
29
 
30
  Analysez le texte suivant et créez une présentation claire et professionnelle :"""
31
 
 
 
 
32
  # Téléchargement du modèle
33
  # /!\Taille Du Modèle GGUF Trop Gros Fonctionne Mal sur HFSpace Machine Free
34
  #model_file = "mistralai_Mistral-Small-24B-Base-2501-Q8_0.gguf"
35
- model_file = "mistralai_Mistral-Small-24B-Base-2501-IQ3_XS.gguf"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
- model_path = hf_hub_download(
38
- repo_id="MisterAI/Bartowski_MistralAI_Mistral-Small-24B-Base-2501-GGUF",
39
- filename=model_file,
40
- repo_type="model"
41
- )
42
 
43
  # Initialisation du modèle avec des paramètres de contexte plus grands
44
- text_to_presentation = Llama(
45
- model_path=model_path,
46
- verbose=True,
47
- n_ctx=4096, # Taille maximale du contexte (entrée + sortie)
48
- n_batch=256 # Taille du batch pour le traitement
49
- )
50
 
51
  def parse_presentation_content(content):
52
  """Parse le contenu généré en sections pour les diapositives"""
@@ -99,16 +107,16 @@ def generate_presentation(text):
99
  full_prompt = PREPROMPT + "\n\n" + text
100
 
101
  # Génération du contenu avec le modèle
102
- response = text_to_presentation(
103
- full_prompt,
104
- max_tokens=4096, # Nombre maximum de tokens en sortie
105
- temperature=0.7,
106
- stop=["<end>"],
107
- echo=False
108
  )
109
 
 
 
110
  # Extraction du texte généré
111
- generated_content = response['choices'][0]['text']
112
 
113
  # Parse le contenu et crée la présentation
114
  slides = parse_presentation_content(generated_content)
@@ -133,7 +141,6 @@ def generate_presentation(text):
133
  # description="Entrez votre texte et obtenez une présentation PowerPoint générée automatiquement."
134
  #)
135
 
136
-
137
  # Interface Gradio avec thème Sombre "gstaff/xkcd" et boîte de logs
138
  with gr.Blocks(theme="gstaff/xkcd") as interface:
139
  # Interface Gradio avec une zone de texte plus grande
@@ -149,15 +156,11 @@ with gr.Blocks(theme="gstaff/xkcd") as interface:
149
  description="Entrez votre texte et obtenez une présentation PowerPoint générée automatiquement."
150
  )
151
 
152
- # Ajout de la boîte de logs NOK Aucune Console Implémentée dans GRADIO
153
- # with gr.Row():
154
- # gr.Console()
155
 
156
  # Lance l'interface
157
- interface.launch()
158
-
159
-
160
-
161
 
162
  if __name__ == "__main__":
163
  demo.launch()
 
1
  import os
2
  import gradio as gr
3
  from huggingface_hub import hf_hub_download
4
+ from transformers import AutoModelForCausalLM, AutoTokenizer
5
  from pptx import Presentation
6
  from pptx.util import Inches, Pt
7
  from pptx.enum.text import PP_ALIGN
 
10
  PREPROMPT = """Vous êtes un assistant IA chargé de générer une présentation PowerPoint. Générez une présentation structurée en suivant ce format EXACT:
11
 
12
  TITRE: [Titre principal de la présentation]
 
13
  DIAPO 1:
14
  Titre: [Titre de la diapo]
15
  Points:
16
  - Point 1
17
  - Point 2
18
  - Point 3
 
19
  DIAPO 2:
20
  Titre: [Titre de la diapo]
21
  Points:
22
  - Point 1
23
  - Point 2
24
  - Point 3
 
25
  [Continuez avec ce format pour chaque diapositive]
26
 
27
  Analysez le texte suivant et créez une présentation claire et professionnelle :"""
28
 
29
+
30
+
31
+
32
  # Téléchargement du modèle
33
  # /!\Taille Du Modèle GGUF Trop Gros Fonctionne Mal sur HFSpace Machine Free
34
  #model_file = "mistralai_Mistral-Small-24B-Base-2501-Q8_0.gguf"
35
+ #model_file = "mistralai_Mistral-Small-24B-Base-2501-IQ3_XS.gguf"
36
+
37
+ #model_path = hf_hub_download(
38
+ # repo_id="MisterAI/Bartowski_MistralAI_Mistral-Small-24B-Base-2501-GGUF",
39
+ # filename=model_file,
40
+ # repo_type="model"
41
+ #)
42
+
43
+ # Initialisation du modèle avec des paramètres de contexte plus grands
44
+ #text_to_presentation = Llama(
45
+ # model_path=model_path,
46
+ # verbose=True,
47
+ # n_ctx=4096, # Taille maximale du contexte (entrée + sortie)
48
+ # n_batch=256 # Taille du batch pour le traitement
49
+ #)
50
 
51
+
52
+ # Téléchargement du modèle
53
+ model_id = "mistralai/Mistral-Nemo-Instruct-2407"
 
 
54
 
55
  # Initialisation du modèle avec des paramètres de contexte plus grands
56
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
57
+ model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto")
 
 
 
 
58
 
59
  def parse_presentation_content(content):
60
  """Parse le contenu généré en sections pour les diapositives"""
 
107
  full_prompt = PREPROMPT + "\n\n" + text
108
 
109
  # Génération du contenu avec le modèle
110
+ inputs = tokenizer.apply_chat_template(
111
+ [{"role": "user", "content": full_prompt}],
112
+ return_tensors="pt",
113
+ return_dict=True
 
 
114
  )
115
 
116
+ outputs = model.generate(**inputs, max_new_tokens=4096, temperature=0.3, stop=["<end>"])
117
+
118
  # Extraction du texte généré
119
+ generated_content = tokenizer.decode(outputs[0], skip_special_tokens=True)
120
 
121
  # Parse le contenu et crée la présentation
122
  slides = parse_presentation_content(generated_content)
 
141
  # description="Entrez votre texte et obtenez une présentation PowerPoint générée automatiquement."
142
  #)
143
 
 
144
  # Interface Gradio avec thème Sombre "gstaff/xkcd" et boîte de logs
145
  with gr.Blocks(theme="gstaff/xkcd") as interface:
146
  # Interface Gradio avec une zone de texte plus grande
 
156
  description="Entrez votre texte et obtenez une présentation PowerPoint générée automatiquement."
157
  )
158
 
159
+ # Ajout de la boîte de logs
160
+ #with gr.Row():
161
+ # gr.Console()
162
 
163
  # Lance l'interface
 
 
 
 
164
 
165
  if __name__ == "__main__":
166
  demo.launch()