Este proyecto es una aplicación web que permite a los usuarios consultar datos estadísticos complejos mediante lenguaje natural. Utiliza Inteligencia Artificial (Google Gemini) conectada a la inmensa base de datos de Data Commons a través del Model Context Protocol (MCP).
- Consultas en Lenguaje Natural: Pregunta sobre demografía, economía, salud, clima, etc., como si hablaras con un experto.
- Datos Veraces: La IA no "alucina" los datos; los consulta en tiempo real desde Data Commons (agregador de Google con fuentes como Banco Mundial, ONU, Eurostat, etc.).
- Visualización Clara: Las respuestas se presentan con tablas formateadas en Markdown para facilitar la lectura de grandes volúmenes de datos.
- Arquitectura Agéntica: Implementación real de un agente de IA que utiliza herramientas (Function Calling) para investigar antes de responder.
La aplicación sigue una arquitectura moderna de 3 capas:
- Frontend: Interfaz web limpia construida con HTML, CSS y JavaScript.
- Backend (Orquestador): Servidor Python con Flask que gestiona la sesión y el bucle del agente.
- Capa de Datos (MCP): Servidor MCP (
datacommons-mcp) que expone herramientas estandarizadas para consultar el Grafo de Conocimiento.
- El usuario hace una pregunta (ej. "¿Población de España por provincias?").
- El backend envía la pregunta a Gemini 2.0 Flash junto con las definiciones de las herramientas disponibles.
- Gemini razona y decide qué herramientas usar (ej.
get_observations). - El backend ejecuta las herramientas en el servidor MCP y devuelve los resultados a Gemini.
- Gemini procesa los datos y genera una respuesta final para el usuario.
- Python 3.10 o superior.
- Una API Key de Google Gemini (puedes obtenerla en Google AI Studio).
- Git.
-
Clonar el repositorio:
git clone https://github.com/0utKast/DataCommons2.git cd DataCommons2 -
Crear y activar un entorno virtual (recomendado):
python -m venv .venv # En Windows: .venv\Scripts\activate # En macOS/Linux: source .venv/bin/activate
-
Instalar dependencias:
pip install -r requirements.txt
-
Configurar Variables de Entorno: Crea un archivo
.enven la raíz del proyecto (puedes copiar.env.example) y añade tu clave de API:GEMINI_API_KEY=tu_clave_api_aqui
-
Iniciar la aplicación:
python app.py
-
Abrir en el navegador: Visita
http://localhost:5000en tu navegador web. -
Interactuar: Escribe tus preguntas en el chat. Ejemplos:
- "¿Cuál es la esperanza de vida en Japón vs España?"
- "Dime la población de los condados de California."
- "¿Cómo ha evolucionado el PIB de Argentina en los últimos 10 años?"
Este proyecto resuelve varios desafíos de integración interesantes:
- Integración Síncrona/Asíncrona: Puente entre Flask (WSGI) y el cliente MCP (Asyncio).
- Sanitización de Esquemas: Adaptación de esquemas JSON complejos de Data Commons para ser compatibles con la API de Gemini.
- Transporte Stdio: Comunicación segura y rápida entre el servidor web y el servidor MCP mediante tuberías locales.
Este proyecto está bajo la Licencia Apache 2.0. Consulta el archivo LICENSE para más detalles.