ALMANAQUE / app.py
SOLITARIO503BM's picture
Update app.py
09e9bf7 verified
import gradio as gr
from transformers import pipeline
# --- CONFIGURACIÓN ---
MODEL_ID = "datificate/gpt2-small-spanish" # modelo pequeño, seguro en CPU Free
# Crear pipeline de generación de texto
try:
texto_modelo = pipeline(
"text-generation",
model=MODEL_ID,
device=-1 # CPU
)
except:
texto_modelo = None
# Lista para guardar historial de la conversación
historial = []
# Función para generar texto con memoria y parámetros optimizados
def generar_texto(entrada):
global historial
if texto_modelo:
# Guardamos la entrada del usuario
historial.append(f"Usuario: {entrada}")
# Tomamos las últimas 3 interacciones para contexto
prompt = "\n".join(historial[-6:]) + "\nIA:"
resultados = texto_modelo(
prompt,
max_new_tokens=100,
do_sample=True,
temperature=0.8, # creatividad
top_k=40, # opciones limitadas
top_p=0.9, # probabilidad acumulativa
repetition_penalty=1.3 # evita repeticiones
)
# Obtenemos solo la respuesta generada
texto_generado = resultados[0]["generated_text"]
respuesta = texto_generado.replace(prompt, "").strip()
# Guardamos la respuesta en el historial
historial.append(f"IA: {respuesta}")
return respuesta
else:
return "Error: no se pudo cargar el modelo. Revisa los requisitos del Space."
# --- INTERFAZ GRADIO ---
with gr.Blocks() as demo:
gr.Markdown("## Almanac (GPT-2 Small, conversación optimizada) 😎")
entrada_texto = gr.Textbox(label="Escribe algo")
salida_texto = gr.Textbox(label="Respuesta de la IA")
btn_texto = gr.Button("Enviar")
btn_texto.click(generar_texto, entrada_texto, salida_texto)
demo.launch()