Saltearse al contenido

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?

  1. 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).
  2. 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.
  3. 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.
  4. 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.
  5. 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áusula LIMIT.
    • Se usan comodines ILIKE y se incluyen columnas delimitadas por comillas dobles para evitar errores de sintaxis.
  6. Salida

    • La consulta final se devuelve como texto dentro de un objeto Message.

Entradas

Campos de Entrada

  • Database
    Conecta la base de datos SQL que se consultará.

    • Tipo: SQLDatabase
    • Requerido: Sí
  • LLM
    Modelo de lenguaje que se utilizará para interpretar la petición y generar la consulta.

    • Tipo: LanguageModel
    • Requerido: Sí
  • Input request
    Texto con la solicitud del usuario (por ejemplo, “¿Cuáles son los últimos 10 pedidos?”).

    • Tipo: MessageTextInput
    • Requerido: Sí
  • 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”

Salidas

  • Text
    Texto que contiene la consulta SQL generada.
    • Tipo: Message (método: build)

Ejemplo de Uso

  1. Conecta la base de datos
    Selecciona la base de datos que contiene la tabla orders.

  2. Selecciona el modelo LLM
    Usa el modelo de lenguaje que prefieras (por ejemplo, GPT‑4).

  3. Introduce la solicitud
    Input request: “Muéstrame los 10 pedidos más recientes con su fecha y total.”

  4. Define Top K
    Top K: 10

  5. Ejecuta el componente
    El componente devuelve algo parecido a:

    SELECT "order_id", "order_date", "total_amount"
    FROM "orders"
    ORDER BY "order_date" DESC
    LIMIT 10;
  6. 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.