Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
import torch | |
# Charger le modèle et le tokenizer | |
def load_model(): | |
tokenizer = AutoTokenizer.from_pretrained("Hawoly18/llama3.2-3B-Wolof") | |
model = AutoModelForCausalLM.from_pretrained("Hawoly18/llama3.2-3B-Wolof") | |
if tokenizer.pad_token is None: | |
tokenizer.pad_token = tokenizer.eos_token | |
return tokenizer, model | |
tokenizer, model = load_model() | |
# Fonction de génération de réponse | |
def generate_response(model, tokenizer, question, max_length=512): | |
input_text = f"Question: {question}\nRéponse:" | |
input_ids = tokenizer.encode(input_text, return_tensors='pt', padding=True, truncation=True) | |
attention_mask = input_ids != tokenizer.pad_token_id | |
with torch.no_grad(): | |
output_ids = model.generate( | |
input_ids, | |
max_length=max_length, | |
attention_mask=attention_mask, | |
pad_token_id=tokenizer.eos_token_id, | |
eos_token_id=tokenizer.eos_token_id, | |
num_beams=5, # Recherche par faisceaux pour améliorer la qualité | |
no_repeat_ngram_size=2, # Éviter la répétition des n-grammes | |
early_stopping=True | |
) | |
response = tokenizer.decode(output_ids[0], skip_special_tokens=True) | |
response = response.replace(input_text, "").strip() # Extraire la réponse | |
return response | |
# Interface Streamlit | |
st.title("Modèle de génération de réponses") | |
st.write("Entrez une question pour obtenir une réponse générée par le modèle.") | |
# Input de l'utilisateur | |
question = st.text_input("Votre question:") | |
if question: | |
with st.spinner("Génération de la réponse..."): | |
response = generate_response(model, tokenizer, question) | |
st.write("Réponse:") | |
st.write(response) | |
# Option pour partager l'interface sur Streamlit Cloud ou en local | |