×
Community Blog Tạo truy vấn SQL bằng Qwen của Alibaba Cloud

Tạo truy vấn SQL bằng Qwen của Alibaba Cloud

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng mô hình Qwen của Alibaba Cloud để tạo truy vấn SQL từ ngôn ngữ tự nhiên.

Bối cảnh AI tạo sinh của Gartner: Thắng nhanh, thắng chắc

Khuôn khổ "Thắng nhanh" của Gartner

1
_Source: Gartner (2023)_

Theo Gartner, "Thắng nhanh" là những trường hợp sử dụng:

  • Mang lại giá trị kinh doanh từ trung bình đến cao
  • Cần chi phí triển khai, độ phức tạp và rủi ro thấp
  • Có thể triển khai nhanh chóng với các công cụ và tài nguyên hiện có

Đây là những dự án lý tưởng cho các tổ chức muốn đạt được ROI (Lợi tức đầu tư) sớm từ AI tạo sinh mà không cần phải đại tu cơ sở hạ tầng.

Chuyển văn bản thành SQL như một thành tích "Thắng nhanh"

Giải pháp của chúng tôi là minh chứng cho thành tích Thắng nhanh vì:

  1. Chi phí triển khai thấp: Tận dụng cơ sở dữ liệu hiện có (ví dụ: PostgreSQL) và API (Qwen-Max).
  2. Thời gian đạt được giá trị nhanh: Triển khai tính bằng giờ, không phải bằng tháng.
  3. Tác động có thể mở rộng: Tự động hóa các tác vụ SQL lặp đi lặp lại để giảm chi phí nhân công và lỗi.
  4. Rủi ro thấp nhất: Tích hợp liền mạch với quy trình hiện tại; không cần có những thay đổi gây gián đoạn.

So sánh trường hợp sử dụng GenAI năm 2024 của Gartner

2
_Source: Gartner, Inc. (2024)_

Theo phân tích của Gartner, việc tạo mã (bao gồm chuyển văn bản thành SQL) nằm trong góc phần tư của "Thắng chắc" - tính khả thi cao, giá trị cao, rủi ro thấp. Những điểm chính cần ghi nhớ:

  • Tính khả thi cao: Các công cụ như Qwen-Max có thể tạo SQL từ ngôn ngữ tự nhiên một cách đáng tin cậy.
  • Giá trị kinh doanh cao: Tự động hóa các tác vụ lặp đi lặp lại, giảm lỗi và tăng tốc độ thu thập thông tin chuyên sâu về dữ liệu.
  • Rủi ro thấp: Ít gây gián đoạn so với các ứng dụng AI phức tạp.

Lý do Chuyển văn bản thành SQL phù hợp với "Thắng chắc"

1. Hiệu quả chi phí:

  • Giảm thiểu công sức thủ công: Các nhà phát triển và nhà phân tích tập trung vào công việc chiến lược.
  • Tỷ lệ lỗi thấp hơn: SQL do AI tạo giúp giảm thiểu lỗi cú pháp/logic.

2. Khả năng mở rộng:

  • Tự động tạo báo cáo: Tạo hàng nghìn truy vấn cho bảng điều khiển hoặc kiểm tra.
  • Tích hợp với các hệ thống hiện có: Hoạt động được với các cơ sở dữ liệu như PostgreSQL.

3. Thời gian đạt được giá trị nhanh:

  • Thiết lập nhanh: Triển khai trong vài giờ bằng cách sử dụng API như Qwen-Max.
  • Công sức đào tạo tối thiểu: Người dùng chỉ cần có kỹ năng cơ bản về ngôn ngữ tự nhiên.

Kết luận: Chuyển văn bản thành SQL là một khoản đầu tư chiến lược có rủi ro thấp

