loading…
Search for a command to run...
loading…
A conversational copilot that guides users through the Knowledge Discovery in Databases (KDD) process to perform automated data profiling, analysis, and modelin
A conversational copilot that guides users through the Knowledge Discovery in Databases (KDD) process to perform automated data profiling, analysis, and modeling via natural language. It enables the creation of interactive dashboards and manages the end-to-end analytical workflow within a secure sandbox environment.
Sistema conversacional que acompaña al usuario durante todo el proceso de Descubrimiento de Conocimiento en Datos (KDD). Funciona como un copiloto analítico, facilitador metodológico y orquestador del workflow que guía al usuario mediante lenguaje natural, ejecuta análisis de forma automática y culmina con la generación autónoma de un dashboard interactivo que sintetiza resultados, insights y modelos.
El objetivo final arquitectónico de la aplicación transciende su interfaz web (Streamlit). Una vez que el ciclo KDD esté totalmente operativo y el motor de agentes sea infalible, se creará una versión independiente exponiendo el sistema íntegramente como un servicio MCP.
Esto significa que el proyecto actuará como un "Agente KDD Universal" conectable a cualquier ecosistema de IA corporativo o cliente compatible (como Claude Desktop o Cursor), permitiéndoles usar a nuestro experto en datos como si fuera una simple función o comando a la que delegarle la ingesta, análisis y creación de modelos de Machine Learning dentro del Sandbox aislado, devolviendo los insights y artefactos extraídos al agente principal.
El corazón conversacional de la aplicación funciona como una máquina de estados orquestada por LangGraph. A diferencia de un chatbot tradicional lineal, el sistema actúa como un grupo de agentes especialistas organizados por un Router:
1_understanding, 4_eda, etc.) y decide a qué agente experto enviarle el flujo.Para el desarrollo es imprescindible que exista un archivo src/.env configurado que contenga al menos las API keys de los LLM predeterminados (Ej: OPENAI_API_KEY, MISTRAL_API_KEY, etc), que la aplicación se encargará de cargar en tiempo de inicialización.
El valor principal del sistema no radica únicamente en el dashboard final, sino en el proceso guiado. Al actuar como un analista senior, el sistema:
Para reproducir este sistema en local, se recomienda el uso de pyenv para preservar la pureza del entorno de desarrollo.
pyenv)# 1. Configurar la versión correcta de Python
pyenv local 3.12.3
# 2. Crear entorno virtual
python -m venv .venv
source .venv/bin/activate
# 3. Instalar librerías
pip install -r requirements.txt
Es imprescindible crear un archivo src/.env y, opcionalmente, .env en la raíz del proyecto para definir las claves base de los LLM que alimentan LangGraph. Un ejemplo del archivo (o su plantilla .env.example si existe) sería:
OPENAI_API_KEY=sk-....
MISTRAL_API_KEY=your_key_here
El sistema utiliza una arquitectura bi-modal manual para depuración. Se requieren dos terminales abiertas:
Terminal 1: Iniciar el Motor Inteligente KDD (FastAPI) Conserva el contexto, la memoria SQLite de las sesiones, y el enrutamiento LangGraph.
source .venv/bin/activate
uvicorn src.main:app --host 127.0.0.1 --port 8000 --reload
Terminal 2: Iniciar la Interfaz de Usuario Experto (Streamlit) Levanta la SPA que interactúa con el backend consumiendo los endpoints REST.
source .venv/bin/activate
streamlit run src/ui/app.py
Accede posteriormente por navegador web a http://localhost:8501.
Objetivo: Crear el "esqueleto" donde todo podrá ejecutarse. Qué se construyó: Backend FastAPI async, contrato inicial de servers MCP, Docker sandbox para ejecución analítica aislada y logging estandarizado.
Objetivo: Que el sistema entienda conversaciones y mantenga contexto analítico. Qué se construyó: Grafo maestro de LangGraph, Memoria de sesión y Estado Global KDD.
Objetivo: Que el sistema entienda datasets automáticamente. Capacidades: Upload CSV, Perfilado automático, Identificación de tipos, Evaluación de calidad, Resumen interpretado. Resultado: Dataset contextualizado.
Objetivo: Permitir al experto interactuar con el flujo sin usar la terminal. Qué se implementa: Cliente Streamlit asíncrono, renderizado the componentes HTML (Reportes YData) y subida de archivos al Sandbox.
Objetivo: Que el sistema actúe como facilitador metodológico con memoria persistente. Qué se implementa:
Objetivo: EDA profundo generado dinámicamente. Capacidades: Estadística descriptiva a demanda, Correlaciones avanzadas, Outliers dinámicos por el Sandbox.
Objetivo: Construir un pipeline reproducible y centralizado de artefactos. Qué incluye:
Estructura del Estado de Artefactos:
class KDDArtifact(TypedDict):
nombre_artefacto: str
breve_descripcion: str
s3_path: str # Ej: s3://kdd-artifacts/session_123/eda/correlaciones.png
fase_generacion: str # Ej: '4_eda', '5_modelado'
tipo: str # Ej: 'plot', 'dataset_limpio', 'model_pkl'
Mecánica: El Sandbox o el Agente sube el archivo a MinIO y añade un objeto KDDArtifact a la lista state["artifacts"]. Cuando se genere el Dashboard final, el LLM tendrá a su disposición el inventario completo, su descripción y su ruta directa para ensamblar interactividad.
Objetivo: Extraer conocimiento y baseline predictors.
Objetivo: Convertir análisis en narrativa coherente a los usuarios del KDD.
Objetivo: Permitir iteración. Capacidades: Modificar paneles vía chat, Añadir gráficos de Plotly u otras librerías.
Objetivo: Seguridad, logging, auditoria y alternativas LangChain.
Objetivo: Convertir el motor analítico en un "Agente Especialista" conectable (enchufable) a otros sistemas, proyectos y herramientas LLM (Claude Desktop, Cursor, etc.). Qué se implementa:
AsyncSqliteSaver nativo de LangGraph para ruteo asíncrono y reordenación del flujo para IA Proactiva post-perfilado. Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"kdd-conversacional-mcpdataanalysis": {
"command": "npx",
"args": []
}
}
}