MisterAI commited on
Commit
5907304
·
verified ·
1 Parent(s): 5aa78f7

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +131 -0
app.py ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #TSMS_app.py_V07
2
+
3
+ # Import des bibliothèques nécessaires
4
+ import gradio as gr
5
+ from transformers import AutoTokenizer, AutoModelForCausalLM
6
+ import requests
7
+ import torch
8
+
9
+ # Fonction pour charger le modèle et le tokenizer
10
+ def load_model(model_name):
11
+ """Charge le modèle et le tokenizer"""
12
+ model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)
13
+ tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
14
+ return model, tokenizer
15
+
16
+ # Fonction pour mettre à jour le label de la Textbox
17
+ def update_output_text_label(model_name):
18
+ """Met à jour le label de la Textbox avec le nom du modèle"""
19
+ return f"Réponse de {model_name}"
20
+
21
+ # Fonction pour générer du texte en utilisant le modèle
22
+ def generate_text(model, tokenizer, input_text, max_length, temperature):
23
+ """Génère du texte en utilisant le modèle"""
24
+ inputs = tokenizer(input_text, return_tensors="pt")
25
+ output = model.generate(**inputs, max_length=max_length, temperature=temperature)
26
+ return tokenizer.decode(output[0], skip_special_tokens=True)
27
+
28
+ # Fonction principale pour générer le texte
29
+ def main(input_text, max_length, temperature, model_name):
30
+ """Fonction principale pour générer le texte"""
31
+ global model, tokenizer
32
+ if model is None or tokenizer is None:
33
+ raise Exception("Modèle non chargé. Veuillez charger un modèle avant de générer du texte.")
34
+ generated_text = generate_text(model, tokenizer, input_text, max_length, temperature)
35
+ return generated_text
36
+
37
+ # Variables globales pour stocker le modèle et le tokenizer
38
+ model = None
39
+ tokenizer = None
40
+
41
+ # Fonction pour charger le modèle lors du clic sur le bouton "Charger Le Modèle"
42
+ def load_model_button_clicked(model_name):
43
+ """Charge le modèle et le tokenizer lors du clic sur le bouton"""
44
+ global model, tokenizer
45
+ try:
46
+ model, tokenizer = load_model(model_name)
47
+ return f"Modèle {model_name} chargé avec succès"
48
+ except Exception as e:
49
+ return f"Erreur lors du chargement du modèle {model_name}: {e}"
50
+
51
+ # Création de l'interface Gradio
52
+ demo = gr.Blocks()
53
+
54
+ with demo:
55
+ gr.Markdown("""
56
+ # Choisir un LLM
57
+
58
+ **Renseigner un NomRepo/NomModele ou charger le modèle par défaut**
59
+
60
+ **Attention : Inférence locale : Choisir un petit modèle : 1.5B maximum**
61
+
62
+ **NB : ce HFSpace a pour but de tester rapidement des petits LLM : pas de format GGUF (et autres formats incompatibles listés ci-dessous)**
63
+
64
+ **Formats Incompatibles :**
65
+ - GGUF
66
+ - Quantized Models
67
+ - ONNX
68
+ - Diffusers
69
+ - Text-to-Speech (TTS)
70
+ - Text-to-Image (T2I)
71
+ - Stable Diffusion
72
+ - Custom Code
73
+ """)
74
+
75
+ with gr.Row():
76
+ # Textbox pour entrer le nom du modèle
77
+ model_name_textbox = gr.Textbox(label="Renseigner Le Nom Du Modèle", value="prithivMLmods/Triangulum-1B", interactive=True)
78
+
79
+ with gr.Row():
80
+ # Bouton pour charger le modèle sélectionné
81
+ LoadModel_button = gr.Button("Charger Le Modèle")
82
+
83
+ with gr.Row():
84
+ # Textbox pour entrer le texte d'entrée
85
+ input_text = gr.Textbox(label="ChatBox")
86
+
87
+ with gr.Row():
88
+ # Sliders pour ajuster la longueur maximale et la température
89
+ max_length_slider = gr.Slider(25, 1048, label="Nombre de Token", value=250)
90
+ temperature_slider = gr.Slider(0.1, 1.0, label="Température", value=0.7)
91
+
92
+ with gr.Row():
93
+ # Bouton pour soumettre le texte d'entrée
94
+ submit_button = gr.Button("Soumettre")
95
+
96
+ with gr.Row():
97
+ # Textbox pour afficher le texte généré
98
+ output_text = gr.Textbox(label="Réponse", interactive=False)
99
+
100
+ # Ajout des interactions pour les boutons
101
+ # Lors du clic sur "Charger Le Modèle", appeler la fonction load_model_button_clicked
102
+ # LoadModel_button.click(
103
+ # load_model_button_clicked,
104
+ # inputs=model_name_textbox,
105
+ # outputs=gr.Textbox(label="Message de chargement")
106
+ # )
107
+
108
+ LoadModel_button.click(
109
+ load_model_button_clicked,
110
+ inputs=model_name_textbox,
111
+ outputs=[gr.Textbox(label="Message de chargement"), model_name_textbox]
112
+ ).then(
113
+ update_output_text_label,
114
+ inputs=model_name_textbox,
115
+ outputs=output_text
116
+ )
117
+
118
+ # Lors du clic sur "Soumettre", appeler la fonction main
119
+ submit_button.click(
120
+ main,
121
+ inputs=[input_text, max_length_slider, temperature_slider, model_name_textbox],
122
+ outputs=output_text,
123
+ queue=False
124
+ )
125
+
126
+ # Lancer l'application Gradio
127
+ if __name__ == "__main__":
128
+ demo.launch()
129
+
130
+
131
+