Moustapha91 commited on
Commit
e2ae923
·
verified ·
1 Parent(s): ecb7dd8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -95
app.py CHANGED
@@ -1,5 +1,4 @@
1
  import torch
2
- import numpy
3
  from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
4
  import gradio as gr
5
 
@@ -8,113 +7,81 @@ model_name = "Moustapha91/bart_large_poetique-v02"
8
  model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
9
  tokenizer = AutoTokenizer.from_pretrained(model_name)
10
 
11
- # Fonction de génération
12
- def generate_poem(prompt, temperature, top_k, top_p, num_beams, repetition_penalty, max_length):
13
- """
14
- Génère un texte poétique à partir d'un prompt et de paramètres personnalisés.
15
- """
16
- # Tokenisation du prompt
17
  inputs = tokenizer(
18
- prompt,
19
  padding="max_length",
20
- max_length=512,
21
  return_tensors="pt",
22
  truncation=True,
23
  )
24
  input_ids = inputs.input_ids.to(model.device)
25
  attention_mask = inputs.attention_mask.to(model.device)
26
 
27
- # Génération avec les paramètres spécifiés par l'utilisateur
28
  outputs = model.generate(
29
  input_ids=input_ids,
30
  attention_mask=attention_mask,
31
- max_length=max_length,
32
- temperature=temperature,
33
- top_k=top_k,
34
- top_p=top_p,
35
- num_beams=num_beams,
36
- repetition_penalty=repetition_penalty,
37
  early_stopping=True,
38
- no_repeat_ngram_size=3, # Empêche les répétitions courtes
 
39
  )
40
- # Décodage du texte généré
41
- output_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
42
- return output_text
43
 
44
- # Interface Gradio
45
- def gradio_interface():
46
- # Définir les composants Gradio
47
- title = "✨ Générateur de Texte Poétique"
48
- description = (
49
- "Cette interface interactive vous permet de générer des textes poétiques "
50
- "en entrant un 'prompt' et en ajustant les paramètres de génération."
51
- )
52
- examples = [
53
- # Chaque exemple correspond à [prompt, temperature, top_k, top_p, num_beams, repetition_penalty, max_length]
54
- ["Dans la clarté d'une nuit étoilée, un fleuve murmure des secrets oubliés.", 1.0, 50, 0.9, 4, 1.5, 150],
55
- ["L'amour est un feu doux, éclairant les âmes perdues dans l'ombre.", 1.2, 40, 0.85, 5, 2.0, 100],
56
- ["Un enfant rêve d'unifier un continent par des chants de liberté.", 0.8, 30, 0.95, 6, 1.8, 200],
57
- ]
58
 
59
- interface = gr.Interface(
60
- fn=generate_poem,
61
- inputs=[
62
- gr.Textbox(
63
- label="Prompt",
64
- placeholder="Entrez votre prompt ici...",
65
- lines=2,
66
- ),
67
- gr.Slider(
68
- label="Température (Créativité)",
69
- minimum=0.5,
70
- maximum=1.5,
71
- value=1.0,
72
- step=0.1,
73
- ),
74
- gr.Slider(
75
- label="Top-k (Mots possibles)",
76
- minimum=0,
77
- maximum=100,
78
- value=50,
79
- step=1,
80
- ),
81
- gr.Slider(
82
- label="Top-p (Nucleus Sampling)",
83
- minimum=0.5,
84
- maximum=1.0,
85
- value=0.9,
86
- step=0.1,
87
- ),
88
- gr.Slider(
89
- label="Nombre de faisceaux (Beam Search)",
90
- minimum=1,
91
- maximum=10,
92
- value=4,
93
- step=1,
94
- ),
95
- gr.Slider(
96
- label="Pénalité de répétition",
97
- minimum=1.0,
98
- maximum=5.0,
99
- value=1.5,
100
- step=0.1,
101
- ),
102
- gr.Slider(
103
- label="Longueur maximale",
104
- minimum=50,
105
- maximum=512,
106
- value=150,
107
- step=10,
108
- ),
109
- ],
110
- outputs=gr.Textbox(label="Texte Poétique Généré", lines=10),
111
- title=title,
112
- description=description,
113
- examples=examples,
114
- )
115
- return interface
116
 
