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
-
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). -
Seleccionar el modelo
En Model, elige un LLM de tu biblioteca (por ejemplo, GPT‑4o). -
Añadir herramientas opcionales
Si necesitas funciones especiales (por ejemplo, enviar un correo con los resultados), añade la herramienta en Extra Tools. -
Iniciar la consulta
En Input, escribe una pregunta como:“¿Cuáles fueron las ventas totales del último trimestre?”
-
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.