Crea Consultas SQL Desde Lenguaje Natural con Qwen de Alibaba Cloud

Crea Consultas SQL Desde Lenguaje Natural con Qwen de Alibaba Cloud

Generación de Consultas SQL con Qwen de Alibaba Cloud

La capacidad de generar consultas SQL a partir de lenguaje natural es una innovación que puede transformar la manera en que interactuamos con las bases de datos. En este artículo, exploraremos cómo utilizar el modelo Qwen de Alibaba Cloud para facilitar este proceso, ofreciendo un enfoque eficiente y eficaz para los desarrolladores y analistas de datos.

Contexto: AI Generativa según Gartner

Según Gartner, el concepto de «Ganar Rápido» se refiere a la implementación de soluciones que ofrecen un valor significativo con un bajo costo de implementación y riesgos asociados. Este enfoque es ideal para organizaciones que buscan obtener un retorno de inversión (ROI) temprano utilizando inteligencia artificial sin necesidad de una reestructuración completa de su infraestructura.

Ventajas de Convertir Texto en SQL

La conversión de consultas en lenguaje natural a SQL se presenta como una solución que cumple con los criterios de «Ganar Rápido». Las principales ventajas incluyen:

  • Costos de implementación bajos: Aprovechando bases de datos existentes y el API Qwen-Max.
  • Tiempo de entrega rápido: Implementaciones que pueden llevar horas en lugar de meses.
  • Escalabilidad: Automatización de tareas SQL repetitivas para reducir costos laborales y errores.
  • Bajo riesgo: Integración sin problemas con procesos existentes.

Construcción de un Chatbot para Generar Consultas SQL

El desarrollo de un chatbot que convierta texto natural a SQL con el modelo Qwen-Max de Alibaba Cloud puede llevar a una considerable reducción de tiempo y costos. A continuación, se presentan los pasos necesarios para crear este sistema.

Paso 1: Configuración Inicial

1.1 Acceso a Alibaba Cloud Model Studio

Inicie sesión en Alibaba Cloud y acceda a Model Studio. Regístrese si aún no tiene una cuenta.

1.2 Creación de una Clave API

Dirígete a la gestión de claves API y crea una nueva clave. Esta clave será su token de acceso al modelo Qwen-Max.

1.3 Configuración del Entorno Python

Configure un entorno virtual e instale las dependencias necesarias:

python3 -m venv venv
source venv/bin/activate
pip install openai python-dotenv psycopg2-binary tabulate

Paso 2: Configuración de PostgreSQL para Automatización

Utilice ApsaraDB for PostgreSQL para establecer una instancia gestionada. Siga la documentación oficial para obtener instrucciones detalladas.

Paso 3: Desarrollo del Chatbot

El siguiente código utiliza Qwen-Max para convertir consultas de lenguaje natural en SQL y ejecutarlas en PostgreSQL:

import os
import psycopg2
from openai import OpenAI
from dotenv import load_dotenv
from tabulate import tabulate

load_dotenv()

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)

def generate_sql_query(natural_language_query):
    system_prompt = """
Eres un asistente útil entrenado para convertir consultas en lenguaje natural en declaraciones SQL.
Estructura de la base de datos:
- film_category (category_id, name)
- film (film_id, title, category_id)
- inventory (inventory_id, film_id, store_id)
- rental (rental_id, inventory_id, customer_id, return_date, rental_date)
- payment (payment_id, customer_id, staff_id, rental_id, amount, payment_date) Crear una consulta SQL válida para responder a la pregunta del usuario.
"""

    response = client.chat.completions.create(
        model="qwen-max",
        messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": natural_language_query}
        ],
        temperature=0.2
    )

    sql_query = response.choices[0].message.content.strip()
    return sql_query.strip()

def execute_sql_query(sql_query):
    conn = psycopg2.connect(
        dbname=os.getenv("DB_NAME"),
        user=os.getenv("DB_USER"),
        password=os.getenv("DB_PASSWORD"),
        host=os.getenv("DB_HOST"),
        port=os.getenv("DB_PORT")
    )
    cursor = conn.cursor()
    try:
        cursor.execute(sql_query)
        columns = [desc[0] for desc in cursor.description]
        rows = cursor.fetchall()
        return columns, rows
    except Exception as e:
        print(f"Error ejecutando SQL: {e}")
        return [], []
    finally:
        cursor.close()
        conn.close()

def main():
    user_query = "muestra la suma de cantidades por cada id de pago que sea mayor que 10"
    print("Generando consulta SQL...")
    sql_query = generate_sql_query(user_query)
    print("Consulta SQL generada:")
    print(sql_query)
    print("\nEjecutando consulta SQL...")
    columns, rows = execute_sql_query(sql_query)

    if columns and rows:
        print("\nResultado de la consulta:")
        print(tabulate(rows, headers=columns, tablefmt="psql"))
    else:
        print("No se devolvieron resultados.")

if __name__ == "__main__":
    main()

Beneficios de Esta Solución

  • Reducción del trabajo manual: No se requiere que los desarrolladores escriban consultas SQL manualmente.
  • Bajo costo de API: Qwen-Max ofrece una opción más asequible en comparación con otros modelos de lenguaje.
  • Escalabilidad automática: Los servicios gestionados de Alibaba Cloud facilitan el manejo de la escalabilidad, reduciendo los costos de DevOps.

Para obtener más información, consulte la fuente original.

Deja una respuesta