jdmorzan commited on
Commit
320bcd6
·
verified ·
1 Parent(s): 84b4f05

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +89 -85
app.py CHANGED
@@ -6,7 +6,7 @@ import openai
6
  from langchain.prompts import PromptTemplate, ChatMessagePromptTemplate
7
  from langchain.chains import LLMChain
8
  from langchain.llms import OpenAI
9
- from langchain_community.document_loaders import Docx2txtLoader
10
  import tempfile
11
 
12
  import gradio as gr
@@ -33,125 +33,129 @@ def read_docx(file_path):
33
  documents = loader.load()
34
  return documents[0].page_content
35
 
 
 
 
 
 
 
36
  # Predefined exam questions
37
  loader = Docx2txtLoader("EXAMEN FINAL_DESARROLLO HUMANO Y SOCIAL.docx")
38
  data = loader.load()
39
- EXAM_QUESTIONS = data
40
 
41
- def process_student_work(docx_file):
42
- # Create a temporary file
43
- with tempfile.NamedTemporaryFile(delete=False, suffix=".docx") as temp_file:
44
- temp_file.write(docx_file)
45
- temp_path = temp_file.name
46
 
47
- try:
48
- # Read the DOCX file
49
- student_work = read_docx(temp_path)
50
-
51
- # Define the template (you can also load this from a file if it's too long)
52
- template = """
53
- A continuación, evalúa el ensayo de un alumno utilizando los siguientes criterios de acuerdo con la rúbrica de evaluación. Para cada sección, asigna un puntaje y proporciona feedback detallado basado en los niveles de logro: Excelente, Bien, Regular, Deficiente, o Malo. Asegúrate de justificar cada puntuación dada y de señalar áreas de mejora. Asume el rol de un docente universitario que analiza con detenimiento y es sumamente estricto y minucioso al calfica, respetando al pie de la letra la rúbrica.
 
 
 
 
54
 
55
- ### Introducción (Máximo: 5 puntos)
56
 
57
- - Excelente (5-4 puntos): Explica con claridad de qué trata el ensayo y cómo se abordará, especificando las partes que lo componen y una pequeña descripción de cada una de ellas.
58
- - Bien (3 puntos): Explica de qué trata el ensayo, especificando las partes que lo componen, pero no brinda descripción de cada una de ellas.
59
- - Regular (2 puntos): Presenta una introducción, pero no se refiere concretamente al ensayo, es decir, al qué y al cómo.
60
- - Deficiente (1 punto): El propósito del ensayo no es claro ni específico.
61
- - Malo (0 puntos): No incluye la introducción.
 
62
 
63
- ### Contenido y Análisis (Máximo: 6 puntos)
64
 
65
- - Excelente (6-5 puntos): Presenta la idea principal del ensayo y desarrolla por lo menos cinco argumentos, notándose un análisis personal y sustentándolos con citas, notas o referencias bibliográficas.
66
- - Bien (4-3 puntos): Presenta la idea principal del ensayo y desarrolla cuatro argumentos sustentándolos con citas, notas o referencias bibliográficas.
67
- - Regular (2 puntos): Presenta la idea principal del ensayo y desarrolla tres argumentos sustentándolos con citas, notas o referencias bibliográficas.
68
- - Deficiente (1 punto): Presenta menos del 50% de los elementos sugeridos en el tema asignado. Hay por lo menos un párrafo que es copiado o igual al de un compañero.
69
- - Malo (0 puntos): No presenta los puntos sugeridos sobre el tema o bien repite textualmente lo de otros o su sustento no tiene una base teórica.
70
 
71
- ### Conclusiones (Máximo: 5 puntos)
72
 
73
- - Excelente (5-4 puntos): Incluye opiniones personales combinadas con argumentos bibliográficos.
74
- - Bien (3 puntos): Solo incluye opiniones personales.
75
- - Regular (2 puntos): Solo incluye un resumen del resto del ensayo.
76
- - Deficiente (1 punto): Es demasiado corta (menor a 3 líneas).
77
- - Malo (0 puntos): No presenta o desarrolla conclusiones.
78
-
79
- Para tener mayor contexto, estos son ejemplos de argumentos y conclusiones con argumentos bibliográficos.
80
 
81
- Durante las últimas décadas el concepto de mercado ha tomado protagonismo en la economía mundial por ello “algunos mercados son lugares físicos donde se reúnen compradores y vendedores, y donde un subastador o un corredor ayudan a determinar los precios” (Parkin, 2018, p. 56).
82
 
83
- En estudios recientes, se ha evidenciado la importancia de la transformación digital en los negocios, ya que “la adopción de nuevas tecnologías ha permitido un crecimiento exponencial en múltiples sectores” (García & López, 2021, p. 78).
84
 
85
- Según la Organización Mundial de la Salud (2021), la pandemia ha generado cambios sustanciales en la forma en que las organizaciones de salud responden a las crisis” (p. 34).
86
 
87
- El cambio climático sigue siendo un tema prioritario en las agendas internacionales, lo cual se refleja en la afirmación de Sánchez (2022): “la sostenibilidad se ha convertido en un pilar clave para el desarrollo empresarial” (p. 22).
88
 
89
- ### Referencias Bibliográficas (Máximo: 4 puntos)
90
 
91
- - Excelente (4 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye cuatro referencias bibliográficas en formato APA.
92
- - Bien (3 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye tres referencias bibliográficas en formato APA.
93
- - Regular (2 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye dos referencias bibliográficas en formato APA.
94
- - Deficiente (1 punto): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye una referencia bibliográfica o más, pero sin formato APA.
95
- - Malo (0 puntos): No incluye referencias bibliográficas.
96
-
97
- Para tener mayor contexto, estos son ejemplos de referencias bibliográficas en formato APA:
98
- 1. Smith, J. (2020). Innovación y negocios (2ª ed.). Editorial Alfa.
99
 
100
- 2. Brown, L. (2019). Estrategias empresariales. En P. Rodríguez (Ed.), Estrategias de mercado (pp. 45-60). Editorial Beta.
 
 
 
 
 
 
 
101
 
102
- 3. García, M. & López, P. (2021). Transformación digital en las empresas. Revista de Innovación, 15(3), 45-60. https://doi.org/10.1234/rdi.2021.0056
103
 
104
- 4. Sánchez, D. (2022, marzo 15). Las nuevas tendencias de la inteligencia artificial. Tecnología Hoy. https://www.tecnologiahoy.com/tendencias2022
105
 
106
- 5. Organización Mundial de la Salud. (2021). Informe sobre salud mundial (Informe No. 123). https://www.who.int/informe2021
107
 
108
- ### A continuación, te presento un ejemplo de cómo debes estructurar la evaluación. muy cuidados al sumar los puntos y otorgar la nota final.
109
 
110
- **Introducción**
111
- Feedback: El alumno explica de manera clara el propósito del ensayo y menciona brevemente las partes que lo componen, pero no profundiza en cómo serán abordadas esas partes en el desarrollo del trabajo.
112
- **Áreas de mejora**: Desarrollar más en profundidad la introducción, explicando claramente el 'cómo' se abordará el análisis.
113
- **Puntuación: 3 puntos (Bien)**.
114
 
115
- **Contenido y Análisis**
116
- Feedback: El alumno desarrolla cuatro argumentos sólidos y los sustenta adecuadamente con citas y referencias. Sin embargo, dos de los argumentos no están completamente alineados con el tema central del ensayo, lo que limita el análisis en profundidad.
117
- **Áreas de mejora**: Profundizar en el análisis crítico de los argumentos y asegurar que todos los argumentos estén alineados con la idea central del ensayo.
118
- **Puntuación: 4 puntos (Bien)**.
119
 
120
- **Conclusiones**
121
- Feedback: Las conclusiones presentadas resumen adecuadamente el contenido del ensayo, pero carecen de opiniones personales o una reflexión crítica. El análisis se limita a repetir puntos ya tratados en el cuerpo del ensayo.
122
- **Áreas de mejora**: Incorporar más opiniones personales y conectar las conclusiones con argumentos o citas bibliográficas para fortalecer la reflexión final.
123
- **Puntuación: 2 puntos (Regular)**.
124
 
125
- **Referencias Bibliográficas**
126
- Feedback: El alumno incluyó tres referencias bibliográficas en formato APA correctamente. Sin embargo, para alcanzar el nivel máximo se requiere una referencia adicional.
127
- **Áreas de mejora**: Añadir al menos una referencia más para cumplir con el criterio de cuatro referencias.
128
- **Puntuación: 3 puntos (Bien)**.
129
 
130
- **Nota final: 12 puntos**
131
-
132
- **Feedback final:**
133
- El alumno ha demostrado un buen nivel de comprensión del tema y ha presentado argumentos sólidos sustentados en citas bibliográficas. Sin embargo, se necesita profundizar en el análisis crítico y mejorar la integración de las conclusiones. En general, el trabajo está bien estructurado y organizado, pero se recomienda reforzar la parte de conclusiones y añadir una referencia adicional para cumplir con los criterios de la rúbrica.
134
- """
135
 
