andre2012o93gmailcom commited on
Commit
e43eaf8
·
verified ·
1 Parent(s): dffa52e

Upload 2 files

Browse files

Tutor Ai de ciencia

Files changed (2) hide show
  1. ExploraLabChat.zip +3 -0
  2. app.py +47 -62
ExploraLabChat.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3749bb11a038ef2ed02d07e3834c42d826b12b99fe7e7a2bae253568151a1fab
3
+ size 3543
app.py CHANGED
@@ -1,70 +1,55 @@
1
  import gradio as gr
2
- from huggingface_hub import InferenceClient
3
-
4
-
5
- def respond(
6
- message,
7
- history: list[dict[str, str]],
8
- system_message,
9
- max_tokens,
10
- temperature,
11
- top_p,
12
- hf_token: gr.OAuthToken,
13
- ):
14
- """
15
- For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
16
- """
17
- client = InferenceClient(token=hf_token.token, model="openai/gpt-oss-20b")
18
-
19
- messages = [{"role": "system", "content": system_message}]
20
-
21
- messages.extend(history)
22
-
23
- messages.append({"role": "user", "content": message})
24
-
25
- response = ""
26
-
27
- for message in client.chat_completion(
28
- messages,
29
- max_tokens=max_tokens,
30
- stream=True,
31
- temperature=temperature,
32
- top_p=top_p,
33
- ):
34
- choices = message.choices
35
- token = ""
36
- if len(choices) and choices[0].delta.content:
37
- token = choices[0].delta.content
38
-
39
- response += token
40
- yield response
41
 
 
 
 
 
 
42
 
43
- """
44
- For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
45
- """
46
- chatbot = gr.ChatInterface(
47
- respond,
48
- type="messages",
49
- additional_inputs=[
50
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
51
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
52
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
53
- gr.Slider(
54
- minimum=0.1,
55
- maximum=1.0,
56
- value=0.95,
57
- step=0.05,
58
- label="Top-p (nucleus sampling)",
59
- ),
60
- ],
61
- )
62
 
63
- with gr.Blocks() as demo:
64
- with gr.Sidebar():
65
- gr.LoginButton()
66
- chatbot.render()
67
 
 
 
68
 
69
  if __name__ == "__main__":
70
  demo.launch()
 
1
  import gradio as gr
2
+ from gpt4all import GPT4All
3
+
4
+ # Ruta del modelo (asegúrate de subir un archivo .gguf dentro de la carpeta "models/")
5
+ MODEL_PATH = "models/mistral-7b-openorca.Q4_0.gguf"
6
+
7
+ # Inicializa el modelo (se carga una sola vez)
8
+ try:
9
+ model = GPT4All(MODEL_PATH)
10
+ except Exception as e:
11
+ model = None
12
+ print("⚠️ No se encontró el modelo:", e)
13
+
14
+ # Función de respuesta en formato chat
15
+ def chat_responder(history, message, modo):
16
+ if not model:
17
+ return history + [[message, "⚠️ No se encontró el modelo en la carpeta 'models/'."]]
18
+
19
+ if modo == "Didáctico":
20
+ prompt = f"Explica de manera sencilla para un estudiante: {message}"
21
+ elif modo == "Paso a paso":
22
+ prompt = f"Resuelve paso a paso: {message}"
23
+ elif modo == "Examen":
24
+ prompt = f"Responde de forma breve, como si fuera un examen: {message}"
25
+ else:
26
+ prompt = f"Responde con referencias de científicos famosos: {message}"
27
+
28
+ with model.chat_session() as session:
29
+ respuesta = session.generate(prompt, max_tokens=300)
30
+ history = history + [[message, respuesta]]
31
+ return history
32
+
33
+ # Interfaz tipo chat en Gradio
34
+ with gr.Blocks() as demo:
35
+ gr.Markdown("# 🔬 ExploraLab — Chat de Química y Física")
36
+ gr.Markdown("Elige un modo y conversa con tu tutor IA.")
 
 
 
 
37
 
38
+ modo = gr.Radio(
39
+ ["Didáctico", "Paso a paso", "Examen", "Referencias"],
40
+ label="Modo de explicación",
41
+ value="Didáctico"
42
+ )
43
 
44
+ chatbot = gr.Chatbot(height=400)
45
+ msg = gr.Textbox(label="Escribe tu pregunta aquí")
46
+ clear = gr.Button("🧹 Limpiar chat")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
+ def respond(history, message, modo):
49
+ return chat_responder(history, message, modo)
 
 
50
 
51
+ msg.submit(respond, [chatbot, msg, modo], chatbot)
52
+ clear.click(lambda: [], None, chatbot)
53
 
54
  if __name__ == "__main__":
55
  demo.launch()