SQL Query Constructor
Genera consultas SQL a partir de la solicitud del usuario y el contexto de la base de datos.
El componente interpreta la petición, detecta el idioma, traduce si es necesario, relaciona palabras clave con columnas, construye la consulta y garantiza que sea de solo lectura antes de devolverla.
¿Cómo funciona?
-
Validación de parámetros
- Se comprueba que
Top K
sea mayor que 0. - Se verifica que la consulta resultante sea de solo lectura (no inserciones, actualizaciones ni borrados).
- Se comprueba que
-
Detección de idioma
- El modelo de lenguaje analiza el texto del usuario y el contenido de la base de datos para determinar el idioma de cada uno.
-
Traducción (si es necesario)
- Si el idioma del usuario difiere del de la base de datos, el modelo traduce la petición al idioma de la base de datos.
-
Relación de palabras clave con columnas
- Se extraen relaciones entre palabras clave de la petición y los encabezados de las tablas, lo que ayuda a identificar las columnas relevantes.
-
Construcción de la consulta
- Con la información de contexto y las relaciones, el modelo genera una consulta SQL sintácticamente correcta.
- Se limita el número de resultados a
Top K
mediante la cláusulaLIMIT
. - Se usan comodines
ILIKE
y se incluyen columnas delimitadas por comillas dobles para evitar errores de sintaxis.
-
Salida
- La consulta final se devuelve como texto dentro de un objeto
Message
.
- La consulta final se devuelve como texto dentro de un objeto
Entradas
Campos de Entrada
-
Database
Conecta la base de datos SQL que se consultará.- Tipo:
SQLDatabase
- Requerido: Sí
- Tipo:
-
LLM
Modelo de lenguaje que se utilizará para interpretar la petición y generar la consulta.- Tipo:
LanguageModel
- Requerido: Sí
- Tipo:
-
Input request
Texto con la solicitud del usuario (por ejemplo, “¿Cuáles son los últimos 10 pedidos?”).- Tipo:
MessageTextInput
- Requerido: Sí
- Tipo:
-
Top K
Número máximo de resultados que la consulta devolverá. Debe ser mayor que 0.- Tipo:
IntInput
- Requerido: Sí
- Información adicional: “The number of results per select statement to return.Greater than 0”
- Tipo:
Salidas
- Text
Texto que contiene la consulta SQL generada.- Tipo:
Message
(método:build
)
- Tipo:
Ejemplo de Uso
-
Conecta la base de datos
Selecciona la base de datos que contiene la tablaorders
. -
Selecciona el modelo LLM
Usa el modelo de lenguaje que prefieras (por ejemplo, GPT‑4). -
Introduce la solicitud
Input request
: “Muéstrame los 10 pedidos más recientes con su fecha y total.” -
Define Top K
Top K
:10
-
Ejecuta el componente
El componente devuelve algo parecido a:SELECT "order_id", "order_date", "total_amount"FROM "orders"ORDER BY "order_date" DESCLIMIT 10; -
Usa la salida
Puedes pasar el texto resultante a otro componente que ejecute la consulta y muestre los datos en el dashboard.
Componentes Relacionados
- Database Connector – Conecta tu aplicación a la base de datos.
- SQL Query Executor – Ejecuta la consulta SQL generada y devuelve los resultados.
- LLM Connector – Proporciona el modelo de lenguaje que se usa para la generación de texto.
Consejos y Mejores Prácticas
- Mantén
Top K
razonable: Evita valores muy altos que puedan sobrecargar la base de datos. - Revisa la salida: Aunque el componente verifica la lectura, siempre es buena idea inspeccionar la consulta antes de ejecutarla.
- Usa nombres claros: Cuando escribas la solicitud, utiliza nombres de columnas o conceptos que coincidan con los encabezados de la tabla para mejorar la precisión.
- Actualiza el contexto: Si cambias la estructura de la tabla, actualiza el contexto de la base de datos para que el componente reconozca las nuevas columnas.
Consideraciones de Seguridad
- Solo lectura: El componente bloquea cualquier operación de escritura, actualización o borrado.
- Validación de entrada: Se comprueba que la consulta no contenga comandos peligrosos antes de devolverla.
- Control de acceso: Asegúrate de que el modelo LLM y la base de datos tengan los permisos adecuados para evitar exfiltración de datos.