Bằng cách áp dụng giải pháp chuyển văn bản thành SQL, các tổ chức có thể làm theo khuyến nghị của Gartner để ưu tiên các sáng kiến nhờ AI có rủi ro thấp, sức tác động cao. Không chỉ là tự động hóa mà còn là giải phóng năng suấtđẩy nhanh quyết định dựa trên dữ liệu với mức đầu tư ban đầu tối thiểu.

Để xem thông tin chi tiết hơn, hãy khám phá báo cáo của Gartner:

Cấu trúc này nhấn mạnh vào sự đồng bộ với mục tiêu kinh doanh, giảm thiểu rủi roROI thực tế - giải pháp hoàn hảo cho giám đốc điều hành và người ra quyết định.

Phân tích chuyên sâu về mặt kỹ thuật: Xây dựng chatbot Chuyển văn bản thành SQL của bạn

Truy vấn SQL: Vấn đề mà nhà phát triển nào cfũng phải đối mặt

3

Việc viết truy vấn SQL tốn nhiều thời gian, dễ xảy ra lỗi và tốn kém. Cho dù bạn đang phân tích dữ liệu khách hàng hay tạo báo cáo, việc dịch các câu hỏi bằng ngôn ngữ tự nhiên sang SQL đều yêu cầu hiểu biết sâu sắc về cơ sở dữ liệu. Nếu bạn có thể tự động hóa quy trình này bằng AI và tiết kiệm chi phí thì sao?

Trong bài viết này, chúng ta sẽ xây dựng một chatbot chuyển văn bản thành SQL hoạt động bằng Qwen3 của Alibaba Cloud (chúng tôi sẽ sử dụng Qwen-Max trong ví dụ này), một mô hình ngôn ngữ lớn (LLM) hiện đại. Chatbot này kết nối với cơ sở dữ liệu PostgreSQL, chuyển đổi các truy vấn của con người thành SQL và trả về kết quả mà không cần phải viết một dòng SQL thủ công nào.

Bạn sẽ giảm cả thời gian phát triển chi phí đám mây với mức giá API tiết kiệm của Alibaba Cloudđộ chính xác cao của Qwen-Max.

Bước 1: Bắt đầu với Alibaba Cloud Model Studio

1.1 Truy cập Model Studio

Truy cập Alibaba Cloudđăng ký. Sau khi đăng nhập, hãy mở bảng điều khiển Model Studio (liên kết).

1.2. Tạo khóa API của bạn

Truy cập trang Quản lý khóa API (liên kết) và tạo khóa API mới. Hãy lưu trữ bảo mật, đó là token truy cập của bạn vào Qwen-Max.

1.3 Thiết lập môi trường Python của bạn

Tạo môi trường ảo và cài đặt các phần phụ thuộc:

# Tạo môi trường ảo
python3 -m venv venv
source venv/bin/activate

# Cài đặt các gói cần thiết
pip install openai python-dotenv psycopg2-binary tabulate

Lưu các mục sau đây vào requirements.txt:

openai
python-dotenv
psycopg2-binary
tabulate

1.4 Thử nghiệm API Qwen-Max

Chạy thử nghiệm nhanh bằng mã ví dụ được cung cấp để đảm khóa API của bạn hoạt động bình thường.

import os
from openai import OpenAI

try:
    client = OpenAI(
        # Nếu biến môi trường không được cấu hình, hãy thay thế dòng sau đây bằng khóa API của bạn: api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        model="qwen-plus",  # Model list: https://www.alibabacloud.com/help/en/model-studio/getting-started/models
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': 'Who are you?'}
            ]
    )
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"Error message: {e}")
    print("For more information, see: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code")

Bước 2: Thiết lập PostgreSQL cho tự động hóa

2.1. Tạo phiên bản ApsaraDB RDS với PostgreSQL

Sử dụng ApsaraDB for PostgreSQL để thiết lập phiên bản PostgreSQL được quản lý. Tham khảo tài liệu này để biết chi tiết.

