En este módulo, construiremos una aplicación completa que integre IA para generar y ejecutar consultas SQL en una base de datos. Usaremos Streamlit para la interfaz de usuario, LangChain y Llama 2 para la IA, SQLAlchemy para la conexión con la base de datos, y añadiremos soporte para la generación de reportes en Excel y PDF.
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📌 Contenidos del Módulo
- Desarrollo de una aplicación que genere consultas SQL con IA
- Interfaz en Streamlit para consultas en lenguaje natural
- Generación de reportes en Excel y PDF
- Despliegue y ejecución en servidores o la nube
🔹 5.1 Desarrollo de una Aplicación que Genere Consultas SQL con IA
La aplicación permitirá a los usuarios ingresar preguntas en lenguaje natural, y la IA generará consultas SQL para ejecutarlas en la base de datos.
📌 Instalación de Dependencias
pip install streamlit sqlalchemy pymssql psycopg2 langchain ollama pandas openpyxl reportlab
🔹 5.2 Interfaz en Streamlit para Consultas en Lenguaje Natural
Usaremos Streamlit para crear una interfaz simple e interactiva.
📌 Código de main.py
import streamlit as st
import pandas as pd
from sqlalchemy import create_engine, text
from langchain.chat_models import ChatOllama
from langchain.schema import SystemMessage, HumanMessage
import io
from reportlab.pdfgen import canvas
# Configuración de la base de datos
DB_TYPE = "mssql" # O "postgresql"
USER = "usuario"
PASSWORD = "contraseña"
SERVER = "servidor_sql"
DATABASE = "nombre_bd"
DB_URL = f"{DB_TYPE}+pymssql://{USER}:{PASSWORD}@{SERVER}/{DATABASE}"
engine = create_engine(DB_URL)
# Configuración del modelo de IA
modelo = ChatOllama(model="llama2")
# Interfaz con Streamlit
st.title("🔍 Generador de Consultas SQL con IA")
st.sidebar.header("Configuración")
email = st.text_input("Introduce el email del usuario:", "")
if st.button("Generar Consulta"):
if email:
# Generación de consulta con IA
prompt = f"""Genera una consulta SQL para obtener pedidos de un usuario con email '{email}'.
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))
Responde solo con código SQL válido.
"""
sql_query = modelo([SystemMessage(content="Asistente SQL"), HumanMessage(content=prompt)]).content
st.code(sql_query, language="sql")
# Ejecutar consulta
with engine.connect() as connection:
result = connection.execute(text(sql_query))
df = pd.DataFrame(result.fetchall(), columns=result.keys())
st.write("Resultados:")
st.dataframe(df)
# Generar reportes
if not df.empty:
# Generar Excel
output_excel = io.BytesIO()
with pd.ExcelWriter(output_excel, engine="openpyxl") as writer:
df.to_excel(writer, index=False, sheet_name="Resultados")
output_excel.seek(0)
# Generar PDF
output_pdf = io.BytesIO()
pdf = canvas.Canvas(output_pdf)
pdf.drawString(100, 800, "Reporte de Resultados")
for i, row in df.iterrows():
pdf.drawString(100, 780 - (i * 20), str(row.to_dict()))
pdf.save()
output_pdf.seek(0)
# Botones de descarga
st.download_button("📄 Descargar Excel", output_excel, "resultados.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
st.download_button("📄 Descargar PDF", output_pdf, "resultados.pdf", "application/pdf")
else:
st.warning("Por favor, introduce un email.")
🔹 5.3 Generación de Reportes en Excel y PDF
✔ Excel: Se usa pandas y openpyxl para exportar los datos generados.
✔ PDF: Se usa reportlab para crear documentos PDF con los resultados.
🔹 5.4 Despliegue y Ejecución en Servidores o la Nube
📌 Opción 1: Ejecutar Localmente
streamlit run main.py
📌 Opción 2: Desplegar con Docker
📌 Código de Dockerfile
FROM python:3.9 WORKDIR /app COPY . /app RUN pip install -r requirements.txt CMD ["streamlit", "run", "main.py", "--server.port=8501", "--server.enableCORS=false"]
📌 Construcción y ejecución del contenedor
docker build -t sql-ai-app . docker run -p 8501:8501 sql-ai-app
Texto a SQL Aplicación Completa
- ✔ Creamos una aplicación que genera y ejecuta consultas SQL con IA.
- ✔ La interfaz permite interactuar fácilmente con la IA.
- ✔ Generamos reportes en Excel y PDF con los resultados.
- ✔ Podemos ejecutar la app localmente o desplegarla con Docker.
🚀 ¡Ahora puedes probar la aplicación y mejorarla según tus necesidades!
Indice del curso