jdmorzan's picture
Update app.py
115671c verified
import pandas as pd
import os
import json
import openai
from langchain.prompts import PromptTemplate, ChatMessagePromptTemplate
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain_community.document_loaders import Docx2txtLoader, PyPDFLoader
import tempfile
from langsmith import traceable
import gradio as gr
from openai import OpenAI
client = OpenAI()
@traceable
def classify_text_chat(template, work, exam):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": template},
{"role": "user", "content": f"Estas son las indicaciones del examen: {exam} ."},
{"role": "user", "content": f"Este ese el trabajo del alumno: {work}"}
],
max_tokens=1000,
temperature=0)
choices = response.choices[0]
text = choices.message.content
return text
def read_docx(file_path):
loader = Docx2txtLoader(file_path)
documents = loader.load()
return documents[0].page_content
def read_pdf(file_path):
loader = PyPDFLoader(file_path)
documents = loader.load()
# Join the contents
return "\n".join([doc.page_content for doc in documents])
# Predefined exam questions
loader = Docx2txtLoader("EXAMEN FINAL_DESARROLLO HUMANO Y SOCIAL.docx")
data = loader.load()
EXAM_QUESTIONS = data[0].page_content
def process_student_work(uploaded_file):
# Get the file extension
ext = os.path.splitext(uploaded_file.name)[1].lower()
# Read the content based on file extension
if ext == '.docx':
student_work = read_docx(uploaded_file.name)
elif ext == '.pdf':
student_work = read_pdf(uploaded_file.name)
else:
return "Formato de archivo no soportado. Por favor suba un archivo .docx o .pdf."
# Define the template (you can also load this from a file if it's too long)
template = """
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.
### Introducción (Máximo: 5 puntos)
- 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.
- 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.
- Regular (2 puntos): Presenta una introducción, pero no se refiere concretamente al ensayo, es decir, al qué y al cómo.
- Deficiente (1 punto): El propósito del ensayo no es claro ni específico.
- Malo (0 puntos): No incluye la introducción.
### Contenido y Análisis (Máximo: 6 puntos)
- 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.
- Bien (4-3 puntos): Presenta la idea principal del ensayo y desarrolla cuatro argumentos sustentándolos con citas, notas o referencias bibliográficas.
- Regular (2 puntos): Presenta la idea principal del ensayo y desarrolla tres argumentos sustentándolos con citas, notas o referencias bibliográficas.
- 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.
- 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.
### Conclusiones (Máximo: 5 puntos)
- Excelente (5-4 puntos): Incluye opiniones personales combinadas con argumentos bibliográficos.
- Bien (3 puntos): Solo incluye opiniones personales.
- Regular (2 puntos): Solo incluye un resumen del resto del ensayo.
- Deficiente (1 punto): Es demasiado corta (menor a 3 líneas).
- Malo (0 puntos): No presenta o desarrolla conclusiones.
Para tener mayor contexto, estos son ejemplos de argumentos y conclusiones con argumentos bibliográficos.
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).
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).
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).
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).
### Referencias Bibliográficas (Máximo: 4 puntos)
- 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.
- Bien (3 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye tres referencias bibliográficas en formato APA.
- Regular (2 puntos): Incluye una sección de referencias bibliográficas al finalizar el documento e incluye dos referencias bibliográficas en formato APA.
- 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.
- Malo (0 puntos): No incluye referencias bibliográficas.
Para tener mayor contexto, estos son ejemplos de referencias bibliográficas en formato APA:
1. Smith, J. (2020). Innovación y negocios (2ª ed.). Editorial Alfa.
2. Brown, L. (2019). Estrategias empresariales. En P. Rodríguez (Ed.), Estrategias de mercado (pp. 45-60). Editorial Beta.
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
4. Sánchez, D. (2022, marzo 15). Las nuevas tendencias de la inteligencia artificial. Tecnología Hoy. https://www.tecnologiahoy.com/tendencias2022
5. Organización Mundial de la Salud. (2021). Informe sobre salud mundial (Informe No. 123). https://www.who.int/informe2021
### 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.
**Introducción**
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.
**Áreas de mejora**: Desarrollar más en profundidad la introducción, explicando claramente el 'cómo' se abordará el análisis.
**Puntuación: 3 puntos (Bien)**.
**Contenido y Análisis**
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.
**Á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.
**Puntuación: 4 puntos (Bien)**.
**Conclusiones**
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.
**Áreas de mejora**: Incorporar más opiniones personales y conectar las conclusiones con argumentos o citas bibliográficas para fortalecer la reflexión final.
**Puntuación: 2 puntos (Regular)**.
**Referencias Bibliográficas**
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.
**Áreas de mejora**: Añadir al menos una referencia más para cumplir con el criterio de cuatro referencias.
**Puntuación: 3 puntos (Bien)**.
**Nota final: 12 puntos**
**Feedback final:**
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.
"""
# Generate feedback
feedback = classify_text_chat(template, student_work, EXAM_QUESTIONS)
return feedback
# Define the Gradio interface
iface = gr.Interface(
fn=process_student_work,
inputs=[
gr.File(label="Subir archivo del alumno (DOCX o PDF)", type="filepath", file_types=['.docx', '.pdf'])
],
outputs=gr.Textbox(label="Feedback", lines=10),
title="Evaluación - Examen Final Desarrollo Humano y Social",
description="Cargar archivo .docx o .pdf del alumno para generar feedback automático."
)
# Launch the interface
iface.launch()