File size: 5,114 Bytes
a8bc5c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2adc88e
 
 
 
 
 
 
 
 
 
a8bc5c3
 
 
2adc88e
a8bc5c3
 
2adc88e
 
a8bc5c3
2adc88e
 
 
 
 
a8bc5c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89497da
a8bc5c3
 
 
 
 
 
 
4e3fd2c
a8bc5c3
 
 
 
 
 
 
 
 
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#https://huggingface.co/spaces/MisterAI/Try_Small_Models02
#TSMS_app.py_V09
#Add SystemInfo to complete requirements.txt
#Change Interface



import subprocess
import sys, platform
from importlib import metadata as md

#SystemInfo
print("Python:", platform.python_version(), sys.implementation.name)
print("OS:", platform.uname())
print("\n".join(sorted(f"{d.metadata['Name']}=={d.version}" for d in md.distributions())))


# Import des bibliothèques nécessaires
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
import requests
import torch

# Fonction pour charger le modèle et le tokenizer
def load_model(model_name):
    """Charge le modèle et le tokenizer"""
    model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)
    tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
    return model, tokenizer

# Fonction pour générer du texte en utilisant le modèle
def generate_text(model, tokenizer, input_text, max_length, temperature):
    """Génère du texte en utilisant le modèle"""
    inputs = tokenizer(input_text, return_tensors="pt")
    output = model.generate(**inputs, max_length=max_length, temperature=temperature)
    return tokenizer.decode(output[0], skip_special_tokens=True)

# Fonction principale pour générer le texte
def main(input_text, max_length, temperature, model_name):
    """Fonction principale pour générer le texte"""
    global model, tokenizer
    if model is None or tokenizer is None:
        raise Exception("Modèle non chargé. Veuillez charger un modèle avant de générer du texte.")
    generated_text = generate_text(model, tokenizer, input_text, max_length, temperature)
    return generated_text

# Variables globales pour stocker le modèle et le tokenizer
model = None
tokenizer = None

# Fonction pour charger le modèle lors du clic sur le bouton "Charger Le Modèle"
#def load_model_button_clicked(model_name):
#    """Charge le modèle et le tokenizer lors du clic sur le bouton"""
#    global model, tokenizer, history
#    try:
#        model, tokenizer = load_model(model_name)
#        return f"Modèle {model_name} chargé avec succès"
#    except Exception as e:
#        return f"Erreur lors du chargement du modèle {model_name}: {e}"

# Fonction pour charger le modèle lors du clic sur le bouton "Charger Le Modèle"
def load_model_button_clicked(model_name):
    """Charge le modèle et le tokenizer lors du clic sur le bouton"""
    global model, tokenizer, history  # Ajoutez history ici pour l'utiliser
    try:
        model, tokenizer = load_model(model_name)
        history = append_history(history, f"Modèle {model_name} chargé avec succès")  # Mettre à jour l'historique
        return history  # Renvoie l'historique mis à jour
    except Exception as e:
        history = append_history(history, f"Erreur lors du chargement du modèle {model_name}: {e}")  # Mettre à jour l'historique en cas d'erreur
        return history  # Renvoie l'historique mis à jour
        
        
        
#Fonction Pour Conserver un Historique
def append_history(history, message):
    return f"{history}\n\n***\n{message}" if history else message
        
# Création de l'interface Gradio
demo = gr.Blocks()

with demo:
    gr.Markdown("# Modèle de Langage")

    with gr.Row():
        with gr.Column():
            # Textbox pour entrer le nom du modèle
            model_name_textbox = gr.Textbox(label="Nom du modèle", placeholder="Depot/NomModele Exemple kurakurai/Luth-LFM2-1.2B", interactive=True)
        with gr.Column():
            # Bouton pour charger le modèle sélectionné
            LoadModel_button = gr.Button("Charger Le Modèle")            
        with gr.Column():
            # Textbox pour Logs et Historique
            history = gr.Textbox(label="Historique", lines=5)
    
    with gr.Row():
        # Textbox pour entrer le texte d'entrée
        input_text = gr.Textbox(label="Texte d'entrée")
    with gr.Row():
        # Sliders pour ajuster la longueur maximale et la température
        max_length_slider = gr.Slider(50, 500, label="Longueur maximale", value=200)
        temperature_slider = gr.Slider(0.1, 1.0, label="Température", value=0.7)

    with gr.Row():
        # Bouton pour soumettre le texte d'entrée
        submit_button = gr.Button("Soumettre")

    with gr.Row():        
        # Textbox pour afficher le texte généré
        output_text = gr.Textbox(label="Texte généré")

    # Ajout des interactions pour les boutons
    # Lors du clic sur "Charger Le Modèle", appeler la fonction load_model_button_clicked
    LoadModel_button.click(
        load_model_button_clicked,
        inputs=[model_name_textbox],
        outputs=[history]
    )
    
    # Lors du clic sur "Soumettre", appeler la fonction main
    submit_button.click(
        main,
        inputs=[input_text, max_length_slider, temperature_slider, model_name_textbox, history],
        outputs=[output_text],
        queue=False
    )

# Lancer l'application Gradio
if __name__ == "__main__":
    demo.launch()