star / app.py
andre2012o93gmailcom's picture
Upload 2 files
e43eaf8 verified
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()