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