Agente de IA construido con LangChain v1 que permite hacer preguntas en lenguaje natural sobre los datos de tu Google Sheets. Disponible con interfaz web (Streamlit) o desde la terminal (CLI).
- Consultas en lenguaje natural en español
- Conexión directa a Google Sheets vía API (cuenta de servicio)
- Análisis de datos con pandas — los datos se recargan automáticamente en cada consulta
- Interfaz web con Streamlit (chat, sidebar con estadísticas, preguntas de ejemplo)
- Interfaz CLI con colores y formato para uso en terminal
- Prompt con personalidad de consultor inmobiliario especializado en São Paulo
.
├── app.py # Interfaz web Streamlit (recomendada)
├── main.py # Interfaz CLI (terminal)
├── agent.py # Agente LangChain v1 (init_chat_model + create_agent)
├── sheets_reader.py # Conexión y lectura de Google Sheets
├── tools/
│ ├── __init__.py
│ └── pandas_tool.py # Tool @execute_python para análisis de datos
├── requirements.txt
├── .env # Variables de entorno (NO subir a git)
├── .env.example # Plantilla
└── credentials.json # Credenciales Google (NO subir a git)
- Ve a Google Cloud Console
- Crea un proyecto o usa uno existente
- En el menú lateral, ve a APIs y servicios → Biblioteca
- Busca y habilita Google Sheets API y Google Drive API
- Ve a APIs y servicios → Credenciales
- Haz clic en Crear credenciales → Cuenta de servicio
- Dale un nombre y haz clic en Crear
- En la lista de cuentas de servicio, entra a la que creaste
- Ve a Claves → Agregar clave → Crear clave nueva → JSON
- Descarga el JSON y colócalo en la raíz del proyecto
- Abre el JSON descargado y copia el valor de
"client_email"(algo comonombre@proyecto.iam.gserviceaccount.com) - Abre tu Google Sheet → Compartir → pega ese email → rol Lector
https://docs.google.com/spreadsheets/d/AQUI_ESTA_EL_ID/edit
cp .env.example .envRellena los valores en .env:
OPENAI_API_KEY=sk-...
SPREADSHEET_ID=el-id-de-tu-hoja
SHEET_NAME=Hoja 1
GOOGLE_CREDENTIALS_PATH=credentials.json
OPENAI_MODEL=gpt-4o-miniconda create -n agente-sheets python=3.11 -y
conda activate agente-sheets
pip install -r requirements.txtconda activate agente-sheets
streamlit run app.pySe abre automáticamente en http://localhost:8501
conda activate agente-sheets
python main.py# Usar una hoja específica
python main.py --sheet "Ventas 2024"
# Usar un spreadsheet diferente
python main.py --spreadsheet-id "otro-id-aqui"
# Usar GPT-4o (más potente)
python main.py --model openai:gpt-4o| Comando | Descripción |
|---|---|
/ayuda |
Muestra el menú de ayuda |
/resumen |
Estadísticas generales de la hoja |
/columnas |
Lista todas las columnas disponibles |
/muestra |
Muestra las primeras 5 filas |
/salir |
Termina el programa |
¿Cuál es el departamento más caro?
¿Cuál es el precio promedio de alquiler por distrito?
¿Cuántos departamentos tienen piscina?
¿Cuál es el costo total promedio (alquiler + condominio)?
¿Cuál es el distrito más barato para alquilar?
Muéstrame los 5 departamentos más grandes
¿Cuántos departamentos tienen ascensor y están amueblados?
Pregunta del usuario
↓
Recarga datos frescos desde Google Sheets (cada consulta)
↓
LLM genera código Python basado en el esquema del DataFrame
↓
Tool execute_python ejecuta el código localmente sobre el DataFrame
↓
LLM verbaliza el resultado en español
El LLM nunca ve las filas completas — solo el esquema, una muestra de 3 filas, y el resultado del código ejecutado. Esto hace que el consumo de tokens sea bajo independientemente del tamaño del dataset.
⚠️ Importante: Nunca subascredentials.jsonni.enva Git. Ambos están en.gitignore.