AI Agents · บทเรียน

ผู้ช่วย SQL สำหรับ DB ของคุณ

มอบโครงร่างให้โมเดล ให้โมเดลเขียน SQL เรียกใช้กับ DB ในสภาพแวดล้อมแยก และอธิบายผลลัพธ์

บทเรียน 4 จาก 416 ขั้นตอน

ผู้ช่วย SQL สำหรับ DB ของคุณ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

เป้าหมายโครงการ

สร้างเอเจนต์ที่เปลี่ยนคำถามภาษาธรรมชาติเป็น SQL รันกับฐานข้อมูลแบบแซนด์บ็อกซ์ และอธิบายผลลัพธ์

เอเจนต์แบบ “พูดคุยกับฐานข้อมูลของฉัน” ซึ่งเป็นงานพื้นฐานที่ใช้บ่อย

สถาปัตยกรรม

  1. ผู้ใช้: “เดือนนี้มีผู้ใช้ที่ใช้งานอยู่กี่คน”
  2. เอเจนต์เรียก list_tables และ describe_table เพื่อเรียนรู้สคีมา
  3. เอเจนต์เรียก run_sql พร้อมคำค้นที่สร้างขึ้น
  4. เอเจนต์อธิบายผลลัพธ์ด้วยภาษาธรรมชาติ

Step 1: Schema Tools

import psycopg

conn = psycopg.connect(DATABASE_URL)

def list_tables():
    with conn.cursor() as cur:
        cur.execute("SELECT table_name FROM information_schema.tables WHERE table_schema='public'")
        return [r[0] for r in cur.fetchall()]

def describe_table(name):
    with conn.cursor() as cur:
        cur.execute('''
            SELECT column_name, data_type FROM information_schema.columns
            WHERE table_name = %s
        ''', (name,))
        return cur.fetchall()

ขั้นตอนที่ 2: เครื่องมือ run_sql ที่ SAFE

คุณต้องจำกัดสิ่งที่เอเจนต์ทำได้ — อ่านอย่างเดียว หมดเวลาของคำค้น และจำกัดจำนวนแถว:

import re

def run_sql(query: str, limit: int = 100):
    q = query.strip().rstrip(';').lower()
    if not q.startswith('select'):
        return {'error': 'Only SELECT statements are allowed.'}
    if any(bad in q for bad in [' drop ', ' delete ', ' update ', ' insert ', ' alter ', ' truncate ']):
        return {'error': 'Statement contains a disallowed keyword.'}
    with conn.cursor() as cur:
        cur.execute(f'SET statement_timeout = 5000')   # 5 seconds
        cur.execute(f'SELECT * FROM ({query}) sub LIMIT {limit}')
        cols = [c.name for c in cur.description]
        rows = cur.fetchall()
        return {'columns': cols, 'rows': rows}

Tool Definitions

tools = [
    {'type': 'function', 'function': {'name': 'list_tables', 'description': 'List tables in the database', 'parameters': {'type': 'object', 'properties': {}}}},
    {'type': 'function', 'function': {'name': 'describe_table', 'description': 'Get columns of a table', 'parameters': {'type': 'object', 'properties': {'name': {'type': 'string'}}, 'required': ['name']}}},
    {'type': 'function', 'function': {'name': 'run_sql', 'description': 'Execute a SELECT query (read-only, max 100 rows, 5s timeout)', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}}}
]
import json
print(json.dumps(tools, indent=2))

System Prompt

system = '''
You are a SQL analyst assistant for a Postgres database.
First use list_tables and describe_table to learn the schema.
Then write a single SELECT query to answer the user.
Never modify data.
After receiving results, explain them in plain language.
'''
print(system.strip())

ส่งสคีมาในพรอมต์ระบบ

เพื่อให้มีเวลาแฝงต่ำลง ให้ดึงสคีมาครั้งเดียวเมื่อเริ่มต้นระบบ แล้วใส่ไว้ในพรอมต์ระบบ — ช่วยลดการเดินทางไปกลับเพื่อเรียกเครื่องมือ:

