Moustapha91 commited on
Commit
d4ae9fe
·
verified ·
1 Parent(s): cf714c8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +94 -62
app.py CHANGED
@@ -7,81 +7,113 @@ model_name = "Moustapha91/bart_large_poetique-v02"
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()
 
 
 
7
  model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
8
  tokenizer = AutoTokenizer.from_pretrained(model_name)
9
 
10
+ # Fonction de génération
11
+ def generate_poem(prompt, temperature, top_k, top_p, num_beams, repetition_penalty, max_length):
12
+ """
13
+ Génère un texte poétique à partir d'un prompt et de paramètres personnalisés.
14
+ """
15
+ # Tokenisation du prompt
16
  inputs = tokenizer(
17
+ prompt,
18
  padding="max_length",
19
+ max_length=512,
20
  return_tensors="pt",
21
  truncation=True,
22
  )
23
  input_ids = inputs.input_ids.to(model.device)
24
  attention_mask = inputs.attention_mask.to(model.device)
25
 
26
+ # Génération avec les paramètres spécifiés par l'utilisateur
27
  outputs = model.generate(
28
  input_ids=input_ids,
29
  attention_mask=attention_mask,
30
+ max_length=max_length,
31
+ temperature=temperature,
32
+ top_k=top_k,
33
+ top_p=top_p,
34
+ num_beams=num_beams,
35
+ repetition_penalty=repetition_penalty,
36
  early_stopping=True,
37
+ no_repeat_ngram_size=3, # Empêche les répétitions courtes
 
38
  )
39
+ # Décodage du texte généré
40
+ output_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
41
+ return output_text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
+ # Interface Gradio
44
+ def gradio_interface():
45
+ # Définir les composants Gradio
46
+ title = "✨ Générateur de Texte Poétique"
47
+ description = (
48
+ "Cette interface interactive vous permet de générer des textes poétiques "
49
+ "en entrant un 'prompt' et en ajustant les paramètres de génération."
50
+ )
51
+ examples = [
52
+ # Chaque exemple correspond à [prompt, temperature, top_k, top_p, num_beams, repetition_penalty, max_length]
53
+ ["Dans la clarté d'une nuit étoilée, un fleuve murmure des secrets oubliés.", 1.0, 50, 0.9, 4, 1.5, 150],
54
+ ["L'amour est un feu doux, éclairant les âmes perdues dans l'ombre.", 1.2, 40, 0.85, 5, 2.0, 100],
55
+ ["Un enfant rêve d'unifier un continent par des chants de liberté.", 0.8, 30, 0.95, 6, 1.8, 200],
56
+ ]
57
 
58
+ interface = gr.Interface(
59
+ fn=generate_poem,
60
+ inputs=[
61
+ gr.Textbox(
62
+ label="Prompt",
63
+ placeholder="Entrez votre prompt ici...",
64
+ lines=2,
65
+ ),
66
+ gr.Slider(
67
+ label="Température (Créativité)",
68
+ minimum=0.5,
69
+ maximum=1.5,
70
+ value=1.0,
71
+ step=0.1,
72
+ ),
73
+ gr.Slider(
74
+ label="Top-k (Mots possibles)",
75
+ minimum=0,
76
+ maximum=100,
77
+ value=50,
78
+ step=1,
79
+ ),
80
+ gr.Slider(
81
+ label="Top-p (Nucleus Sampling)",
82
+ minimum=0.5,
83
+ maximum=1.0,
84
+ value=0.9,
85
+ step=0.1,
86
+ ),
87
+ gr.Slider(
88
+ label="Nombre de faisceaux (Beam Search)",
89
+ minimum=1,
90
+ maximum=10,
91
+ value=4,
92
+ step=1,
93
+ ),
94
+ gr.Slider(
95
+ label="Pénalité de répétition",
96
+ minimum=1.0,
97
+ maximum=5.0,
98
+ value=1.5,
99
+ step=0.1,
100
+ ),
101
+ gr.Slider(
102
+ label="Longueur maximale",
103
+ minimum=50,
104
+ maximum=512,
105
+ value=150,
106
+ step=10,
107
+ ),
108
+ ],
109
+ outputs=gr.Textbox(label="Texte Poétique Généré", lines=10),
110
+ title=title,
111
+ description=description,
112
+ examples=examples,
113
+ )
114
+ return interface
115
 
116
+ # Lancer l'application Gradio
117
+ if __name__ == "__main__":
118
+ interface = gradio_interface()
119
+ interface.launch()