Có một cách khác là làm theo hướng dẫn từng bước này để cung cấp cơ sở dữ liệu PostgreSQL 17 trên Alibaba Cloud và kết nối với máy cục bộ của bạn bằng psql.

Bước 1: Truy cập bảng điều khiển ApsaraDB RDS

4

  1. Đăng nhập vào bảng điều khiển Alibaba Cloud.
  2. Điều hướng đến ApsaraDB RDS > Quick Start (như trong hình).

Bước 2: Cấu hình cài đặt cơ sở dữ liệu

Sử dụng giao diện như minh họa trong trong hình ảnh bên trên để thiết lập phiên bản PostgreSQL 17 của bạn:

Cài đặt Hành động
Khu vực Chọn một khu vực (ví dụ: Singapore).
Công cụ cơ sở dữ liệu Chọn PostgreSQL và chọn phiên bản 17 từ danh sách thả xuống.
Ủy quyền SLR Đảm bảo chọn "Authorized" để tăng cường bảo mật.
Phiên bản Chọn High-Availability Edition để dự phòng.
Loại sản phẩm Chọn Standard cho hầu hết các trường hợp sử dụng.
Loại bộ nhớ Chọn Premium ESSD để đạt I/O hiệu suất cao.
Loại mạng Chọn VPC để cô lập bảo mật.
Thêm vào danh sách trắng Bật Yes để cho phép kết nối từ IP cục bộ hoặc VPC của bạn.

Bước 3: Hoàn tất và triển khai

  1. Xem lại cấu hình của bạn rồi nhấp vào Create.
  2. Chờ cho phiên bản chuyển sang trạng thái Running (thường mất 5–10 phút).

Bước 4: Lấy thông tin chi tiết về kết nối

Sau khi phiên bản này hoạt động:

  1. Mở tab Overview trong bảng điều khiển ApsaraDB RDS.
  2. Lưu ý đến Endpoint, Port, UsernamePassword.

Bước 5: Kết nối cục bộ với psql

Cài đặt psql trên máy cục bộ của bạn (nếu chưa cài đặt), sau đó kết nối bằng cách sử dụng:

psql -h <ENDPOINT> -U <USERNAME> -d <DATABASE_NAME> -p <PORT>

Thay thế phần giữ chỗ bằng giá trị của bạn (ví dụ: -d postgres cho cơ sở dữ liệu mặc định).

Thành công!

Để biết thông tin chi tiết hơn về cách cấu hình, hãy tham khảo tài liệu chính thức của Alibaba Cloud:

2.2 Cài đặt công cụ PostgreSQL

Trên macOS/Linux, chạy:

brew install postgresql  # macOS
sudo apt install postgresql-client  # Ubuntu

2.3 Khôi phục cơ sở dữ liệu mẫu DVD Rental

Tải cơ sở dữ liệu mẫu DVD Rental về và khôi phục:

# Restore the database
pg_restore -U your_user -h your_host -p your_port -d dvdrental dump_file.tar

2.4 Thử nghiệm bằng psql hoặc pgAdmin

Chạy truy vấn mẫu để xác nhận mọi thứ đều hoạt động:

SELECT * FROM film LIMIT 5;

Bước 3: Xây dựng chatbot Chuyển văn bản thành SQL

3.1 Tổng quan về mã