schema = ''
for t in list_tables():
    cols = describe_table(t)
    schema += f'{t}: {cols}\n'
system = system + f'\nSchema:\n{schema}'

ผู้ใช้ฐานข้อมูลแบบอ่านอย่างเดียว

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

การปกปิด PII

คอลัมน์บางรายการ (email, phone) ไม่ควรรั่วไหลออกไปโดยเด็ดขาด ให้ปกปิดคอลัมน์เหล่านี้ในผลลัพธ์ก่อนส่งคืน:

PII_COLS = {'email', 'phone'}
for row in rows:
    for i, col in enumerate(cols):
        if col in PII_COLS:
            row[i] = '[REDACTED]'

การประเมินค่าใช้จ่ายของคำค้น

ใช้ EXPLAIN เพื่อประเมินค่าใช้จ่ายของคำค้น ปฏิเสธคำค้นที่มีค่าใช้จ่ายสูงกว่าเกณฑ์ (ป้องกันการสแกนทั้งตารางโดยไม่ตั้งใจในตารางขนาดใหญ่)

ตัวอย่างการสนทนา

ผู้ใช้: “ลูกค้า 5 อันดับแรกตามยอดใช้จ่ายของเดือนที่แล้ว”

เอเจนต์:

  1. list_tables -> [users, orders, ...]
  2. describe_table(orders) -> [id, user_id, total, created_at]
  3. run_sql(“SELECT user_id, SUM(total) ...”)
  4. ส่งคืน: “Alice ($1240), Bob ($910), ...”

แผนภูมิผลลัพธ์

เพื่อประสบการณ์ผู้ใช้ที่ดียิ่งขึ้น ให้เพิ่มเครื่องมือ render_chart ซึ่งรับคอลัมน์และแถว แล้วส่งคืน URL ของภาพแผนภูมิ เอเจนต์สามารถเรียกใช้หลังจากค้นข้อมูลได้

ล้มเหลวอย่างเหมาะสม

ข้อผิดพลาดของ SQL เกิดขึ้นบ่อย ให้ส่งข้อความข้อผิดพลาดจาก Postgres กลับไปแบบตรงตัว — โมเดลเก่งมากในการแก้ SQL ที่ผิดของตนเองเมื่อเห็นข้อผิดพลาด

ตรวจสอบทุกคำค้น

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

เหตุใดจึงจำกัดไว้ที่ SELECT

เหตุใดจึงกำหนดตายตัวให้เอเจนต์เรียกใช้ได้เฉพาะคำสั่ง SELECT

สรุป

เอเจนต์ SQL มีประโยชน์ได้ทันที ควรสร้างอย่างรอบคอบ — ผู้ใช้แบบอ่านอย่างเดียว หมดเวลาของคำสั่ง จำกัดจำนวนแถว รายการอนุญาตประเภทคำค้น และบันทึกการตรวจสอบ

เริ่มต้นได้ฟรี

เรียนรู้ AI Agents ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
60
บทเรียน
239

คำถามที่พบบ่อย

บทเรียน “ผู้ช่วย SQL สำหรับ DB ของคุณ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ผู้ช่วย SQL สำหรับ DB ของคุณ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ผู้ช่วย SQL สำหรับ DB ของคุณ”

มอบโครงร่างให้โมเดล ให้โมเดลเขียน SQL เรียกใช้กับ DB ในสภาพแวดล้อมแยก และอธิบายผลลัพธ์ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ผู้ช่วย SQL สำหรับ DB ของคุณ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. บอตถามตอบบนเอกสารของคุณ
  2. เอเจนต์อธิบายโค้ด
  3. เอเจนต์วิจัยผ่านเว็บ
  4. ผู้ช่วย SQL สำหรับ DB ของคุณ
← กลับไปที่ AI Agents