Saltearse al contenido

SQLAgent

SQLAgent es un componente que permite a los usuarios crear un agente inteligente capaz de ejecutar consultas SQL en una base de datos. El agente utiliza un modelo de lenguaje (LLM) para interpretar las preguntas del usuario y generar las consultas SQL adecuadas, luego las ejecuta y devuelve los resultados.

¿Cómo funciona?

Cuando configuras SQLAgent, primero le indicas la Database Info que contiene las credenciales y la ubicación de la base de datos. El componente construye internamente una conexión a la base de datos usando SQLDatabase.from_uri. Luego crea un toolkit de LangChain (SQLDatabaseToolkit) que incluye herramientas predefinidas para leer y escribir en la base de datos. Con el LLM que hayas seleccionado, el componente crea un agente SQL (create_sql_agent) que combina el LLM con el toolkit y cualquier herramienta adicional que hayas añadido. Cuando el agente recibe una pregunta, el LLM decide qué herramienta usar, genera la consulta SQL, la ejecuta y devuelve el resultado al usuario.

Entradas

  • Database Info: Información de la base de datos (credenciales, host, nombre, etc.) que el agente usará para conectarse y ejecutar consultas.
  • Extra Tools: Herramientas adicionales que el agente puede usar además de las herramientas SQL estándar. Pueden ser herramientas personalizadas o de terceros.
  • Model: El modelo de lenguaje que el agente empleará para interpretar las preguntas y generar consultas SQL.
  • Handle Parse Errors: Indica si el agente debe intentar corregir errores de análisis de la consulta antes de volver a intentarlo.
  • Input: Entrada inicial que el agente recibirá para comenzar el proceso (por ejemplo, una pregunta del usuario).
  • Max Iterations: Número máximo de intentos que el agente realizará antes de detenerse.
  • Verbose: Si se activa, el agente mostrará información detallada de su proceso interno (útil para depuración).
  • Tool Name: Nombre que se mostrará al agente cuando lo utilice como herramienta.
  • Tool Description: Descripción detallada de lo que hace la herramienta, para que el agente la comprenda correctamente.
  • Tools arguments metadata: Metadatos que describen los argumentos que aceptan las herramientas, ayudando al agente a saber qué datos necesita.

Salidas

  • Agent: El objeto AgentExecutor creado, que puede ser reutilizado en otros flujos o guardado para futuras consultas.
  • Response: Mensaje con la respuesta del agente (por ejemplo, los resultados de la consulta SQL).
  • Tool: La herramienta generada que el agente puede usar en el flujo de trabajo.

Ejemplo de Uso

  1. Conectar la base de datos
    En el campo Database Info, selecciona la base de datos que quieres consultar (por ejemplo, una base de datos de ventas).

  2. Seleccionar el modelo
    En Model, elige un LLM de tu biblioteca (por ejemplo, GPT‑4o).

  3. Añadir herramientas opcionales
    Si necesitas funciones especiales (por ejemplo, enviar un correo con los resultados), añade la herramienta en Extra Tools.

  4. Iniciar la consulta
    En Input, escribe una pregunta como:

    “¿Cuáles fueron las ventas totales del último trimestre?”

  5. Ejecutar
    Haz clic en “Run”. El agente interpretará la pregunta, generará la consulta SQL, la ejecutará y devolverá los resultados en el campo Response.

Componentes Relacionados

  • LCAgentComponent: Base de la que hereda SQLAgent, proporciona la estructura de agente y la lógica de ejecución.
  • SQLDatabaseToolkit: Conjunto de herramientas que permiten leer y escribir en la base de datos.
  • AgentExecutor: Objeto que ejecuta el agente y gestiona la interacción con las herramientas.

Consejos y Mejores Prácticas

  • Elige un modelo adecuado: Los modelos más grandes suelen generar consultas más precisas, pero también consumen más recursos.
  • Limita las iteraciones: Ajusta Max Iterations para evitar bucles infinitos en caso de consultas complejas.
  • Revisa los resultados: Aunque el agente es inteligente, siempre verifica que la respuesta sea correcta antes de usarla en producción.
  • Añade herramientas útiles: Si tu flujo necesita enviar correos o actualizar registros, añade esas herramientas en Extra Tools.

Consideraciones de Seguridad

  • Protege las credenciales: La información de la base de datos se almacena en Database Info; asegúrate de que solo usuarios autorizados puedan verla.
  • Controla el acceso a la base de datos: Limita los permisos de la cuenta que el agente usa para evitar modificaciones no deseadas.
  • Valida las consultas: Si es posible, habilita la opción Handle Parse Errors para que el agente intente corregir errores antes de ejecutar consultas potencialmente peligrosas.