×
Community Blog สร้างคิวรี SQL ด้วย Qwen ของ Alibaba Cloud

สร้างคิวรี SQL ด้วย Qwen ของ Alibaba Cloud

ในบทช่วยสอนนี้ เราจะแสดงวิธีใช้โมเดล Qwen ของ Abstract เพื่อสร้างคิวรี SQL จากภาษาธรรมชาติ

ภาพรวม Generative AI ของ Gartner: ประสบความสำเร็จอย่างรวดเร็วและมีโอกาสประสบความสำเร็จมาก

เฟรมเวิร์ก "ประสบความสำเร็จอย่างรวดเร็ว" ของ Gartner

1
_Source: Gartner (2023)_

อ้างอิงจาก Gartner "ประสบความสำเร็จอย่างรวดเร็ว" (Quick Win) คือกรณีการใช้งานที่:

  • ส่งมอบมูลค่าทางธุรกิจในระดับปานกลางถึงสูง
  • ต้องการต้นทุนในการนำมาปรับใช้ ความซับซ้อน และความเสี่ยงต่ำ
  • สามารถนำมาปรับใช้ได้อย่างรวดเร็วด้วยเครื่องมือและทรัพยากรที่มีอยู่

โครงการเหล่านี้เหมาะสำหรับองค์กรที่กำลังมองหาROI (ผลตอบแทนการลงทุน) ตั้งแต่เนิ่น ๆ จาก Generative AI โดยไม่ต้องมีการยกเครื่องโครงสร้างพื้นฐานที่สำคัญ

Text-to-SQL ในฐานะที่เป็นการ "ประสบความสำเร็จอย่างรวดเร็ว"

โซลูชันของเราแสดงให้เห็นตัวอย่างของการประสบความสำเร็จอย่างรวดเร็วเพราะ:

  1. ต้นทุนในการนำมาปรับใช้ต่ำ: การใช้ฐานข้อมูลที่มีอยู่ (เช่น PostgreSQL) และ API (Qwen-Max)
  2. เห็นมูลค่าในเวลาที่รวดเร็ว: การนำมาปรับใช้ได้ภายในไม่กี่ชั่วโมง ไม่ใช่หลายเดือน
  3. ผลกระทบที่ปรับขนาดได้: เปลี่ยนงาน SQL ที่ต้องทำซ้ำ ๆ ให้เป็นระบบอัตโนมัติเพื่อลดต้นทุนและข้อผิดพลาดจากแรงงาน
  4. ความเสี่ยงน้อยที่สุด: รวมเข้าด้วยกันอย่างราบรื่นกับเวิร์กโฟลว์ปัจจุบัน ไม่จำเป็นต้องทำการเปลี่ยนแปลงครั้งใหญ่

การเปรียบเทียบกรณีการใช้งาน GenAI ปี 2024 ของ Gartner

2
_Source: Gartner, Inc. (2024)_

ในการวิเคราะห์ของ Gartner การสร้างโค้ด (รวมถึง text-to-SQL) จะจัดอยู่ในควอดแรนท์ "มีโอกาสประสบความสำเร็จมาก" เพราะมีความเป็นไปได้สูง มูลค่าสูง ความเสี่ยงต่ำ สาระสำคัญ:

  • ความเป็นไปได้สูง: เครื่องมือ เช่น Qwen-Max สร้าง SQL จากภาษาธรรมชาติได้อย่างน่าไว้วางใจ
  • มูลค่าทางธุรกิจสูง: เปลี่ยนงานที่ต้องทำซ้ำ ๆ ให้เป็นระบบอัตโนมัติ ลดข้อผิดพลาด และเร่งให้เกิดข้อมูลเชิงลึก
  • ความเสี่ยงต่ำ: การหยุดชะงักน้อยที่สุดเมื่อเทียบกับแอปพลิเคชัน AI ที่ซับซ้อน

ทำไม Text-to-SQL จึงเหมาะกับการ "มีโอกาสประสบความสำเร็จมาก"

