Spaces:
Sleeping
Sleeping
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() | |
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() |