Aria / app.py
El-Alberto67's picture
Update app.py
c4e4630 verified
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
MODEL = "prithivMLmods/Llama-SmolTalk-3.2-1B-Instruct"
# Charger le tokenizer
tokenizer = AutoTokenizer.from_pretrained(MODEL)
# Charger le modèle en 8 bits
model = AutoModelForCausalLM.from_pretrained(
MODEL,
device_map="auto",
load_in_8bit=True
)
# Pipeline
chatbot = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device_map="auto"
)
# Prompt système
system_prompt = (
"Tu es Aria, une IA gentille, claire et polie. "
"Réponds toujours en phrases complètes. "
"Ne te lances pas dans un jeu de rôle, ne répète pas les messages précédents, "
"et donne uniquement ta réponse."
)
def chat(message, history):
history = history or []
context = "\n".join([f"{user}\n{bot}" for user, bot in history[-3:]])
prompt = f"{system_prompt}\n{context}\n{message}\nRéponse:"
resp = chatbot(
prompt,
max_new_tokens=250, # plus long pour éviter les coupures
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1
)[0]["generated_text"]
# Couper dès qu'il repart sur un nouveau tour
reply = resp.split("Réponse:")[-1].strip()
reply = reply.split("Utilisateur:")[0].strip()
history.append((message, reply))
return history, history
with gr.Blocks() as demo:
chatbot_ui = gr.Chatbot()
state = gr.State([]) # sauvegarde de l'historique
msg = gr.Textbox(placeholder="Écris un message...")
msg.submit(chat, [msg, state], [chatbot_ui, state])
msg.submit(lambda: "", None, msg) # reset input après envoi
demo.launch()