En este módulo, aprenderemos cómo mejorar la calidad de las consultas SQL generadas por la IA. Nos enfocaremos en estrategias como el ajuste fino de modelos, el uso de contexto adicional y la validación de las consultas antes de su ejecución.
Respondent.io
Respondent.io es una plataforma en línea que conecta investigadores y empresas con participantes para estudios de mercado y encuestas remuneradas. Su objetivo es facilitar la recopilación de datos cualitativos y cuantitativos mediante entrevistas, encuestas y pruebas de usuario🔹 4.1 Uso de Esquemas de Base de Datos para Mejorar la Precisión
Para que la IA genere consultas SQL más precisas, es fundamental que conozca la estructura de la base de datos.
📌 Proporcionar el esquema de la base de datos como contexto
Tablas:
- usuarios (id INT PRIMARY KEY, nombre TEXT, email TEXT)
- pedidos (id INT PRIMARY KEY, usuario_id INT, total DECIMAL, fecha DATE,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id))
📌 Incorporación del esquema en la consulta
contexto = f"Esquema de la base de datos: {esquema_bd}. Responde solo con consultas SQL válidas."
🔹 4.2 Ajuste del Prompt para Mejorar la Precisión de la IA
Para mejorar la generación de consultas, es clave diseñar prompts efectivos:
📌 Prompt simple (baja precisión)
Genera una consulta SQL para obtener los pedidos de un usuario por su email.
📌 Prompt mejorado (alta precisión)
Genera una consulta SQL en PostgreSQL usando el siguiente esquema:
- Tabla usuarios (id INT PRIMARY KEY, nombre TEXT, email TEXT)
- Tabla pedidos (id INT PRIMARY KEY, usuario_id INT, total DECIMAL, fecha DATE,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id))
La consulta debe obtener todos los pedidos de un usuario dado su email.
Responde solo con SQL válido.
🔹 4.3 Validación y Pruebas de las Consultas Generadas
Antes de ejecutar una consulta generada por la IA, es recomendable validarla.
📌 Analizar sintaxis SQL antes de ejecutarla
import sqlparse
consulta_sql = "SELECT * FROM pedidos WHERE usuario_id = (SELECT id FROM usuarios WHERE email = 'ejemplo@correo.com');"
print(sqlparse.format(consulta_sql, reindent=True, keyword_case="upper"))
📌 Probar la consulta en un entorno seguro
Usar un entorno de pruebas en SQL Server o PostgreSQL. Ejecutar la consulta en modo lectura (SELECT) antes de aplicar cambios (INSERT, UPDATE, DELETE).
🔹 4.4 Implementación en Python con LangChain y Ollama
Ejemplo de integración con LangChain y Llama2 en Ollama para generar consultas SQL optimizadas:
from langchain.chat_models import ChatOllama
from langchain.schema import SystemMessage, HumanMessage
modelo = ChatOllama(model="llama2")
prompt = """Eres un experto en SQL. Dado el siguiente esquema de base de datos:
Tablas:
- usuarios (id INT PRIMARY KEY, nombre TEXT, email TEXT)
- pedidos (id INT PRIMARY KEY, usuario_id INT, total DECIMAL, fecha DATE,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id))
Genera una consulta SQL para obtener todos los pedidos de un usuario dado su email.
Responde solo con código SQL válido.
"""
respuesta = modelo([
SystemMessage(content="Eres un asistente especializado en SQL."),
HumanMessage(content=prompt)
])
print(respuesta.content)
🔹 4.5 Estrategias Avanzadas para Consultas Complejas
- ✅ Descomponer consultas complejas en partes más simples.
- ✅ Optimizar el uso de índices para mejorar el rendimiento.
- ✅ Usar
EXPLAINen PostgreSQL oSHOW EXECUTION PLANen SQL Server para analizar la eficiencia de la consulta.
📌 Ejemplo de optimización en PostgreSQL
EXPLAIN ANALYZE SELECT * FROM pedidos
WHERE usuario_id = (SELECT id FROM usuarios WHERE email = 'ejemplo@correo.com');
Optimización de Consultas SQL con IA
- ✔ La calidad del esquema proporcionado influye directamente en la precisión de la consulta generada.
- ✔ Optimizar los prompts mejora la generación de SQL.
- ✔ Validar y probar las consultas antes de ejecutarlas evita errores y problemas de seguridad.
- ✔ El uso de herramientas como LangChain y Ollama permite automatizar la generación de consultas con IA.
Indice del curso