AyudaAlan-0.1 / app.py
Fifthoply's picture
Update app.py
be25bb0 verified
raw
history blame
1.86 kB
import gradio as gr
import torch
from transformers import pipeline
# 1. Configuraci贸n del modelo
model_id = "Fifthoply/AyudaAlan-0.1"
print(f"Cargando {model_id} en CPU...")
pipe = pipeline(
"text-generation",
model=model_id,
dtype=torch.float32,
device_map="cpu"
)
def chat_responder(message, history):
prompt = "<|im_start|>system\nEres un asistente breve.<|im_end|>\n"
# Procesar historial con detecci贸n de formato autom谩tica
for msg in history:
# Caso 1: Formato de diccionario {"role": "...", "content": "..."}
if isinstance(msg, dict):
role = msg.get("role", "user")
content = msg.get("content", "")
prompt += f"<|im_start|>{role}\n{content}<|im_end|>\n"
# Caso 2: Formato de lista cl谩sica [user, assistant]
elif isinstance(msg, (list, tuple)):
u, a = msg
prompt += f"<|im_start|>user\n{u}<|im_end|>\n<|im_start|>assistant\n{a}<|im_end|>\n"
prompt += f"<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant\n"
# Generaci贸n
outputs = pipe(
prompt,
max_new_tokens=25,
do_sample=False,
pad_token_id=pipe.tokenizer.pad_token_id,
eos_token_id=pipe.tokenizer.eos_token_id
)
# Extraer la respuesta (usando el 铆ndice [0] para asegurar el acceso al texto)
generated_text = outputs[0]['generated_text']
respuesta = generated_text.split("<|im_start|>assistant\n")[-1].split("<|im_end|>")[0].strip()
return respuesta
# 2. Interfaz de Usuario (Sin argumentos problem谩ticos)
demo = gr.ChatInterface(
fn=chat_responder,
title="Ayuda Alan 馃Ε",
description="Hazme una pregunta y te dir茅 c贸mo se hace.",
examples=["驴C贸mo se toma agua?", "驴C贸mo se salta?"],
)
if __name__ == "__main__":
demo.launch()