1. ความคุ้มค่าใช้จ่าย:

  • ลดความพยายามลงมือทำด้วยตนเอง: นักพัฒนาและนักวิเคราะห์มุ่งเน้นไปที่การทำงานเชิงกลยุทธ์ได้
  • อัตราความผิดพลาดที่ต่ำกว่า: SQL ที่สร้างขึ้นด้วย AI ลดข้อผิดพลาดทางไวยากรณ์/ตรรกะให้เหลือน้อยที่สุด

2. ความสามารถในการปรับขนาดได้:

  • ทำให้การรายงานเป็นระบบอัตโนมัติ: สร้างคิวรีนับพันสำหรับแดชบอร์ดหรือการตรวจสอบ
  • บูรณาการกับระบบที่มีอยู่: ทำงานร่วมกับฐานข้อมูลเช่น PostgreSQL

3. เห็นมูลค่าในเวลาที่รวดเร็ว:

  • การติดตั้งที่รวดเร็ว: นำไปปรับใช้ได้ในไม่กี่ชั่วโมง โดยใช้ API เช่น Qwen-Max
  • ต้องการการฝึกอบรมไม่มาก: ผู้ใช้ต้องการเพียงทักษะด้านภาษาธรรมชาติในระดับพื้นฐานเท่านั้น

ข้อสรุป: Text-to-SQL เป็นการลงทุนที่มีความเสี่ยงต่ำในเชิงกลยุทธ์

เมื่อใช้โซลูชัน text-to-SQL องค์กรปรับให้สอดคล้องกับคำแนะนำของ Gartner เพื่อให้ความสำคัญกับโครงการริเริ่มจาก AI ที่มีความเสี่ยงต่ำ สร้างผลกระทบสูงมาก่อนเป็นอันดับแรก นี่ไม่ใช่แค่ระบบอัตโนมัติเท่านั้น แต่ยังเป็นเรื่องเกี่ยวกับการปลดล็อกประสิทธิภาพการทำงานและเร่งการตัดสินใจที่ขับเคลื่อนด้วยข้อมูลด้วยเงินลงทุนเริ่มแรกที่น้อยที่สุด

หากต้องการข้อมูลเชิงลึกที่มากขึ้น โปรดดูที่รายงานของ Gartner:

โครงสร้างนี้เน้นการปรับธุรกิจให้สอดคล้อง การบรรเทาความเสี่ยง และ ROI ที่คำนึงถึงความเป็นจริง ซึ่งเหมาะมากสำหรับผู้บริหารและผู้ที่มีอำนาจตัดสินใจ

เจาะลึกทางเทคนิค: การสร้างแชทบอท Text-to-SQL ของคุณ

คิวรี SQL: ปัญหาที่นักพัฒนาทุกคนต้องเผชิญ

3

การเขียนคิวรี SQL นั้นต้องใช้เวลานานเกิด มีโอกาสเกิดข้อผิดพลาด และมีค่าใช้จ่ายสูง ไม่ว่าคุณจะกำลังวิเคราะห์ข้อมูลลูกค้า หรือสร้างรายงาน การแปลคำถามภาษาธรรมชาติไปเป็น SQL ก็ต้องการความเข้าใจอย่างลึกซึ้งเกี่ยวกับฐานข้อมูล จะเป็นอย่างไรถ้าคุณสามารถทำให้กระบวนการนี้เป็นระบบอัตโนมัติได้โดยใช้ AI และประหยัดค่าใช้จ่ายไปพร้อมกัน?

ในบทความนี้ เราจะสร้างแชทบอท text-to-SQLที่ขับเคลื่อนด้วย Qwen3 ของ Alibaba Cloud (เราจะใช้ Qwen-Max ในตัวอย่างนี้) ซึ่งเป็นโมเดลภาษาขนาดใหญ่ (LLM) ที่ล้ำสมัย แชทบอทนี้เชื่อมต่อกับฐานข้อมูล PostgreSQL แปลงคิวรีของมนุษย์ไปเป็น SQL และส่งกลับผลลัพธ์ ทั้งหมดนี้ทำได้โดยไม่ต้องเขียน SQL ด้วยตนเองแม้แต่บรรทัดเดียว

