Clemylia's picture
Update app.py
7a20801 verified
import gradio as gr
import torch
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
# --- Configuration des Modèles ---
model_id = "NaA-IA/melta-english"
translation_id = "Helsinki-NLP/opus-mt-en-fr"
print("Chargement du modèle de texte... (cela peut prendre quelques minutes)")
# Chargement du tokenizer et du modèle de langue
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
device_map="auto"
)
print("Chargement du traducteur...")
# Pipeline de traduction
translator = pipeline("translation_en_to_fr", model=translation_id)
def generate_response(message, history):
"""
Fonction de génération : prend le message, génère en anglais, traduit en français.
"""
# 1. Préparation de l'entrée (en anglais)
inputs = tokenizer(message, return_tensors="pt").to(model.device)
# 2. Génération de la réponse brute
with torch.no_grad():
output_tokens = model.generate(
**inputs,
max_new_tokens=150,
do_sample=True,
temperature=0.7,
top_p=0.9
)
# 3. Décodage de la réponse (on retire le prompt d'origine)
full_text = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
response_en = full_text[len(message):].strip()
# 4. Traduction vers le français
if response_en:
translation = translator(response_en)
response_fr = translation[0]['translation_text']
else:
response_fr = "Désolé, je n'ai pas pu générer de réponse."
return response_fr
# --- Interface Gradio ---
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown(f"# 🤖 Chat Melta-English (Traduit en FR)\nModèle : `{model_id}`")
chatbot = gr.ChatInterface(
fn=generate_response,
examples=["Tell me a story about a dragon", "What is the capital of France?"],
title="Assistant de Traduction Automatique"
)
if __name__ == "__main__":
demo.launch()