VIOLETA2010 commited on
Commit
b75c0f0
·
verified ·
1 Parent(s): 36532b2

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +101 -0
app.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %writefile app.py
2
+ import os
3
+ import csv
4
+ from datetime import datetime
5
+ import gradio as gr
6
+ import google.generativeai as genai
7
+
8
+ # --- Configuración de la API de Gemini para Hugging Face Spaces ---
9
+ # Asegúrate de añadir GOOGLE_API_KEY como un secreto en tu Space de Hugging Face
10
+ GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')
11
+
12
+ if GOOGLE_API_KEY:
13
+ genai.configure(api_key=GOOGLE_API_KEY)
14
+ gemini_model = genai.GenerativeModel('gemini-pro')
15
+ print("Modelo de Gemini inicializado correctamente.")
16
+ else:
17
+ print("Advertencia: La clave GOOGLE_API_KEY no está configurada. La evaluación de Gemini no estará disponible.")
18
+ gemini_model = None # Para evitar errores si la clave no está presente
19
+
20
+ # Definir el nombre del archivo CSV donde se guardarán los resultados
21
+ ARCHIVO_CSV = "resultados_encuesta.csv"
22
+
23
+ def encuesta_preguntas_de_seguridad(
24
+ p1_respuesta, p2_respuesta, p3_respuesta, p4_respuesta, p5_respuesta,
25
+ p6_respuesta, p7_respuesta, p8_respuesta, p9_respuesta, p10_respuesta
26
+ ):
27
+ puntaje = 0
28
+ if p1_respuesta == "Sí":
29
+ puntaje += 1
30
+ if p2_respuesta == "Sí":
31
+ puntaje += 1
32
+ if p3_respuesta == "Sí":
33
+ puntaje += 1
34
+ if p4_respuesta == "Sí":
35
+ puntaje += 1
36
+ if p5_respuesta == "Sí":
37
+ puntaje += 1
38
+ if p6_respuesta == "Sí":
39
+ puntaje += 1
40
+ if p7_respuesta == "Sí":
41
+ puntaje += 1
42
+ if p8_respuesta == "Sí":
43
+ puntaje += 1
44
+ if p9_respuesta == "Sí":
45
+ puntaje += 1
46
+ if p10_respuesta == "Sí":
47
+ puntaje += 1
48
+
49
+ evaluacion_gemini = "No se pudo generar una evaluación detallada."
50
+ if gemini_model:
51
+ prompt = f"El usuario obtuvo un puntaje de {puntaje} sobre 10 en una encuesta de seguridad digital. Genera una evaluación concisa y personalizada sobre su nivel de seguridad, incluyendo recomendaciones específicas para mejorar, si es necesario. Enfócate en un tono motivador y educativo."
52
+ try:
53
+ response = gemini_model.generate_content(prompt)
54
+ evaluacion_gemini = response.text
55
+ except Exception as e:
56
+ evaluacion_gemini = f"No se pudo generar una evaluación detallada con Gemini (Error: {e})."
57
+
58
+ # Guardado directo en el archivo CSV local de forma anónima
59
+ fecha_actual = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
60
+ with open(ARCHIVO_CSV, mode='a', newline='', encoding='utf-8') as f:
61
+ csv.writer(f).writerow([
62
+ fecha_actual, p1_respuesta, p2_respuesta, p3_respuesta, p4_respuesta, p5_respuesta,
63
+ p6_respuesta, p7_respuesta, p8_respuesta, p9_respuesta, p10_respuesta, f"{puntaje}/10"
64
+ ])
65
+ print(f"\n Guardado en el almacenamiento local ({fecha_actual}). Puntaje: {puntaje}/10")
66
+
67
+ # Lo que ve el usuario en su teléfono
68
+ resultado_final = f"Tu puntuación total es: {puntaje} / 10\n\nEvaluación de Seguridad Digital:\n{evaluacion_gemini}"
69
+ return resultado_final
70
+
71
+ # --- INTERFAZ GRÁFICA WEB ---
72
+ opciones = ["Sí", "No"]
73
+ introduccion_texto = (
74
+ "Escanear un código QR parece algo seguro y cotidiano, pero muchas veces puede llevarnos a sitios falsos o engañosos sin que lo notemos. Esta actividad busca demostrar lo fácil que es caer en un engaño digital y la importancia de verificar antes de escanear cualquier código QR."
75
+ "hola mi nombre es evelyn lorena espinoza olivo de la especialidad de ciberseguridad 2A, el codigo lo creamos para ver que tanto puedes confiar en engaños o escanear codigos QR sin saber que es lo que puede llegar a contener"
76
+ )
77
+
78
+ interfaz = gr.Interface(
79
+ fn=encuesta_preguntas_de_seguridad,
80
+ inputs=[
81
+ gr.Radio(opciones, label="1. Uso de contraseñas seguras y diferentes en cada cuenta o correo:"),
82
+ gr.Radio(opciones, label="2. Tengo activada la verificación en dos pasos:"),
83
+ gr.Radio(opciones, label="3. Reviso los permisos de las aplicaciones antes instaladas:"),
84
+ gr.Radio(opciones, label="4. Configuro adecuadamente la privacidad en mis redes sociales:"),
85
+ gr.Radio(opciones, label="5. Realizo respaldos periódicos de información importante: "),
86
+ gr.Radio(opciones, label="6. Actualizo mis contraseñas de manera regular, al menos cada 6 meses: "),
87
+ gr.Radio(opciones, label="7. Evito conectarme a redes wifi públicas para acceder a bancos en línea y operaciones financieras sencillas: "),
88
+ gr.Radio(opciones, label="8. Mantengo mi sistema operativo y aplicaciones actualizadas:"),
89
+ gr.Radio(opciones, label="9. No comparto información personal sensible (INE, dirección, ubicación) en sitios no confiables: "),
90
+ gr.Radio(opciones, label="10. Uso antivirus y herramientas de seguridad en mis dispositivos:")
91
+ ],
92
+ outputs=gr.Textbox(label="Resultado de tu Evaluación:"),
93
+ title="Encuesta de Seguridad Informática",
94
+ description=introduccion_texto
95
+ )
96
+
97
+ # --- LANZAMIENTO DEL INTERFAZ DE GRADIO ---
98
+ # En Hugging Face Spaces, no necesitas especificar 'share=True',
99
+ # ya que la URL pública se gestiona automáticamente.
100
+ # Esta línea iniciará la aplicación Gradio cuando el script se ejecute.
101
+ interfaz.launch(server_name="0.0.0.0", server_port=0)