Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from gpt4all import GPT4All | |
| # Ruta del modelo (asegúrate de subir un archivo .gguf dentro de la carpeta "models/") | |
| MODEL_PATH = "models/mistral-7b-openorca.Q4_0.gguf" | |
| # Inicializa el modelo (se carga una sola vez) | |
| try: | |
| model = GPT4All(MODEL_PATH) | |
| except Exception as e: | |
| model = None | |
| print("⚠️ No se encontró el modelo:", e) | |
| # Función de respuesta en formato chat | |
| def chat_responder(history, message, modo): | |
| if not model: | |
| return history + [[message, "⚠️ No se encontró el modelo en la carpeta 'models/'."]] | |
| if modo == "Didáctico": | |
| prompt = f"Explica de manera sencilla para un estudiante: {message}" | |
| elif modo == "Paso a paso": | |
| prompt = f"Resuelve paso a paso: {message}" | |
| elif modo == "Examen": | |
| prompt = f"Responde de forma breve, como si fuera un examen: {message}" | |
| else: | |
| prompt = f"Responde con referencias de científicos famosos: {message}" | |
| with model.chat_session() as session: | |
| respuesta = session.generate(prompt, max_tokens=300) | |
| history = history + [[message, respuesta]] | |
| return history | |
| # Interfaz tipo chat en Gradio | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 🔬 ExploraLab — Chat de Química y Física") | |
| gr.Markdown("Elige un modo y conversa con tu tutor IA.") | |
| modo = gr.Radio( | |
| ["Didáctico", "Paso a paso", "Examen", "Referencias"], | |
| label="Modo de explicación", | |
| value="Didáctico" | |
| ) | |
| chatbot = gr.Chatbot(height=400) | |
| msg = gr.Textbox(label="Escribe tu pregunta aquí") | |
| clear = gr.Button("🧹 Limpiar chat") | |
| def respond(history, message, modo): | |
| return chat_responder(history, message, modo) | |
| msg.submit(respond, [chatbot, msg, modo], chatbot) | |
| clear.click(lambda: [], None, chatbot) | |
| if __name__ == "__main__": | |
| demo.launch() | |