Domina cómo conectar un agente de IA en N8N a Postgres para ejecutar consultas con lenguaje natural y validar resultados con SQL. En pocos pasos, configurarás el chat público, enlazarás el AI Agent con OpenAI, elegirás la herramienta correcta de Postgres y obtendrás respuestas comprobables como el empleado con mayor antigüedad o el departamento con más integrantes.
¿Cómo configurar N8N con un agente de IA para Postgres?
La clave es armar un flujo simple pero preciso. Se inicia con un trigger del chat por defecto de N8N y se habilita la opción Make chat public available para poder preguntar de forma pública. Luego se añade el agente por defecto, AI Agent, y se conecta con el “cerebro” de OpenAI. Después, se incorpora un prompt que indica: consultar en Postgres lo que se pregunte por chat y devolver el resultado. Se guarda y se agrega la herramienta de base de datos correcta.
Usa Postgres Tool, no Postgres PG Vector Store. La primera es vectorial para contexto; aquí necesitamos consultas SQL directas.
Conecta OpenAI y el AI Agent. Mantén la configuración por defecto si las entradas vienen del chat.
Agrega un prompt claro. La instrucción es consultar en Postgres según la pregunta y entregar el resultado.
¿Qué herramienta Postgres debes elegir?
Para consultas SQL normales se selecciona la opción Postgres Tool. Evita Postgres PG Vector Store, ya que es una base vectorial para almacenar trozos de texto y dar contexto, no para ejecutar queries transaccionales.
¿Cómo definir credenciales y operación select?
Se crean credenciales nuevas: host (expuesto con Ngrok), base de datos, usuario “admin”, password “admin123” (solo para pruebas), y port 10404 en lugar del 5432 por defecto. Se guarda, se renombra (por ejemplo: “base de datos empleados”) y se vuelve al nodo. En la operación, se elige Select: no insertar, borrar ni actualizar.
Operación:Select para lectura de datos.
Schema: por defecto, “public” (según el entorno).
Tabla: puedes fijar una o dejar que el agente elija según la pregunta.
Activa el flujo para probar el chat público: abre la URL y verifica que funcione. También puedes usar el chat de prueba dentro de N8N para ver cada interacción con la herramienta y entender cómo “piensa” el agente.
¿Cómo hacer preguntas en lenguaje natural y verificar con SQL?
El flujo permite preguntar en español y que el agente construya las queries correctas en Postgres. Verás cada consulta ejecutada, lo que facilita auditar y aprender del proceso. Luego, puedes validar manualmente en la interfaz de la base de datos.
¿Qué ejemplo muestra el empleado con más antigüedad?
Se pregunta: “¿cuál es el empleado que más tiempo lleva en la empresa?”. El agente responde: Javier Díaz, contable senior, ingresó el 22 de abril de 2017. Para verificar, se corre una consulta equivalente que ordena por la fecha de ingreso y trae el más antiguo:
-- Empleado con mayor antigüedadSELECT*FROM empleados
ORDERBY fecha_ingreso ASCLIMIT1;
¿Cómo encontrar el departamento con más empleados?
Se consulta: “¿cuál es el departamento con más empleados?”. El agente ejecuta varias queries (uniendo departamentos y empleados) y responde: ingeniería tiene 3 personas. Puedes contrastarlo con una unión y conteo por departamento:
-- Departamento con más empleadosSELECT d.nombre AS departamento,COUNT(e.id)AS total
FROM departamentos d
JOIN empleados e ON e.departamento_id = d.id
GROUPBY d.nombre
ORDERBY total DESCLIMIT1;
Transparencia: N8N muestra cada query ejecutada por el agente.
Confianza: valida en la interfaz gráfica copiando y ejecutando la consulta.
Rapidez: del lenguaje natural a SQL en segundos.
¿Qué habilidades y conceptos clave aparecen y por qué importan?
Comprender estos elementos asegura flujos robustos y confiables.
Configuración del chat público: habilitar Make chat public available para recibir preguntas externas.
Agente de IA y prompt eficaz: instrucción clara para consultar Postgres y devolver resultados precisos.
Conexión con OpenAI: enlazar el nodo del agente al “cerebro” para interpretar lenguaje natural.
Elección de herramienta: usar Postgres Tool para SQL; no confundir con Postgres PG Vector Store.
Buenas prácticas de seguridad: la password de ejemplo no es segura; se usa solo para testeo.
Operación de solo lectura:Select para evitar insertar, borrar o actualizar por error.
Schema y tablas: “public” por defecto; opción de dejar que el agente detecte tablas necesarias.
Uniones entre tablas: combinar “departamentos” y “empleados” para métricas como conteos.
Observabilidad del flujo: ver cada query ayuda a auditar y a aprender del comportamiento del agente.
Lenguaje natural a SQL: preguntas como “empleado más longevo” o “departamento con más empleados” resueltas al instante.
¿Quieres que prepare ejemplos adicionales de prompts o queries para tus propios esquemas de empleados y departamentos? Cuéntame tus tablas y campos y lo armamos juntos.
Ya antes habia explorado esta posibilidad y me conecte a una base de datos de MySQL el prompt que utilice el siguiente por si a alguien le sirve:
🤝 System Prompt — Agente SQL Seguro y Amigable
**Rol:**
Eres un asistente **amable, paciente y práctico** que ayuda a explorar una base de datos.
Tu objetivo es responder preguntas en un lenguaje claro y sencillo, **sin usar tecnicismos innecesarios**, y devolviendo información útil de manera fácil de entender.
Nunca modifiques la base de datos ni muestres datos sensibles directamente.
---
🌟 Estilo de comunicación
- Explica las cosas con palabras simples, como si hablaras con un colega no técnico.
- Sé **cordial y servicial**, evitando tecnicismos pesados.
- Indica siempre qué información encontraste y cómo la limitaste para no abrumar.
- Si algo no se puede mostrar (por seguridad o privacidad), dilo de manera amable y sugiere una alternativa.
---
## 🔒 Reglas de seguridad
1. **Solo consultas de lectura:** Únicamente se permite usar `SELECT`.
🚫 Nunca uses comandos que alteren datos (`INSERT`, `UPDATE`, `DELETE`, `DROP`, `ALTER`, etc.).
2. **Resultados limitados:**
- Máximo **50 filas** por consulta.
- Si la información es muy grande, muestra primero un **conteo** y explica cómo filtrar.
3. **Fechas por defecto:**
- Para registros detallados: últimos **90 días** si no se especifica rango.
- Para resúmenes: últimos **6 meses** si no se indica rango.
---
## 📑 Cómo responder
1. **Explicación sencilla:** Indica qué información usarás y por qué.
2. **Consulta SQL (solo lectura):** Muestra el SQL usado, con parámetros comprensibles.
3. **Explicación amigable:** Resume el resultado en lenguaje natural, destacando lo importante.
4. **Opciones de refinamiento:** Sugiere al usuario cómo filtrar más (ejemplo: por país, período o categoría).
---
## 🛡️ Reglas adicionales
- Los resultados deben enmascarar o abreviar identificadores sensibles (como nombres o IDs).
- Si alguien pide información restringida (RFCs, direcciones exactas, etc.), responde con cortesía que **no es posible por seguridad**, y ofrece un resumen alternativo.
---
🚦 Ejemplos de consultas
A) Cantidad de registros en los últimos 90 días
SELECT COUNT(*) AS total_registros
FROM records
WHERE fecha BETWEEN :desde AND :hasta;
B) Principales clientes/usuarios por valor
SELECT
CONCAT(LEFT(nombre_cliente,3),'***') AS cliente,
SUM(valor_usd) AS total_usd,
COUNT(*) AS registros
FROM records
WHERE fecha BETWEEN :desde AND :hasta
GROUP BY cliente
ORDER BY total_usd DESC
LIMIT 50;
C) Proveedores más frecuentes de un cliente
SELECT
CONCAT(LEFT(nombre_proveedor,5),'***') AS proveedor,
SUM(valor_usd) AS total_usd,
COUNT(*) AS registros
FROM records
WHERE nombre_cliente LIKE :cliente
AND fecha BETWEEN :desde AND :hasta
GROUP BY proveedor
ORDER BY total_usd DESC
LIMIT 50;
D) Categoría o punto de procesamiento más usado
SELECT categoria, COUNT(*) AS registros
FROM records
WHERE fecha BETWEEN :desde AND :hasta
GROUP BY categoria
ORDER BY registros DESC
LIMIT 50;
uff que buen prompt!! Gracias por el aporte
Es más seguro crear una cuenta con acceso de solo lectura en lugar de pedirle que no modifique datos.
deberia hacerse una clase adicional, dond expliquen bien como es el funcionamiento de las tools del agente IA. Ya que se pueden conectar varias, saber como y de que manera hace uso de una herramienta primero, luego de otra. Etc.
Creo que todo depende del prompt del agente, pero no queda claro, si por favor pueden explicar el funcionamiento del apartado de tools seria ideal
Intente, hacer lo mismo para mysql, logré la conexion pero nunca pude lograr que el agente hiciera un buen SQL. es tontisimo.
x2.
Para quien no haya podido crear la base de datos postgres en local se puede usar supabase que también tiene base de datos en postgres.
De la única manera que me funciono en Supabase fue que al momento de darle en Connect, me dirigí a Method y le di Transaccion Pooler, copie y pegue la información y se conecto con éxito.
Hola, yo me pude conectar usando PSQL, en el string que nos brinda esta el host , la base de datos, el usuario y el puerto, ademas hay que activar la casilla SSL ignore
Yo creé una vpn 'tailscale' entre mi servidor donde tengo la base de datos y mi vps de n8n. Ya tengo acceso a la información pero no sé usar aún las tools de sql adecuadamente para que me arrojen resultados pertinentes. Profundizaré es su uso y les cuento. De todas formas me parece muy potente poder hablar con la base de datos.
No entiendo cómo el agente puede entender qué tablas tiene y cuales son su estructura de datos.
La misma herramienta le da esa información? es decir que no debo darle esa información específica?
Si estoy usando supabase, en qué casos me conviene más usar la tool postgreSQL y en qué casos tool supabase?
La herramienta de PostgreSQL en n8n automáticamente consulta y detecta las tablas y su estructura, mostrándolas en menús desplegables cuando configuras el nodo. Así, no necesitas escribir una query manual para saber qué tablas tienes ni su esquema, ya que la herramienta se encarga de obtener esa información por ti.
- El chat publico de n8n permite hacer preguntas en lenguaje natural que el agente convierte en consultas SQL validas.- El AI Agent recibe el contexto del esquema de la base de datos en el prompt para generar SQL correcto.- Los resultados de las consultas SQL se devuelven como respuesta legible para el usuario en el chat.- Se puede validar el SQL generado comparando los resultados contra consultas manuales directas en la base de datos.
VS Code tiene una herramienta nativa para exponer puertos a internet, no es necesario utilizar NGROK
¡No hombre! Pero claro que esto soluciona muchos temas, sobre todo de empleados que siempre le preguntan a uno porque no saben consultar las bases de datos. Uff, esto tiene mucho uso en empresas.
buenas disculpen he tratado de conetarme a postgress es posible hacerlo con pinecone ?postgress no me conecta
Creo que tu problema es que no tienes expuesto tu postgres hacia internet, en el vídeo el profesor usa una herramienta llamada ngrok para exponer el postgres que está corriendo en la máquina de él.
"ngrok es una plataforma de red en la nube que crea túneles seguros desde internet a tu máquina local, permitiendo exponer servidores locales (como sitios web o APIs en desarrollo) a la red pública instantáneamente. Funciona sin configurar routers ni firewalls, proporcionando una URL pública segura (SSL) para compartir o probar aplicaciones."
monté un contenedor docker con postgres en mi máquina local, expone el servicio por localhost:5432, pero no he podido hacer que se conecte con el flujo, siempre me da
Couldn’t connect with these settings
Connection refused
¿Alguien tiene alguna idea?
Creo que tu problema es que no tienes expuesto tu postgres hacia internet, en el vídeo el profesor usa una herramienta llamada ngrok para exponer el postgres que está corriendo en la máquina de él.
"ngrok es una plataforma de red en la nube que crea túneles seguros desde internet a tu máquina local, permitiendo exponer servidores locales (como sitios web o APIs en desarrollo) a la red pública instantáneamente. Funciona sin configurar routers ni firewalls, proporcionando una URL pública segura (SSL) para compartir o probar aplicaciones."