117
- # Lancer l'application Gradio
118
- if __name__ == "__main__":
119
- interface = gradio_interface()
120
- interface.launch()
 
1
  import torch
 
2
  from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
3
  import gradio as gr
4
 
 
7
  model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
8
  tokenizer = AutoTokenizer.from_pretrained(model_name)
9
 
10
+ # Fonction de génération ajustée
11
+ def generate_summary(input_text):
 
 
 
 
12
  inputs = tokenizer(
13
+ input_text,
14
  padding="max_length",
15
+ max_length=512, # Ajustez si nécessaire
16
  return_tensors="pt",
17
  truncation=True,
18
  )
19
  input_ids = inputs.input_ids.to(model.device)
20
  attention_mask = inputs.attention_mask.to(model.device)
21
 
22
+ # Génération avec des paramètres personnalisés
23
  outputs = model.generate(
24
  input_ids=input_ids,
25
  attention_mask=attention_mask,
26
+ max_length=512,
27
+ num_beams=4,
28
+ temperature=1.0,
 
 
 
29
  early_stopping=True,
30
+ repetition_penalty=6.0,
31
+ no_repeat_ngram_size=5,
32
  )
33
+ output_str = tokenizer.decode(outputs[0], skip_special_tokens=True)
34
+ return output_str
 
35
 
36
+ # Liste d'exemples enrichis
37
+ examples = [
38
+ "L'amour, cet élan mystérieux qui unit les âmes, est une lumière douce dans les ténèbres du quotidien.",
39
+ "Les tirailleurs sénégalais, ces soldats venus d'Afrique, ont marqué l'histoire par leur courage et leur sacrifice. Recrutés à partir de 1857 sous l'autorité coloniale française, ils provenaient de nombreux pays d'Afrique de l'Ouest.",
40
+ "Il était une fois un garçon plein de rêves et d'espoir. Porté par une vision audacieuse, il rêvait d'unifier toute l'Afrique sous un même idéal de paix et de solidarité.",
41
+ "L'eau, source de vie, est l'élément essentiel qui relie tous les êtres vivants. Elle coule dans les rivières, traverse les montagnes et nourrit la terre.",
42
+ "Dans un petit village au cœur de l'Afrique, une vieille femme racontait les légendes des ancêtres à la lumière des étoiles, transmettant ainsi leur sagesse aux générations futures."
43
+ ]
 
 
 
 
 
 
44
 
45
+ # Personnalisation de la description et de l'interface
46
+ title = "📝 Générateur de Texte Poétique et Résumé"
47
+ description = """
48
+ Bienvenue dans notre application interactive de génération de texte poétique ou résumé ! 🖋️
49
+ Utilisez ce modèle pré-entraîné pour transformer des idées en textes élégants et expressifs.
50
+ Ajoutez un paragraphe dans la zone ci-dessous et voyez la magie opérer !
51
+ """
52
+ about = """
53
+ ### À propos
54
+ Ce projet utilise le modèle **BART** de Facebook, connu pour ses capacités avancées en résumé et génération de texte.
55
+ Créé pour inspirer, éduquer et honorer l'héritage de la littérature et des récits africains.
56
+ Vous pouvez tester avec les exemples ci-dessus ou entrer vos propres idées.
57
+
58
+ ---
59
+
60
+ 📚 **Exemples suggérés :**
61
+ - Un texte sur l'amour.
62
+ - Une introduction sur les tirailleurs sénégalais.
63
+ - Un récit d'unité et d'espoir en Afrique.
64
+ """
65
+
66
+ # Interface Gradio améliorée
67
+ interface = gr.Interface(
68
+ fn=generate_summary,
69
+ inputs=gr.Textbox(
70
+ lines=10,
71
+ placeholder="Entrez un texte à transformer en poème ou résumé ici...",
72
+ label="🖊️ Texte à transformer"
73
+ ),
74
+ outputs=gr.Textbox(
75
+ lines=10,
76
+ label="✨ Texte généré"
77
+ ),
78
+ examples=examples,
79
+ title=title,
80
+ description=description,
81
+ theme="compact", # Thème compact et moderne
82
+ article=about, # Section 'À propos'
83
+ allow_flagging="never", # Désactive le flagging si inutile
84
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
 
86
+ # Lancer l'application
87
+ interface.launch()