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.
๐น 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
EXPLAIN
en PostgreSQL oSHOW EXECUTION PLAN
en 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