cesar commited on
Commit
1e129b0
verified
1 Parent(s): f61af4a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -39
app.py CHANGED
@@ -1,5 +1,4 @@
1
-
2
- import gradio as gr
3
  import base64
4
  import vertexai
5
  from vertexai.generative_models import GenerativeModel, Part, SafetySetting
@@ -35,55 +34,64 @@ def configurar_credenciales(json_path):
35
  """Configura las credenciales de Google Cloud usando un archivo JSON."""
36
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = json_path
37
 
38
- def extraer_respuestas(pdf_data):
39
- """Extrae preguntas y respuestas desde un PDF."""
40
- # Procesamiento simulado para simplificar
41
- texto_extraido = base64.b64decode(pdf_data).decode("utf-8", errors="ignore")
42
- preguntas_respuestas = {}
43
- pregunta_actual = None
44
- for linea in texto_extraido.split("\n"):
45
- if "Pregunta" in linea:
46
- pregunta_actual = linea.strip()
47
- preguntas_respuestas[pregunta_actual] = ""
48
- elif "Respuesta" in linea and pregunta_actual:
49
- preguntas_respuestas[pregunta_actual] = linea.split(":")[-1].strip()
50
- return preguntas_respuestas
51
-
52
  def revisar_examen(json_path, pdf_docente, pdf_alumno):
53
- """Compara las respuestas del alumno con las preguntas del docente."""
54
  try:
55
  # Configurar las credenciales
56
- configurar_credenciales(json_path.name)
57
 
58
  # Inicializar Vertex AI
59
  vertexai.init(project="deploygpt", location="us-central1")
60
 
61
- # Leer los PDFs
62
  with open(pdf_docente.name, "rb") as docente_file:
63
  docente_data = docente_file.read()
64
-
65
  with open(pdf_alumno.name, "rb") as alumno_file:
66
  alumno_data = alumno_file.read()
67
 
68
- # Extraer preguntas y respuestas
69
- preguntas_docente = extraer_respuestas(docente_data)
70
- respuestas_alumno = extraer_respuestas(alumno_data)
71
-
72
- # Validar solo preguntas respondidas por el alumno
73
- retroalimentacion = []
74
- for pregunta, respuesta_correcta in preguntas_docente.items():
75
- if pregunta in respuestas_alumno:
76
- respuesta_alumno = respuestas_alumno[pregunta]
77
- retroalimentacion.append(
78
- f"Pregunta: {pregunta}\n"
79
- f"Respuesta del alumno: {respuesta_alumno}\n"
80
- f"Respuesta correcta: {respuesta_correcta}\n"
81
- )
82
- else:
83
- retroalimentacion.append(f"Pregunta: {pregunta}\nNo fue asignada al alumno.\n")
84
-
85
- # Unir retroalimentaci贸n
86
- feedback = "\n".join(retroalimentacion)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  return feedback
88
 
89
  except Exception as e:
@@ -104,3 +112,4 @@ interface = gr.Interface(
104
 
105
  # Lanzar la interfaz
106
  interface.launch(debug=True)
 
 
1
+ import gradio as gr
 
2
  import base64
3
  import vertexai
4
  from vertexai.generative_models import GenerativeModel, Part, SafetySetting
 
34
  """Configura las credenciales de Google Cloud usando un archivo JSON."""
35
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = json_path
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  def revisar_examen(json_path, pdf_docente, pdf_alumno):
38
+ """Funci贸n principal para comparar los PDFs del docente y del alumno."""
39
  try:
40
  # Configurar las credenciales
41
+ configurar_credenciales(json_path)
42
 
43
  # Inicializar Vertex AI
44
  vertexai.init(project="deploygpt", location="us-central1")
45
 
46
+ # Leer los datos de los PDFs desde la ruta proporcionada por Gradio
47
  with open(pdf_docente.name, "rb") as docente_file:
48
  docente_data = docente_file.read()
49
+
50
  with open(pdf_alumno.name, "rb") as alumno_file:
51
  alumno_data = alumno_file.read()
52
 
53
+ # Codificar los datos de los PDFs a base64
54
+ document1 = Part.from_data(
55
+ mime_type="application/pdf",
56
+ data=base64.b64encode(docente_data).decode("utf-8"),
57
+ )
58
+
59
+ document2 = Part.from_data(
60
+ mime_type="application/pdf",
61
+ data=base64.b64encode(alumno_data).decode("utf-8"),
62
+ )
63
+
64
+ # Configuraci贸n del texto de instrucciones
65
+ text1 = """Informaci贸n del examen
66
+ Materia: bioquimica nutricion normal
67
+ Grado/Nivel: universidad
68
+ Tema: Metabolismo de lipidos
69
+ Formato del examen: \\\"Preguntas de desarrollo\\\"
70
+ Instrucciones para el asistente
71
+ Adjunta los archivos PDF:integracion
72
+ PDF del alumno: alumno
73
+ 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.\\\""""
74
+
75
+ textsi_1 = """Rol: Act煤a como un asistente de docente experto en la materia del examen de Bioquimica.
76
+ 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."""
77
+
78
+ # Configurar el modelo
79
+ model = GenerativeModel(
80
+ "gemini-1.5-pro-001", # Cambiar a Gemini-2
81
+ system_instruction=[textsi_1]
82
+ )
83
+
84
+ # Generar la revisi贸n
85
+ response = model.generate_content(
86
+ [document1, document2, text1],
87
+ generation_config=generation_config,
88
+ safety_settings=safety_settings,
89
+ stream=False,
90
+ )
91
+
92
+ # Acceder al texto de la respuesta
93
+ feedback = response.text
94
+
95
  return feedback
96
 
97
  except Exception as e:
 
112
 
113
  # Lanzar la interfaz
114
  interface.launch(debug=True)
115
+