cesar commited on
Commit
7cba34a
verified
1 Parent(s): e4d720d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +103 -0
app.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import base64
3
+ import vertexai
4
+ from vertexai.generative_models import GenerativeModel, Part, SafetySetting
5
+
6
+ # Configuraci贸n del modelo y par谩metros globales
7
+ vertexai.init(project="deploygpt", location="us-central1")
8
+
9
+ generation_config = {
10
+ "max_output_tokens": 8192,
11
+ "temperature": 0,
12
+ "top_p": 0.95,
13
+ }
14
+
15
+ safety_settings = [
16
+ SafetySetting(
17
+ category=SafetySetting.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
18
+ threshold=SafetySetting.HarmBlockThreshold.OFF
19
+ ),
20
+ SafetySetting(
21
+ category=SafetySetting.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
22
+ threshold=SafetySetting.HarmBlockThreshold.OFF
23
+ ),
24
+ SafetySetting(
25
+ category=SafetySetting.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
26
+ threshold=SafetySetting.HarmBlockThreshold.OFF
27
+ ),
28
+ SafetySetting(
29
+ category=SafetySetting.HarmCategory.HARM_CATEGORY_HARASSMENT,
30
+ threshold=SafetySetting.HarmBlockThreshold.OFF
31
+ ),
32
+ ]
33
+
34
+ def revisar_examen(pdf_docente, pdf_alumno):
35
+ """Funci贸n principal para comparar los PDFs del docente y del alumno."""
36
+ try:
37
+ # Leer los datos de los PDFs cargados
38
+ docente_data = pdf_docente.read()
39
+ alumno_data = pdf_alumno.read()
40
+
41
+ # Codificar los datos de los PDFs a base64
42
+ document1 = Part.from_data(
43
+ mime_type="application/pdf",
44
+ data=base64.b64encode(docente_data).decode("utf-8"),
45
+ )
46
+
47
+ document2 = Part.from_data(
48
+ mime_type="application/pdf",
49
+ data=base64.b64encode(alumno_data).decode("utf-8"),
50
+ )
51
+
52
+ # Configuraci贸n del texto de instrucciones
53
+ text1 = """Informaci贸n del examen
54
+ Materia: bioquimica nutricion normal
55
+ Grado/Nivel: universidad
56
+ Tema: Metabolismo de lipidos
57
+ Formato del examen: \"Preguntas de desarrollo\"
58
+ Instrucciones para el asistente
59
+ Adjunta los archivos PDF:integracion
60
+ PDF del alumno: alumno
61
+ Solicita la revisi贸n: \"Por favor, compara las respuestas del alumno en el PDF adjunto con las preguntas y respuestas del PDF del docente. Eval煤a cada respuesta como 'Correcta', 'Incorrecta', 'Incompleta' o 'Vac铆a'. Considera que el alumno solo respondi贸 a un subconjunto de las preguntas del examen. Para cada pregunta, indica si fue 'Asignada' o 'No asignada' al alumno. Proporciona retroalimentaci贸n detallada para cada respuesta de las preguntas asignadas, incluyendo la explicaci贸n de errores, la respuesta correcta (del PDF del docente) y sugerencias de temas para reforzar. Al final, ofrece una retroalimentaci贸n general sobre el desempe帽o del alumno y calcula el porcentaje de precisi贸n, bas谩ndote solo en las preguntas que le fueron asignadas.\""""""
62
+
63
+ textsi_1 = """Rol: Act煤a como un asistente de docente experto en la materia del examen de Bioquimica.
64
+ Objetivo: Tu tarea principal es analizar las respuestas del alumno a las preguntas del examen, compar谩ndolas con la clave de respuestas y criterios de evaluaci贸n proporcionados en el PDF del docente. Debes identificar las respuestas correctas, incorrectas, incompletas y vac铆as, tomando en cuenta que el alumno pudo haber recibido un subconjunto aleatorio de las preguntas del examen. Proporciona retroalimentaci贸n detallada sobre los errores, 谩reas de mejora y temas que el alumno necesita reforzar. Adem谩s, debes calcular y mostrar el porcentaje de precisi贸n del alumno en el examen, considerando solo las preguntas que le fueron asignadas."""
65
+
66
+ # Configurar el modelo
67
+ model = GenerativeModel(
68
+ "gemini-1.5-pro-001",
69
+ system_instruction=[textsi_1]
70
+ )
71
+
72
+ # Generar la revisi贸n
73
+ responses = model.generate_content(
74
+ [document1, document2, text1],
75
+ generation_config=generation_config,
76
+ safety_settings=safety_settings,
77
+ stream=False,
78
+ )
79
+
80
+ # Concatenar las respuestas del modelo
81
+ feedback = ""
82
+ for response in responses:
83
+ feedback += response.text
84
+
85
+ return feedback
86
+
87
+ except Exception as e:
88
+ return f"Error al procesar: {str(e)}"
89
+
90
+ # Crear la interfaz con Gradio
91
+ interface = gr.Interface(
92
+ fn=revisar_examen,
93
+ inputs=[
94
+ gr.File(label="PDF del Docente (Preguntas y Respuestas)"),
95
+ gr.File(label="PDF del Alumno (Respuestas)")
96
+ ],
97
+ outputs=gr.Textbox(label="Retroalimentaci贸n del Examen"),
98
+ title="Revisi贸n Autom谩tica de Ex谩menes",
99
+ description="Sube el PDF del docente y el PDF del alumno para recibir una evaluaci贸n detallada."
100
+ )
101
+
102
+ # Lanzar la interfaz
103
+ interface.launch(debug=True)