import gradio as gr from transformers import pipeline # Definir contexto para lenguaje explícito o formal contexto_explicito = "Esta es una conversación informal en la que es aceptable el uso de lenguaje explícito si el tema lo amerita." contexto_formal = "Esta es una conversación formal y no se debe usar lenguaje explícito." # Cargar el modelo GPT-2 en español generator = pipeline('text-generation', model='PlanTL-GOB-ES/gpt2-large-bne') # Función para manejar la respuesta del chatbot con control de contexto def chatbot_response(input_text): print(f"Entrada recibida: {input_text}") # Log para verificar la entrada try: # Verificar si el input tiene palabras o temas sensibles que permitirían lenguaje explícito if any(palabra in input_text.lower() for palabra in ["sexo", "relaciones", "adultos"]): prompt = f"{contexto_explicito} {input_text}" else: prompt = f"{contexto_formal} {input_text}" # Generar respuesta con ajustes de parámetros para mejorar la coherencia outputs = generator(prompt, max_length=50, # Limitar la longitud de la respuesta num_return_sequences=1, do_sample=True, top_k=50, # Limitar a las 50 palabras más probables top_p=0.95, # Muestreo por núcleo temperature=0.7) # Controlar la creatividad del modelo response = outputs[0]['generated_text'] print(f"Respuesta generada: {response}") # Log para verificar la salida return response except Exception as e: print(f"Error generado: {str(e)}") # Log para registrar cualquier error return f"Error: {str(e)}" # Crear la interfaz del chatbot con Gradio iface = gr.Interface(fn=chatbot_response, inputs="text", outputs="text", title="Chatbot Contextual") # Ejecutar la aplicación iface.launch()