คุณจะลดเวลาทั้งในการพัฒนา_และ_ค่าใช้จ่ายในระบบคลาวด์ด้วย การกำหนดราคา API ที่คุ้มค่าใช้จ่ายของ Alibaba Cloud และ Qwen-Max ที่มีความแม่นยำสูง

ขั้นตอนที่ 1: เริ่มต้นใช้งาน Alibaba Cloud Model Studio

1.1 เข้าถึง Model Studio

เยี่ยมชม Alibaba Cloud และลงทะเบียน เมื่อเข้าสู่ระบบแล้ว ให้ไปยังคอนโซล Model Studio (ลิงก์)

1.2 สร้างคีย์ API ของคุณ

ไปที่หน้าการจัดการคีย์ API (ลิงก์) และสร้างคีย์ API ใหม่ โปรดจัดเก็บไว้ให้ปลอดภัย เพราะนี่เป็นโทเค็นการเข้าถึง Qwen-Max ของคุณ

1.3 ตั้งค่าสภาพแวดล้อม Python ของคุณ

สร้างสภาพแวดล้อมเสมือนจริงและติดตั้งการขึ้นต่อกัน:

# สร้างสภาพแวดล้อมเสมือนจริง
python3 -m venv venv
source venv/bin/activate

# ติดตั้งแพ็กเกจที่จำเป็น
pip install openai python-dotenv psycopg2-binary tabulate

บันทึกรายการต่อไปนี้ใน requirements.txt:

openai
python-dotenv
psycopg2-binary
tabulate

1.4 ทดสอบ Qwen-Max API

เรียกใช้การทดสอบอย่างรวดเร็วโดยใช้โค้ดตัวอย่างที่ให้ไว้ เพื่อตรวจสอบว่าคีย์ API ของคุณทำงานหรือไม่

import os
from openai import OpenAI

try:
    client = OpenAI(
        # หากไม่ได้กำหนดค่าตัวแปรสภาพแวดล้อม ให้แทนที่บรรทัดต่อไปนี้ด้วยคีย์ API ของคุณ: 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",  # รายการโมเดล: https://www.alibabacloud.com/help/en/model-studio/getting-started/models
        messages=[
            {'role': 'system', 'content': 'คุณเป็นผู้ช่วยที่มีประโยชน์'},
            {'role': 'user', 'content': 'คุณเป็นใคร'}
            ]
    )
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"ข้อความแสดงข้อผิดพลาด: {e}")
    print("หากต้องการสร้างข้อมูลเพิ่มเติม โปรดดู: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code")

ขั้นตอนที่ 2: ตั้งค่า PostgreSQL สำหรับระบบอัตโนมัติ

2.1 สร้างอินสแตนซ์ ApsaraDB RDS ด้วย PostgreSQL

ใช้ ApsaraDB สำหรับ PostgreSQL เพื่อตั้งค่าอินสแตนซ์ PostgreSQL ที่มีการจัดการ ดูเอกสารนี้หากต้องการทราบรายละเอียด

อีกทางเลือกหนึ่งคือการทำตามคำแนะนำทีละขั้นตอนนี้ เพื่อการจัดเตรียมฐานข้อมูล PostgreSQL 17 บน Alibaba Cloud และเชื่อมต่อกับเครื่องภายในของคุณโดยใช้ psql

ขั้นตอนที่ 1: เข้าถึงคอนโซล ApsaraDB RDS

4

  1. เข้าสู่ระบบคอนโซลAlibaba Cloud
  2. ไปที่ ApsaraDB RDS > เริ่มต้นใช้งานด่วน (ตามที่แสดงในภาพ)

ขั้นตอนที่ 2: กำหนดการตั้งค่าฐานข้อมูล

ใช้อินเทอร์เฟซที่แสดงในภาพด้านบนเพื่อตั้งค่าอินสแตนซ์ PostgreSQL 17 ของคุณ:

