Spaces:
Sleeping
Sleeping
| 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() | |