Texto a SQL Aplicación Completa

Texto a SQL Aplicación Completa

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.

Enlace Patrocinado

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

Curso Agente IA texto a sql