การตั้งค่า การดำเนินการ
ภูมิภาค เลือกภูมิภาค (เช่น สิงคโปร์)
กลไกฐานข้อมูล เลือก PostgreSQL และเลือกเวอร์ชัน 17 จากดรอปดาวน์
การอนุญาต SLR ตรวจสอบให้แน่ใจว่าเลือก 'อนุญาตแล้ว' เพื่อความปลอดภัยที่เพิ่มขึ้น
รุ่น เลือกรุ่นที่พร้อมใช้งานสูงสำหรับการสำรองข้อมูล
ประเภทผลิตภัณฑ์ เลือกมาตรฐานสำหรับกรณีการใช้งานส่วนใหญ่
ประเภทที่จัดเก็บข้อมูล เลือกใช้ Premium ESSD สำหรับ I/O ประสิทธิภาพสูง
ประเภทเครือข่าย เลือก VPC เพื่อการแยกส่วนอย่างปลอดภัย
เพิ่มไปยังรายการที่อนุญาต เปิดใช้งาน ใช่ เพื่อนุญาตให้มีการเชื่อมต่อจาก IP หรือ VPC ในเครื่องของคุณ

ขั้นตอนที่ 3: สรุปและเปิดตัว

  1. ตรวจสอบการกำหนดค่าของคุณและคลิก สร้าง
  2. รอให้อินสแตนซ์เข้าสู่สถานะ การรัน (ปกติ 5-10 นาที)

ขั้นตอนที่ 4: ดึงข้อมูลรายละเอียดการเชื่อมต่อ

เมื่ออินสแตนซ์ทำงานอยู่:

  1. ไปที่แท็บ ภาพรวม ในคอนโซล ApsaraDB RDS
  2. จด ปลายทาง, พอร์ต, ชื่อผู้ใช้ และรหัสผ่าน

ขั้นตอนที่ 5: เชื่อมต่อภายในด้วย psql

ติดตั้ง psql บนเครื่องภายในของคุณ (หากไม่ได้ติดตั้งไว้แล้ว) จากนั้นเชื่อมต่อโดยใช้:

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

แทนที่ตัวยึดตำแหน่งด้วยค่าของคุณ (เช่น -d postgres สำหรับฐานข้อมูลเริ่มต้น)

สำเร็จ!

หากต้องการทราบรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่า โปรดดูเอกสารอย่างเป็นทางการของ Alibaba Cloud:

2.2 ติดตั้งเครื่องมือ PostgreSQL

บน MacOS/Linux ให้รัน:

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

2.3 กู้คืนฐานข้อมูลตัวอย่างการเช่าดีวีดี

ดาวน์โหลด ฐานข้อมูลตัวอย่างการเช่าดีวีดี และกู้คืน:

# กู้คืนฐานข้อมูล
pg_restore -U your_user -h your_host -p your_port -d dvdrental dump_file.tar

2.4 ทดสอบกับ psql หรือ pgAdmin

รันคิวรีตัวอย่างเพื่อยืนยันว่าทุกอย่างทำงานได้:

SELECT * FROM film LIMIT 5;

ขั้นตอนที่ 3: สร้างแชทบอท Text-to-SQL

3.1 ภาพรวมโค้ด

สคริปต์ต่อไปนี้ใช้ Qwen-Max เพื่อแปลงคิวรีภาษาธรรมชาติเป็น SQL และดำเนินการบน 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 = """
คุณเป็นผู้ช่วยที่มีประโยชน์ที่ได้รับการฝึกฝนในการแปลงคิวรีภาษาธรรมชาติเป็นคำสั่ง SQL
โครงสร้างฐานข้อมูลประกอบด้วยตารางต่อไปนี้:
- 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)

สร้างคิวรี SQL ที่ใช้การได้ ซึ่งตอบคำถามของผู้ใช้
"""

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

    # ดึงข้อมูล SQL ระหว่าง "```sql" และ "```"
    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()

    # กลับไปใช้คีย์เวิร์ด 'select'
    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()
    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 executing SQL: {e}")
        return [], []
    finally:
        cursor.close()
        conn.close()

