MisterAI commited on
Commit
37bcfcd
·
verified ·
1 Parent(s): 32ea50b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +103 -0
app.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #TSMS_app.py_V05
2
+
3
+
4
+ # Import des bibliothèques nécessaires
5
+ import gradio as gr
6
+ from transformers import AutoTokenizer, AutoModelForCausalLM
7
+ import requests
8
+ import torch
9
+
10
+ # Fonction pour récupérer la liste des modèles disponibles sur Hugging Face Hub
11
+ def get_hfhub_models():
12
+ """Récupère la liste des modèles disponibles sur Hugging Face Hub"""
13
+ response = requests.get("https://huggingface.co/api/models")
14
+ if response.status_code == 200:
15
+ # Le JSON retourné est directement un tableau de modèles
16
+ models = [model['modelId'] for model in response.json()]
17
+ return models
18
+ else:
19
+ raise Exception(f"Erreur lors de la récupération des modèles : {response.status_code}")
20
+
21
+ # Fonction pour charger le modèle et le tokenizer
22
+ def load_model(model_name):
23
+ """Charge le modèle et le tokenizer"""
24
+ model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)
25
+ tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
26
+ return model, tokenizer
27
+
28
+ # Fonction pour générer du texte en utilisant le modèle
29
+ def generate_text(model, tokenizer, input_text, max_length, temperature):
30
+ """Génère du texte en utilisant le modèle"""
31
+ inputs = tokenizer(input_text, return_tensors="pt")
32
+ output = model.generate(**inputs, max_length=max_length, temperature=temperature)
33
+ return tokenizer.decode(output[0], skip_special_tokens=True)
34
+
35
+ # Fonction principale pour générer le texte
36
+ def main(input_text, max_length, temperature, model_name):
37
+ """Fonction principale pour générer le texte"""
38
+ global model, tokenizer
39
+ if model is None or tokenizer is None:
40
+ raise Exception("Modèle non chargé. Veuillez charger un modèle avant de générer du texte.")
41
+ generated_text = generate_text(model, tokenizer, input_text, max_length, temperature)
42
+ return generated_text
43
+
44
+ # Variables globales pour stocker le modèle et le tokenizer
45
+ model = None
46
+ tokenizer = None
47
+
48
+ # Fonction pour charger le modèle lors du clic sur le bouton "Charger Le Modèle"
49
+ def load_model_button_clicked(model_name):
50
+ """Charge le modèle et le tokenizer lors du clic sur le bouton"""
51
+ global model, tokenizer
52
+ model, tokenizer = load_model(model_name)
53
+ return f"Modèle {model_name} chargé avec succès"
54
+
55
+ # Création de l'interface Gradio
56
+ demo = gr.Blocks()
57
+
58
+ with demo:
59
+ gr.Markdown("# Modèle de Langage")
60
+
61
+ with gr.Row():
62
+ # Création d'un dropdown pour sélectionner le modèle
63
+ model_name_dropdown = gr.Dropdown(choices=get_hfhub_models(), label="Sélectionnez un modèle", interactive=True)
64
+ with gr.Row():
65
+ # Bouton pour charger le modèle sélectionné
66
+ LoadModel_button = gr.Button("Charger Le Modèle")
67
+
68
+ with gr.Row():
69
+ # Textbox pour entrer le texte d'entrée
70
+ input_text = gr.Textbox(label="Texte d'entrée")
71
+ with gr.Row():
72
+ # Sliders pour ajuster la longueur maximale et la température
73
+ max_length_slider = gr.Slider(50, 500, label="Longueur maximale", value=200)
74
+ temperature_slider = gr.Slider(0.1, 1.0, label="Température", value=0.7)
75
+
76
+ with gr.Row():
77
+ # Bouton pour soumettre le texte d'entrée
78
+ submit_button = gr.Button("Soumettre")
79
+
80
+ with gr.Row():
81
+ # Textbox pour afficher le texte généré
82
+ output_text = gr.Textbox(label="Texte généré")
83
+
84
+ # Ajout des interactions pour les boutons
85
+ # Lors du clic sur "Charger Le Modèle", appeler la fonction load_model_button_clicked
86
+ LoadModel_button.click(
87
+ load_model_button_clicked,
88
+ inputs=model_name_dropdown,
89
+ outputs=gr.Textbox(label="Message de chargement")
90
+ )
91
+
92
+ # Lors du clic sur "Soumettre", appeler la fonction main
93
+ submit_button.click(
94
+ main,
95
+ inputs=[input_text, max_length_slider, temperature_slider, model_name_dropdown],
96
+ outputs=output_text,
97
+ queue=False
98
+ )
99
+
100
+ # Lancer l'application Gradio
101
+ if __name__ == "__main__":
102
+ demo.launch()
103
+