riabayonaor commited on
Commit
c0e5641
1 Parent(s): 4bcf66e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -0
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import os
3
+ import random
4
+ import google.generativeai as genai
5
+
6
+ # Obteniendo la API KEY del entorno
7
+ gemini_api_key = os.getenv("GEMINI_API_KEY")
8
+
9
+ # Configuración de la API KEY para el uso de genai
10
+ genai.configure(api_key=gemini_api_key)
11
+
12
+ # Inicialización del modelo
13
+ model = genai.GenerativeModel('gemini-pro')
14
+
15
+ def chat_with_model(user_input):
16
+ response = model.generate_content(user_input)
17
+ return response.text
18
+
19
+ def generar_ecuacion_y_respuestas():
20
+ a = random.randint(1, 10)
21
+ b = random.randint(-10, 10)
22
+ c = random.randint(-10, 10)
23
+ x = (c - b) / a
24
+ respuestas_incorrectas = set()
25
+ while len(respuestas_incorrectas) < 3:
26
+ respuesta_erronea = x + random.choice([-2, -1, 1, 2]) * random.random()
27
+ respuestas_incorrectas.add(round(respuesta_erronea, 2))
28
+ respuestas = list(respuestas_incorrectas) + [round(x, 2)]
29
+ random.shuffle(respuestas)
30
+ ecuacion = f"{a}x + ({b}) = {c}" if b < 0 else f"{a}x + {b} = {c}"
31
+ return ecuacion, respuestas, round(x, 2)
32
+
33
+ def manejar_respuesta(ecuacion, respuesta_elegida, respuesta_correcta):
34
+ resultado = "Fantástico, tienes 10 puntos sube de nivel," if respuesta_elegida == str(respuesta_correcta) else "Incorrecto, sigue practicando,"
35
+ resultado += f" escogiste la respuesta: {respuesta_elegida}"
36
+ explicacion = chat_with_model(f"explica el problema {ecuacion} y por qué la respuesta {respuesta_elegida} es {'correcta' if respuesta_elegida == str(respuesta_correcta) else 'incorrecta'}")
37
+ return resultado + "\n" + explicacion
38
+
39
+ # Configuración de la interfaz de Streamlit
40
+ st.title("Desafío de Matemáticas")
41
+ st.markdown("Intenta resolver la ecuación y selecciona tu respuesta.")
42
+
43
+ if 'ecuacion' not in st.session_state or 'respuestas' not in st.session_state or 'respuesta_correcta' not in st.session_state:
44
+ ecuacion, respuestas, respuesta_correcta = generar_ecuacion_y_respuestas()
45
+ st.session_state.ecuacion = ecuacion
46
+ st.session_state.respuestas = respuestas
47
+ st.session_state.respuesta_correcta = respuesta_correcta
48
+
49
+ st.write(st.session_state.ecuacion)
50
+ respuesta_elegida = st.radio("Elige tu respuesta", [str(respuesta) for respuesta in st.session_state.respuestas])
51
+
52
+ if st.button("Enviar"):
53
+ resultado = manejar_respuesta(st.session_state.ecuacion, respuesta_elegida, st.session_state.respuesta_correcta)
54
+ st.write(resultado)
55
+
56
+ if st.button("Generar Nuevo Problema"):
57
+ ecuacion, respuestas, respuesta_correcta = generar_ecuacion_y_respuestas()
58
+ st.session_state.ecuacion = ecuacion
59
+ st.session_state.respuestas = respuestas
60
+ st.session_state.respuesta_correcta = respuesta_correcta
61
+ st.experimental_rerun()