def main():
    user_query = "แสดงยอดรวมของจำนวนเงินตามรหัสการชำระเงินแต่ละรหัสที่มากกว่า 10"
    print("กำลังสร้างคิวรี SQL...")
    sql_query = generate_sql_query(user_query)
    print("สร้าง SQL แล้ว:")
    print(sql_query)

    print("\nกำลังดำเนินการคิวรี SQL...")
    columns, rows = execute_sql_query(sql_query)

    if columns and rows:
        print("\nผลลัพธ์คิวรี:")
        print(tabulate(rows, headers=columns, tablefmt="psql"))
    else:
        print("ไม่มีผลลัพธ์กลับมา")

if __name__ == "__main__":
    main()

3.2 วิธีการใช้งาน

  • generate_sql_query(): ใช้ Qwen-Max เพื่อแปลงภาษาธรรมชาติเป็น SQL
  • execute_sql_query(): เชื่อมต่อกับ PostgreSQL และรัน SQL ที่สร้างขึ้น
  • main(): เรียบเรียงโฟลว์

5

ผลลัพธ์ควรจะคล้ายกับรูปด้านบน นอกจากนี้ โค้ดนี้ยังสามารถพัฒนาและแก้ไขเพิ่มเติมเพื่อสร้างแดชบอร์ดได้ และจะรวมเข้ากับ ChatBI ไม่ก้าวหน้าเท่ากับChatBI ของ QuickBI แต่เป็นการเริ่มต้นที่ดี

3.3 คำแนะนำในการแก้ไขจุดบกพร่อง

  • ทดสอบเอาต์พุต SQL โดยตรงใน psql หรือ pgAdmin ก่อนที่จะรันใน Python
  • ใช้ print(repr(sql_query)) เพื่อแก้ไขข้อบกพร่องของอักขระที่ซ่อนอยู่

ทำไมโซลูชันนี้จึงช่วยประหยัดค่าใช้จ่าย

  1. ลดการใช้แรงงาน: ไม่จำเป็นต้องให้นักพัฒนาหรือนักวิเคราะห์เขียนคิวรี SQL
  2. ต้นทุน API ต่ำ: Qwen-MAX น่าสนใจกว่าเมื่อเทียบกับ LLM ชนิดอื่นในแง่ของความเร็วและให้ความแม่นยำที่ใกล้เคียงกันในราคาที่ต่ำกว่า
  3. โครงสร้างพื้นฐานการปรับขนาดอัตโนมัติ: บริการที่ได้รับการจัดการของ Alibaba Cloud จะจัดการกับการปรับขนาด และลดค่าใช้จ่ายใน DevOps

ข้อสรุป: เป็นได้มากกว่า Text-to-SQL

แชทบอทนี้เป็นเพียงจุดเริ่มต้น ด้วยซีรีส์ Qwen ของ Alibaba Cloud คุณสามารถขยายเป็น:

  • ChatBI: การสร้างแดชบอร์ดการสนทนา
  • ระบบเอเจนต์: การสร้างระบบอัตโนมัติให้กับเวิร์กโฟลว์ที่ซับซ้อนด้วยการเรียกใช้ฟังก์ชัน
  • AI หลากหลายรูปแบบ: การเพิ่มการวิเคราะห์ภาพ/วิดีโอด้วย Qwen-VL

พร้อมที่จะลดค่าใช้จ่ายและเพิ่มประสิทธิภาพการทำงานแล้วหรือยัง เริ่มต้นด้วยแชทบอท text-to-SQL นี้ และปลดล็อกศักยภาพของระบบอัตโนมัติที่ขับเคลื่อนด้วย AI อย่างเต็มรูปแบบ

ขั้นตอนถัดไป

  • ลองใช้โค้ดในสภาพแวดล้อม Alibaba Cloud ของคุณ
  • สำรวจฟีเจอร์ขั้นสูงของ Qwen
  • แบ่งปันกรณีการใช้งานของคุณในความคิดเห็น!


บทความนี้แปลจากภาษาอังกฤษ ดูบทความต้นฉบับได้ที่นี่

0 0 0
Share on

Regional Content Hub

119 posts | 4 followers

You may also like

Comments