136
-
137
- # Generate feedback
138
- feedback = classify_text_chat(template, student_work, EXAM_QUESTIONS)
139
-
140
- return feedback
141
- finally:
142
- # Clean up the temporary file
143
- os.remove(temp_path)
 
144
 
145
  # Define the Gradio interface
146
  iface = gr.Interface(
147
  fn=process_student_work,
148
  inputs=[
149
- gr.File(label="Subir archivo .docx del alumno (DOCX)", type="binary")
150
  ],
151
  outputs=gr.Textbox(label="Feedback", lines=10),
152
  title="Evaluación - Examen Final Desarrollo Humano y Social",
153
- description="Cargar archivo .docx del alumno (DOCX) para generar feedback automático."
154
  )
155
 
156
- if __name__ == "__main__":
157
- iface.launch()
 
6
  from langchain.prompts import PromptTemplate, ChatMessagePromptTemplate
7
  from langchain.chains import LLMChain
8
  from langchain.llms import OpenAI
9
+ from langchain_community.document_loaders import Docx2txtLoader, PyPDFLoader
10
  import tempfile
11
 
12
  import gradio as gr
 
33
  documents = loader.load()
34
  return documents[0].page_content
35
 
36
+ def read_pdf(file_path):
37
+ loader = PyPDFLoader(file_path)
38
+ documents = loader.load()
39
+ # Join the contents
40
+ return "\n".join([doc.page_content for doc in documents])
41
+
42
  # Predefined exam questions
