Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,310 Bytes
49674c0 9a04ccb af1cf71 fe41d32 af1cf71 e8be70a 9a04ccb af1cf71 49674c0 d1aaee5 9a04ccb fe41d32 3e18916 af1cf71 3e18916 af1cf71 6d2ab11 3e18916 af1cf71 9a04ccb 49674c0 6d2ab11 9a04ccb af1cf71 3e18916 6d2ab11 d1aaee5 1398468 6d2ab11 d1aaee5 1398468 af1cf71 9a04ccb 3e18916 d1aaee5 49674c0 6d2ab11 af1cf71 9a04ccb |
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 |
from transformers import AutoModelForCausalLM, AutoTokenizer
import gradio as gr
import torch
import spaces
# Vérifier si CUDA est disponible et configurer le périphérique
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Utilisation du périphérique : {device}")
# Charger le modèle
model_name = "soynade-research/Oolel-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to(device)
# Liste des prompts système prédéfinis
system_prompts = {
"Conte Wolof traditionnel": "You are a skilled Wolof storyteller (Gewël) with deep knowledge of African folktales and traditions. Write engaging stories in Wolof that reflect African cultural values and wisdom.",
"Conseils en développement": "You are a software developer with expertise in building applications. Provide practical advice and solutions for coding challenges in Python and machine learning.",
"Conseils en gestion de projet": "You are an expert in project management, capable of offering insights on how to efficiently manage a remote development team and keep them motivated."
}
# Fonction pour générer une réponse
@spaces.GPU(duration=120)
def generate_response(user_input, system_prompt, max_new_tokens=150, temperature=0.7):
# Créer la liste des messages avec le prompt système et l'entrée utilisateur
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_input}
]
# Tokeniser l'entrée
inputs = tokenizer(user_input, return_tensors="pt").to(device)
# Générer une réponse
outputs = model.generate(inputs.input_ids, max_new_tokens=int(max_new_tokens), temperature=temperature)
# Décoder la réponse en texte
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# Fonction pour mettre à jour le message du prompt système en fonction du choix
def update_system_prompt(selected_prompt):
return system_prompts.get(selected_prompt, "")
# Interface Gradio
iface = gr.Interface(
fn=generate_response,
inputs=[
gr.Textbox(label="Message utilisateur", placeholder="Entrez votre message ici..."),
# Dropdown pour choisir un prompt système
gr.Dropdown(
label="Choisir un prompt système",
choices=list(system_prompts.keys()), # Liste des options de prompts
value=None, # Pas de sélection par défaut
type="value",
interactive=True
),
# Textbox pour afficher et modifier le message du prompt système
gr.Textbox(
label="Message du prompt système",
value="", # Valeur par défaut vide
placeholder="Sélectionnez un prompt système pour afficher son contenu ici..."
),
gr.Slider(50, 500, value=150, label="Nombre max de tokens")
],
outputs="text",
title="Oolel Chatbot",
description="Entrez votre message et choisissez un prompt pour générer des réponses adaptées dans divers domaines."
)
# Lier la mise à jour du prompt avec l'événement du Dropdown
iface.input_components[1].change(update_system_prompt, inputs=[iface.input_components[1]], outputs=[iface.input_components[2]])
# Lancer l'interface
iface.launch()
|