Este repositorio contiene una aplicación de Chatbot Académico diseñada como instrumento de recolección de datos para investigaciones en educación superior. El sistema está optimizado para estudiar la alfabetización en IA, la técnica Chain of Thought (CoT) y la carga cognitiva en estudiantes de ciencias de la salud.
La app permite a los grupos de estudiantes interactuar con un asistente experto en temas específicos (ej. Distribución Normal). A diferencia de un chat convencional, este sistema registra cada interacción, mensaje y retroalimentación en una base de datos Supabase para su posterior análisis estadístico en R.
- ¿Cómo influye el razonamiento paso a paso en la precisión de la resolución de problemas?
- Medición de la exigencia mental mediante el cruce de logs con instrumentos externos.
- Seguimiento de la tasa de intentos de fraude y de la adopción real de la herramienta.
- Configuración por Sesión: Ingreso de NRC, ID de Grupo e Integrantes.
- Definición de Tema: El asistente adapta su comportamiento según el tema indicado por los estudiantes.
- Asistente Híbrido (RAG Opcional): Motor de búsqueda que utiliza los materiales del curso (PDF) solo si el usuario decide subirlos.
- Soporte LaTeX Avanzado: Renderización de fórmulas estadísticas complejas mediante los delimitadores
$y$$. - Sistema de Feedback Persistente: Botones de "pulgar arriba/abajo" vinculados a cada mensaje, que mantienen su estado y permiten actualizar la base de datos.
- UX Anti-Ansiedad: Indicadores visuales de carga (spinners) mientras la IA procesa respuestas complejas.
streamlit>=1.33.0
pandas
openai
langchain
langchain-community
langchain-openai
faiss-cpu
supabase
pypdf
Es necesario configurar las siguientes variables de entorno:
OPENAI_API_KEY = "tu_clave_api"
SUPABASE_URL = "[https://tu-proyecto.supabase.co](https://tu-proyecto.supabase.co)"
SUPABASE_KEY = "tu-clave-anon-public"Para habilitar el registro, ejecuta este script en el SQL Editor de tu proyecto de Supabase:
create table interacciones_investigacion (
id bigint generated by default as identity primary key,
session_id text,
nrc text,
grupo text,
tema text,
estudiante text,
mensaje_usuario text,
respuesta_ia text,
usa_rag boolean,
feedback text,
timestamp timestamptz default now()
);Para realizar el análisis de datos, conéctate al Connection Pooler de Supabase utilizando el puerto 6543:
library(DBI)
library(RPostgres)
con <- dbConnect(
RPostgres::Postgres(),
dbname = "postgres",
host = "aws-1-us-east-1.pooler.supabase.com",
port = 6543,
user = "postgres.[ID_DE_TU_PROYECTO]",
password = "TU_PASSWORD_DE_DB",
sslmode = "require"
)
# Carga de datos para análisis
df_logs <- dbGetQuery(con, "SELECT * FROM interacciones_investigacion")