Wolof-Bridge / app.py
dofbi's picture
update
6d2ab11
raw
history blame
3.31 kB
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()