43
  loader = Docx2txtLoader("EXAMEN FINAL_DESARROLLO HUMANO Y SOCIAL.docx")
44
  data = loader.load()
45
+ EXAM_QUESTIONS = data[0].page_content
46
 
47
+ def process_student_work(uploaded_file):
48
+ # Get the file extension
49
+ ext = os.path.splitext(uploaded_file.name)[1].lower()
 
 
50
 
51
+ # Read the content based on file extension
52
+ if ext == '.docx':
53
+ student_work = read_docx(uploaded_file.name)
54
+ elif ext == '.pdf':
55
+ student_work = read_pdf(uploaded_file.name)
56
+ else:
57
+ return "Formato de archivo no soportado. Por favor suba un archivo .docx o .pdf."
58
+
59
+ # Define the template (you can also load this from a file if it's too long)
60
+ template = """
61
+ A continuación, evalúa el ensayo de un alumno utilizando los siguientes criterios de acuerdo con la rúbrica de evaluación. Para cada sección, asigna un puntaje y proporciona feedback detallado basado en los niveles de logro: Excelente, Bien, Regular, Deficiente, o Malo. Asegúrate de justificar cada puntuación dada y de señalar áreas de mejora. Asume el rol de un docente universitario que analiza con detenimiento y es sumamente estricto y minucioso al calificar, respetando al pie de la letra la rúbrica.
62
 
63
+ ### Introducción (Máximo: 5 puntos)
64
 
65
+ - Excelente (5-4 puntos): Explica con claridad de qué trata el ensayo y cómo se abordará, especificando las partes que lo componen y una pequeña descripción de cada una de ellas.
66
+ - Bien (3 puntos): Explica de qué trata el ensayo, especificando las partes que lo componen, pero no brinda descripción de cada una de ellas.
67
+ - Regular (2 puntos): Presenta una introducción, pero no se refiere concretamente al ensayo, es decir, al qué y al cómo.
68
+ - Deficiente (1 punto): El propósito del ensayo no es claro ni específico.
69
+ - Malo (0 puntos): No incluye la introducción.
70
+
71
 
72
+ ### Contenido y Análisis (Máximo: 6 puntos)
73
 
74
+ - Excelente (6-5 puntos): Presenta la idea principal del ensayo y desarrolla por lo menos cinco argumentos, notándose un análisis personal y sustentándolos con citas, notas o referencias bibliográficas.
75
+ - Bien (4-3 puntos): Presenta la idea principal del ensayo y desarrolla cuatro argumentos sustentándolos con citas, notas o referencias bibliográficas.
76
+ - Regular (2 puntos): Presenta la idea principal del ensayo y desarrolla tres argumentos sustentándolos con citas, notas o referencias bibliográficas.
77
+ - Deficiente (1 punto): Presenta menos del 50% de los elementos sugeridos en el tema asignado. Hay por lo menos un párrafo que es copiado o igual al de un compañero.
78
+ - Malo (0 puntos): No presenta los puntos sugeridos sobre el tema o bien repite textualmente lo de otros o su sustento no tiene una base teórica.
79
 
80
+ ### Conclusiones (Máximo: 5 puntos)
81
 
82
+ - Excelente (5-4 puntos): Incluye opiniones personales combinadas con argumentos bibliográficos.
83
+ - Bien (3 puntos): Solo incluye opiniones personales.
84
+ - Regular (2 puntos): Solo incluye un resumen del resto del ensayo.
85
+ - Deficiente (1 punto): Es demasiado corta (menor a 3 líneas).
86
+ - Malo (0 puntos): No presenta o desarrolla conclusiones.
 
 
87
 
88
+ Para tener mayor contexto, estos son ejemplos de argumentos y conclusiones con argumentos bibliográficos.
89
 
90
+ Durante las últimas décadas el concepto de mercado ha tomado protagonismo en la economía mundial por ello “algunos mercados son lugares físicos donde se reúnen compradores y vendedores, y donde un subastador o un corredor ayudan a determinar los precios” (Parkin, 2018, p. 56).
91
 
92
+ En estudios recientes, se ha evidenciado la importancia de la transformación digital en los negocios, ya que “la adopción de nuevas tecnologías ha permitido un crecimiento exponencial en múltiples sectores” (García & López, 2021, p. 78).
93
 
94
+ Según la Organización Mundial de la Salud (2021), “la pandemia ha generado cambios sustanciales en la forma en que las organizaciones de salud responden a las crisis” (p. 34).
95
 
96
+ El cambio climático sigue siendo un tema prioritario en las agendas internacionales, lo cual se refleja en la afirmación de Sánchez (2022): “la sostenibilidad se ha convertido en un pilar clave para el desarrollo empresarial” (p. 22).
97
 
98
+ ### Referencias Bibliográficas (Máximo: 4 puntos)
 
 
 
 
 
 
 
99
 
100
+ - Excelente (4 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye cuatro referencias bibliográficas en formato APA. Las referencias bibliográficas también se encuentran en el texto.
101
+ - Bien (3 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye tres referencias bibliográficas en formato APA.
102
+ - Regular (2 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye dos referencias bibliográficas en formato APA.
103
+ - Deficiente (1 punto): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye una referencia bibliográfica o más, pero sin formato APA.
104
+ - Malo (0 puntos): No incluye referencias bibliográficas.
105
+
106
+ Para tener mayor contexto, estos son ejemplos de referencias bibliográficas en formato APA:
107
+ 1. Smith, J. (2020). Innovación y negocios (2ª ed.). Editorial Alfa.
108
 
109
+ 2. Brown, L. (2019). Estrategias empresariales. En P. Rodríguez (Ed.), Estrategias de mercado (pp. 45-60). Editorial Beta.
110
 
111
+ 3. García, M. & López, P. (2021). Transformación digital en las empresas. Revista de Innovación, 15(3), 45-60. https://doi.org/10.1234/rdi.2021.0056
112
 
113
+ 4. Sánchez, D. (2022, marzo 15). Las nuevas tendencias de la inteligencia artificial. Tecnología Hoy. https://www.tecnologiahoy.com/tendencias2022
114
 
115
+ 5. Organización Mundial de la Salud. (2021). Informe sobre salud mundial (Informe No. 123). https://www.who.int/informe2021
116
 
117
+ ### A continuación, te presento un ejemplo de cómo debes estructurar la evaluación. Sé muy cuidadoso al sumar los puntos y otorgar la nota final.
 
 
 
118
 
119
+ **Introducción**
120
+ Feedback: El alumno explica de manera clara el propósito del ensayo y menciona brevemente las partes que lo componen, pero no profundiza en cómo serán abordadas esas partes en el desarrollo del trabajo.
121
+ **Áreas de mejora**: Desarrollar más en profundidad la introducción, explicando claramente el 'cómo' se abordará el análisis.
122
+ **Puntuación: 3 puntos (Bien)**.
123
 
124
+ **Contenido y Análisis**
125
+ Feedback: El alumno desarrolla cuatro argumentos sólidos y los sustenta adecuadamente con citas y referencias. Sin embargo, dos de los argumentos no están completamente alineados con el tema central del ensayo, lo que limita el análisis en profundidad.
126
+ **Áreas de mejora**: Profundizar en el análisis crítico de los argumentos y asegurar que todos los argumentos estén alineados con la idea central del ensayo.
127
+ **Puntuación: 4 puntos (Bien)**.
128
 
129
+ **Conclusiones**
130
+ Feedback: Las conclusiones presentadas resumen adecuadamente el contenido del ensayo, pero carecen de opiniones personales o una reflexión crítica. El análisis se limita a repetir puntos ya tratados en el cuerpo del ensayo.
131
+ **Áreas de mejora**: Incorporar más opiniones personales y conectar las conclusiones con argumentos o citas bibliográficas para fortalecer la reflexión final.
132
+ **Puntuación: 2 puntos (Regular)**.
133
 
134
+ **Referencias Bibliográficas**
135
+ Feedback: El alumno incluyó tres referencias bibliográficas en formato APA correctamente. Sin embargo, para alcanzar el nivel máximo se requiere una referencia adicional.
136
+ **Áreas de mejora**: Añadir al menos una referencia más para cumplir con el criterio de cuatro referencias.
137
+ **Puntuación: 3 puntos (Bien)**.
 
138
 
139
+ **Nota final: 12 puntos**
140
+
141
+ **Feedback final:**
142
+ El alumno ha demostrado un buen nivel de comprensión del tema y ha presentado argumentos sólidos sustentados en citas bibliográficas. Sin embargo, se necesita profundizar en el análisis crítico y mejorar la integración de las conclusiones. En general, el trabajo está bien estructurado y organizado, pero se recomienda reforzar la parte de conclusiones y añadir una referencia adicional para cumplir con los criterios de la rúbrica.
143
+ """
144
+
145
+ # Generate feedback
146
+ feedback = classify_text_chat(template, student_work, EXAM_QUESTIONS)
147
+ return feedback
148
 
149
  # Define the Gradio interface
150
  iface = gr.Interface(
151
  fn=process_student_work,
152
  inputs=[
153
+ gr.File(label="Subir archivo del alumno (DOCX o PDF)", type="file", file_types=['.docx', '.pdf'])
154
  ],
155
  outputs=gr.Textbox(label="Feedback", lines=10),
156
  title="Evaluación - Examen Final Desarrollo Humano y Social",
157
+ description="Cargar archivo .docx o .pdf del alumno para generar feedback automático."
158
  )
159
 
160
+ # Launch the interface
161
+ iface.launch()