Spaces:
Runtime error
Runtime error
File size: 4,635 Bytes
5907304 977fcfd 5907304 |
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 |
#TSMS_app.py_V07
#A REPARER - CHARGE PLUS CORRECTEMENT LE MODELE
# 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 mettre à jour le label de la Textbox
def update_output_text_label(model_name):
"""Met à jour le label de la Textbox avec le nom du modèle"""
return f"Réponse de {model_name}"
# 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
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}"
# Création de l'interface Gradio
demo = gr.Blocks()
with demo:
gr.Markdown("""
# Choisir un LLM
**Renseigner un NomRepo/NomModele ou charger le modèle par défaut**
**Attention : Inférence locale : Choisir un petit modèle : 1.5B maximum**
**NB : ce HFSpace a pour but de tester rapidement des petits LLM : pas de format GGUF (et autres formats incompatibles listés ci-dessous)**
**Formats Incompatibles :**
- GGUF
- Quantized Models
- ONNX
- Diffusers
- Text-to-Speech (TTS)
- Text-to-Image (T2I)
- Stable Diffusion
- Custom Code
""")
with gr.Row():
# Textbox pour entrer le nom du modèle
model_name_textbox = gr.Textbox(label="Renseigner Le Nom Du Modèle", value="prithivMLmods/Triangulum-1B", interactive=True)
with gr.Row():
# Bouton pour charger le modèle sélectionné
LoadModel_button = gr.Button("Charger Le Modèle")
with gr.Row():
# Textbox pour entrer le texte d'entrée
input_text = gr.Textbox(label="ChatBox")
with gr.Row():
# Sliders pour ajuster la longueur maximale et la température
max_length_slider = gr.Slider(25, 1048, label="Nombre de Token", value=250)
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="Réponse", interactive=False)
# 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=gr.Textbox(label="Message de chargement")
# )
LoadModel_button.click(
load_model_button_clicked,
inputs=model_name_textbox,
outputs=[gr.Textbox(label="Message de chargement"), model_name_textbox]
).then(
update_output_text_label,
inputs=model_name_textbox,
outputs=output_text
)
# Lors du clic sur "Soumettre", appeler la fonction main
submit_button.click(
main,
inputs=[input_text, max_length_slider, temperature_slider, model_name_textbox],
outputs=output_text,
queue=False
)
# Lancer l'application Gradio
if __name__ == "__main__":
demo.launch()
|