Tập lệnh sau đây sử dụng Qwen-Max để chuyển đổi các truy vấn ngôn ngữ tự nhiên thành SQL và thực thi trên 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 = """
You are a helpful assistant trained to convert natural language queries into SQL statements.
Sơ đồ cơ sở dữ liệu bao gồm các bảng sau đây:
- 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)Tạo truy vấn SQL hợp lệ để trả lời câu hỏi của người dùng.
"""

    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()

    # Extract SQL between "```sql" and "```"
    start_marker = "```sql"
    end_marker = "```"
    start_idx = sql_query.find(start_marker)
    end_idx = sql_query.find(end_marker, start_idx + len(start_marker))

    if start_idx != -1 and end_idx != -1:
        sql_query = sql_query[start_idx + len(start_marker):end_idx]
    elif start_idx != -1:
        sql_query = sql_query[start_idx + len(start_marker):]
    elif end_idx != -1:
        sql_query = sql_query[:end_idx]

    sql_query = sql_query.strip()

    # Fallback to 'select' keyword
    if not sql_query.lower().startswith("select"):
        select_index = sql_query.lower().find("select")
        if select_index != -1:
            sql_query = sql_query[select_index:]

    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()
    thử:
        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 executing SQL: {e}")
        return [], []
    cuối cùng:
        cursor.close()
        conn.close()

def main():
    user_query = "show the sum of amount by each payment id that is greater then 10"
    print("Generating SQL query...")
    sql_query = generate_sql_query(user_query)
    print("Generated SQL:")
    print(sql_query)

    print("\nExecuting SQL query...")
    columns, rows = execute_sql_query(sql_query)

    if columns and rows:
        print("\nQuery Result:")
        print(tabulate(rows, headers=columns, tablefmt="psql"))
    else:
        print("No results returned.")

if __name__ == "__main__":
    main()

3.2 Cách hoạt động

  • generate_sql_query(): Sử dụng Qwen-Max để chuyển đổi ngôn ngữ tự nhiên thành SQL.
  • execute_sql_query(): Kết nối với PostgreSQL và chạy SQL đã tạo.
  • main(): Điều phối quy trình.

5

Kết quả sẽ giống như hình bên trên. Hơn nữa, bạn có thể phát triển và sửa đổi mã này thêm để tạo bảng điều khiển và mã sẽ được tích hợp với ChatBI. Tuy không tiên tiến bằng ChatBI của QuickBI nhưng đây vẫn là một khởi đầu tốt.

3.3 Mẹo gỡ lỗi

  • Thử nghiệm kết quả SQL trực tiếp trong psql hoặc pgAdmin trước khi chạy trong Python.
  • Sử dụng print(repr(sql_query)) để gỡ lỗi các ký tự ẩn.

Lý do giải pháp này giúp tiết kiệm chi phí

  1. Giảm bớt công việc thủ công: Không cần nhà phát triển hoặc nhà phân tích để viết truy vấn SQL.
  2. Chi phí API thấp: Qwen-Max hấp dẫn hơn so với các LLM khác về tốc độ và độ chính xác tương tự nhưng chi phí thấp hơn.
  3. Cơ sở hạ tầng tự động mở rộng quy mô: Các dịch vụ được quản lý của Alibaba Cloud xử lý việc mở rộng quy mô, giảm chi phí DevOps.

Kết luận: Hơn cả Chuyển văn bản thành SQL

Chatbot này chỉ là sự khởi đầu. Với dòng sản phẩm Qwen của Alibaba Cloud, bạn có thể mở rộng thành:

  • ChatBI: Xây dựng bảng điều khiển hội thoại.
  • Hệ thống trợ lý: Tự động hóa quy trình làm việc phức tạp bằng cách gọi hàm.
  • AI đa phương thức: Bổ sung dữ liệu phân tích hình ảnh/video với Qwen-VL.

Bạn đã sẵn sàng cắt giảm chi phí và tăng năng suất chưa? Hãy bắt đầu với chatbot chuyển văn bản thành SQL này và khai thác toàn bộ tiềm năng của công nghệ tự động hóa bằng sức mạnh của AI.

Các bước tiếp theo

  • Thử mã trong môi trường Alibaba Cloud của bạn.
  • Khám phá các tính năng nâng cao của Qwen.
  • Hãy chia sẻ trường hợp sử dụng của bạn trong phần bình luận!


Bài viết này được dịch từ tiếng Anh. Xem bài viết gốc tại đây.

0 0 0
Share on

Regional Content Hub

119 posts | 4 followers

You may also like

Comments